Still baffled by choice of ethx
Bill Rugolsky Jr.
brugolsky at telemetry-investments.com
Wed Sep 26 02:58:21 UTC 2007
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
More information about the users
mailing list