Date: Mon, 3 May 2010 15:27:18 -0400 From: John Baldwin <jhb@freebsd.org> To: net@freebsd.org Cc: Brooks Davis <brooks@freebsd.org> Subject: Workaround automatic re-loading of network drivers Message-ID: <201005031527.18468.jhb@freebsd.org>
next in thread | raw e-mail | index | archive | help
While testing some changes with vlans and the new vlan_<if> syntax in rc.conf I've noticed the following behavior: ifconfig foo0.100 destroy Will actually try to kldload the 'foo' driver. This can prove very non- intuitive. In general I think we shouldn't try to kldload anything when destroying an interface period. What I've done locally is to pass '-n' to ifconfig when destroying an interface. We should possibly fix some other bugs however. For example, ifmaybeload() in ifconfig should probably stop at the first non-digit it finds (e.g. ".") rather than trimming from the first digit on. Also, perhaps 'ifconfig <foo> destroy' should imply -n without requiring it to be explicit. I also moved the ifconfig destroy of wlan and vlan devices up before running ifn_stop to prevent running 'ifconfig <foo> down' which would also reload the driver due to the first bug in ifconfig. Index: network.subr =================================================================== --- network.subr (revision 207329) +++ network.subr (working copy) @@ -915,7 +915,7 @@ _list= for ifn in ${cloned_interfaces}; do - ifconfig ${ifn} destroy + ifconfig -n ${ifn} destroy if [ $? -eq 0 ]; then _list="${_list}${_prefix}${ifn}" [ -z "$_prefix" ] && _prefix=' ' @@ -1000,10 +1000,10 @@ if ! ifexists $child; then continue fi + ifconfig -n $child destroy && cfg=0 if autoif $child; then ifn_stop $child fi - ifconfig $child destroy && cfg=0 done child_vlans=`get_if_var $ifn vlans_IF` @@ -1014,10 +1014,10 @@ if ! ifexists $child; then continue fi + ifconfig -n $child destroy && cfg=0 if autoif $child; then ifn_stop $child fi - ifconfig $child destroy && cfg=0 done return ${cfg} -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005031527.18468.jhb>