[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Still baffled by choice of ethx



On Wed, Sep 26, 2007 at 01:12:24AM +0100, Timothy Murphy wrote:
> When I re-booted a second time,
> eth0 and eth1 came up as desired -
> eth0 is the link to the internet,
> while eth1 links to a WRT54GL with ethernet and WiFi connections.
> But eth2 did not come up.
> It should interface to a second WiFi device.
> Instead this device has chosen the interface __tmp875397547 .
> 
> I guess the reason the device did not choose eth2
> was that this had somehow been reserved by its previous connection
> to the WRT54GL.
 
The kernel device enumeration and udev logic has made this more
problematic.

To avoid such name collisions, we name our devices lanN; we use the
HWADDR configuration parameter to specify the MAC address of the device
that should be bound to a particular device name, e.g.,

/etc/sysconfig/network-scripts/ifcfg-lan0:
DEVICE=lan0
HWADDR=aa:bb:cc:dd:ee
...

Unfortunately, "eth" is hard-coded into the VLAN support, and since we use VLANs,
we had to add a hackish workaround (which also includes the brN bridge devices):

--- initscripts-8.45.7/sysconfig/network-scripts/ifup.vlans-on-renamed-devices	2006-09-11 13:15:01.000000000 -0400
+++ initscripts-8.45.7/sysconfig/network-scripts/ifup	2006-12-12 10:44:29.000000000 -0500
@@ -62,7 +62,7 @@ fi
 # Ethernet 802.1Q VLAN support
 if [ -x /sbin/vconfig -a "${VLAN}" = "yes" -a "$ISALIAS" = "no" ]; then
     VID=""
-    if [[ "${DEVICE}" =~ '^(eth|bond)[0-9]+\.[0-9]{1,4}$' ]]; then
+    if [[ "${DEVICE}" =~ '^(eth|lan|br|bond)[0-9]+\.[0-9]{1,4}$' ]]; then
 	VID=$(echo "${DEVICE}" | LC_ALL=C sed 's/^[a-z0-9]*\.0*//')
 	PHYSDEV=${DEVICE%.*}
     fi
--- initscripts-8.45.7/sysconfig/network-scripts/ifdown-eth.vlans-on-renamed-devices	2006-09-11 13:15:01.000000000 -0400
+++ initscripts-8.45.7/sysconfig/network-scripts/ifdown-eth	2006-12-12 10:44:29.000000000 -0500
@@ -125,7 +125,7 @@ fi
 
 if [ -n "$VLAN" -a -x /sbin/vconfig ]; then
     # 802.1q VLAN
-    if echo ${DEVICE} | LANG=C egrep -v '(:)' | LANG=C egrep -q '(eth|bond)[0-9][0-9]*\.[0-9][0-9]?[0-9]?[0-9]?' \
+    if echo ${DEVICE} | LANG=C egrep -v '(:)' | LANG=C egrep -q '(eth|lan|br|bond)[0-9][0-9]*\.[0-9][0-9]?[0-9]?[0-9]?' \
 	|| echo ${DEVICE} | LANG=C egrep -q 'vlan[0-9][0-9]?[0-9]?[0-9]?' ; then
 	[ -f /proc/net/vlan/${DEVICE} ] && {
 	    /sbin/vconfig rem ${DEVICE}


Regards,

	Bill Rugolsky


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]