diff options
author | Bob Gilligan <gilligan@vyatta.com> | 2011-01-20 22:23:49 -0800 |
---|---|---|
committer | Bob Gilligan <gilligan@vyatta.com> | 2011-01-20 22:26:32 -0800 |
commit | b1af934db367d589cf7c78b84e2181a1e72b2aaf (patch) | |
tree | 73db183f71fbccdfa956ddd4b47285ed5079bbcc /scripts | |
parent | 49e63ac2726c39f2890329cbe91feca11cbbf935 (diff) | |
download | vyatta-cfg-system-b1af934db367d589cf7c78b84e2181a1e72b2aaf.tar.gz vyatta-cfg-system-b1af934db367d589cf7c78b84e2181a1e72b2aaf.zip |
Add debug logging.
This restores logging that we had in the previous release, which has
proven useful in troubleshooting interface renaming problems.
(cherry picked from commit f90053272e601b3b87049a7f0a5d6c9f49e98940)
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/vyatta_net_name | 51 |
1 files changed, 45 insertions, 6 deletions
diff --git a/scripts/vyatta_net_name b/scripts/vyatta_net_name index 43bed36d..e4508c3d 100755 --- a/scripts/vyatta_net_name +++ b/scripts/vyatta_net_name @@ -26,6 +26,7 @@ my $UDEVDIR = "/dev/.udev"; my $VYATTAUDEV = $UDEVDIR . "/vyatta"; my $LOCKFILE = $UDEVDIR . "/.vyatta-lock"; my $VYATTACFG = "/opt/vyatta/config/active"; +my $LOGFILE = "/var/log/vyatta/vnn.log"; # Check if interface name is free to use sub is_available { @@ -78,13 +79,13 @@ sub leave_rescan_hint { # Use biosdevname program (ethernet only) # to try and find name based on PCI slot and DMI info sub biosdevname { - my $ifname = shift; + my ($ifname, $hwaddr) = @_; # biosdevname renames wlanX to ethX ?? if ($ifname =~ /^eth/) { my $biosname = `/sbin/biosdevname --policy all_ethN -i $ifname`; chomp $biosname; - + logit("biosdevname recommends $biosname for $ifname $hwaddr\n"); return $biosname if ($biosname ne ''); } return $ifname; # Fallback to existing name @@ -114,7 +115,10 @@ sub coldplug { # is name already in config file my $newname = $interfaces->{$hwaddr}; - return $newname if ($newname); + if ($newname) { + logit("name for $ifname $hwaddr in config file is $newname\n"); + return $newname; + } # add already assigned names if (opendir(my $dir, $VYATTAUDEV)) { @@ -129,9 +133,11 @@ sub coldplug { } } - $newname = biosdevname($ifname); + $newname = biosdevname($ifname, $hwaddr); unless (is_available($interfaces, $newname)) { + logit("but $newname is not available for $ifname $hwaddr\n"); $newname = find_available($interfaces, $newname); + logit("So we will use $newname instead for $ifname $hwaddr\n"); } leave_rescan_hint($newname, $hwaddr); @@ -161,11 +167,16 @@ sub hotplug { } my $newname = $interfaces->{$hwaddr}; - return $newname if ($newname); + if ($newname) { + logit("hotplug: name for $ifname $hwaddr in config file is $newname\n"); + return $newname + } - $newname = biosdevname($ifname); + $newname = biosdevname($ifname, $hwaddr); unless (is_available($interfaces, $newname)) { + logit("but $newname is not available for $ifname $hwaddr\n"); $newname = find_available($interfaces, $newname); + logit("So we will use $newname instead for $ifname $hwaddr\n"); } syslog(LOG_INFO, "new name for '%s' is '%s'", $ifname, $newname); @@ -188,6 +199,22 @@ sub unlock_file { $LOCKF = undef; } +my $LOGF; + +sub open_logfile { + open ($LOGF, '>>', $LOGFILE) + or die "Can't open log file $LOGFILE : $!"; +} + +sub close_logfile { + close($LOGF); +} + +sub logit { + my $now = localtime; + print $LOGF "$now: @_"; +} + # This script is called from udev with two arguments # it outputs the new name (if any) to stdout if ($#ARGV != 1) { @@ -199,12 +226,24 @@ my $ifname = $ARGV[0]; my $hwaddr = $ARGV[1]; lock_file; + +# Need to log to file instead of syslog because this can be called by +# udev running early in boot before syslog is started. +open_logfile; + +logit("Starting vyatta_net_name for $ifname $hwaddr\n"); + my $newname; if ( -d $VYATTACFG ) { $newname = hotplug($ifname, $hwaddr); } else { $newname = coldplug($ifname, $hwaddr); } + +logit("Returning $newname for $ifname $hwaddr\n"); + +close_logfile; + unlock_file; print "$newname\n" if ($newname); |