1#!/bin/bash 2# Copyright 2024 Google LLC 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16[ -n "${gbmc_net_lib_init-}" ] && return 17 18gbmc_net_networkd_reload() { 19 local retry=0 20 while true; do 21 (( retry = retry + 1 )) 22 (( retry <= 3 )) || return 1 23 # sleep 3s if not first time 24 (( retry == 1 )) || sleep 3 25 if [ "$(systemctl is-active systemd-networkd)" != 'inactive' ]; then 26 echo "Reloading networkd + reconfiguring ($*) from $(caller 0), time $retry" >&2 27 networkctl reload || continue 28 local intf 29 for intf in "$@"; do 30 networkctl reconfigure "$intf" || continue 2 31 done 32 fi 33 return 0 34 done 35} 36 37gbmc_net_lib_init=1 38