diff options
author | Tom Grennan <tgrennan@vyatta.com> | 2008-01-23 16:06:00 -0800 |
---|---|---|
committer | Tom Grennan <tgrennan@vyatta.com> | 2008-01-23 16:06:00 -0800 |
commit | 411ea581185a36888b1f4dd2b027541b4e029443 (patch) | |
tree | 02088afecb3d924a91c2e2c89777806604f8ac27 /scripts | |
parent | 909f09598d60863634a36972823d19d5ec5a6d1e (diff) | |
download | vyatta-cfg-quagga-411ea581185a36888b1f4dd2b027541b4e029443.tar.gz vyatta-cfg-quagga-411ea581185a36888b1f4dd2b027541b4e029443.zip |
fix bug 2658
udev appears to be threaded where sub-scripts may be context switch;
so, defer config file interface updates to rl-system.init
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/rl-system.init | 33 | ||||
-rwxr-xr-x | scripts/vyatta_net_name | 29 |
2 files changed, 47 insertions, 15 deletions
diff --git a/scripts/rl-system.init b/scripts/rl-system.init index d73dae74..cbdadd0f 100755 --- a/scripts/rl-system.init +++ b/scripts/rl-system.init @@ -22,6 +22,7 @@ # # **** End License **** +progname=${0##*/} ACTION=$1 source /etc/default/vyatta @@ -30,6 +31,7 @@ source /etc/default/vyatta : ${vyatta_bindir:=${vyatta_prefix}/bin} : ${vyatta_sbindir:=${vyatta_prefix}/sbin} : ${vyatta_sysconfdir:=${vyatta_prefix}/etc} +: ${hostname:=`hostname -s`} [[ $PATH == *${vyatta_bindir}* ]] || PATH+=:${vyatta_bindir} [[ $PATH == *${vyatta_sbindir}* ]] || PATH+=:${vyatta_sbindir} @@ -41,6 +43,20 @@ export PATH ## BOOTFILE is provided by ofr.init : ${BOOTFILE:=$prefix/etc/config/config.boot} +if [ -z "$LOGFILE" ] ; then + if touch /var/log/messages &> /dev/null ; then + LOGFILE=/var/log/messages + else + LOGFILE=/dev/null + fi +fi + +syslog () +{ + + date -u "+%b %d %H:%M:%S $hostname $progname: $*" >> $LOGFILE +} + shopt -s extglob nullglob search_config_if_wan () { @@ -118,7 +134,24 @@ clear_or_override_config_files () rm -f /etc/ssh/ssh_host_key } +udev_rescan () +{ + rm -f /tmp/vyatta_net_name_* + udevtrigger --subsystem-match=net && udevsettle + for ff in /tmp/vyatta_net_name_* ; do + f=${ff##*/} + cmd_name_hwid=${f/vyatta_net_name_/} + cmd=${cmd_name_hwid%%_*} + name_hwid=${cmd_name_hwid#*_} + name=${name_hwid%_*} + hwid=${name_hwid#*_} + syslog $cmd $name $hwid + $vyatta_sbindir/${cmd}_bootfile_eth_hwid $BOOTFILE $name $hwid + done +} + start () { + udev_rescan clear_or_override_config_files || \ log_failure_msg "can\'t reset config files" set_reboot_on_panic || \ diff --git a/scripts/vyatta_net_name b/scripts/vyatta_net_name index e048800e..9820d00f 100755 --- a/scripts/vyatta_net_name +++ b/scripts/vyatta_net_name @@ -21,6 +21,7 @@ # # **** End License **** +progname=${0##*/} debug= match= attr_address=0:0:0:0:0:0 @@ -99,6 +100,15 @@ declare -a cfg_net_hwid=( $( sed -ne ' } }' $BOOTFILE )) +finish () +{ + local cmd=$1 name=$2 address=$3 + + echo $name + touch /tmp/${progname}_${cmd}_${name}_${address} &> /dev/null + exit $? +} + for name_hwid in ${cfg_net_hwid[@]} ; do name=${name_hwid%=*} hwid=${name_hwid#*=} @@ -107,10 +117,7 @@ for name_hwid in ${cfg_net_hwid[@]} ; do last_ethn=$ethn if [ "$hwid" == "$attr_address" ] ; then # we mod the config file interface sub-clock in case it is missing - [[ "$BOOTFILE" != *test_* ]] && \ - ${vyatta_sbindir}/mod_bootfile_eth_hwid $BOOTFILE $name $attr_address - echo $name - exit 0 + finish mod $name $attr_address fi [ "$name" == "$kname" ] && \ match=$name_hwid @@ -123,13 +130,11 @@ done if [ -z "$match" ] ; then # the kernel interface name isnot in config # so, we might as well use it - name=$kname - cmd=add + finish add $kname $attr_address elif [ -z "${match#*=}" ] ; then # the config has this interface but the sub-block is missing the hwid # so again, we might as well use the kernel name - name=$kname - cmd=mod + finish mod $kname $attr_address else # The device mac address is not in the config but the config # has another hwid associated with the device name. This @@ -137,15 +142,9 @@ else # detected earlier than the device configured with this name. # Since this is non-deterministic, we make a new name. (( ethn = last_ethn + 1 )) - name=eth$ethn - cmd=add + finish add eth$ethn $attr_address fi -[[ "$BOOTFILE" != *test_* ]] && \ - ${vyatta_sbindir}/${cmd}_bootfile_eth_hwid $BOOTFILE $name $attr_address - -echo $name - # Local Variables: # mode: shell-script # sh-indentation: 4 |