mirror of
https://git.linuxfromscratch.org/lfs.git
synced 2025-01-18 04:57:38 +00:00
872a378f5e
These changes are all in comments that do not affect the books in any way.
130 lines
3.6 KiB
Bash
130 lines
3.6 KiB
Bash
#! /bin/bash
|
|
|
|
# This script generates rules for persistent network device naming
|
|
# Data from udev-182 75-persistent-net-generator.rules
|
|
# Updated for udev-197 (DEVICES=en*)
|
|
|
|
RULES=/etc/udev/rules.d/70-persistent-net.rules
|
|
DEVICES=$(eval echo /sys/class/net/{en*,eth*,ath*,wlan*[0-9],msh*,ra*,sta*,ctc*,lcs*,hsi*})
|
|
|
|
function usage
|
|
{
|
|
echo $msg
|
|
echo "init-net-rules.sh is an LFS-specific script to initialize"
|
|
echo "$RULES"
|
|
exit 1
|
|
}
|
|
|
|
declare -A VENDORS_IGNORED
|
|
VENDORS_IGNORED['52:54:00:']="kvm"
|
|
VENDORS_IGNORED['00:0c:29:']="vmware"
|
|
VENDORS_IGNORED['00:50:56:']="vmware"
|
|
VENDORS_IGNORED['00:15:5d:']="hyper-v"
|
|
VENDORS_IGNORED['00:00:00:']="invalid"
|
|
|
|
declare -A VENDORS
|
|
VENDORS['02:07:01:']="Interlan, DEC, etc"
|
|
VENDORS['02:60:60:']="3com"
|
|
VENDORS['02:60:8c:']="3Com IBM PC; Imagen. etc"
|
|
VENDORS['02:a0:c9:']="intel"
|
|
VENDORS['02:aa:3c:']="Olivetti"
|
|
VENDORS['02:cf:1f:']="Masscomp, Silicon Graphics, etc"
|
|
VENDORS['02:e0:3b:']="Gigabit"
|
|
VENDORS['02:e6:d3:']="BTI"
|
|
VENDORS['52:54:00:']="Realtek"
|
|
VENDORS['52:54:4c:']="Novell"
|
|
VENDORS['52:54:ab:']="Realtek"
|
|
VENDORS['e2:0c:0f:']="Kingston"
|
|
VENDORS['00:16:3e:']="Xensource"
|
|
|
|
function ignore_if
|
|
{
|
|
if [[ "${VENDORS_IGNORED[$VENDOR]}" != "" ]]; then return 0; fi
|
|
if [[ "${VENDORS[$VENDOR]}" != "" ]]; then return 1; fi
|
|
|
|
byte2=$(echo $VENDOR | cut -c2)
|
|
if echo $byte2 | grep -q "[2367abef]"; then return 0; fi
|
|
|
|
return 1 # Default is to not ignore
|
|
}
|
|
|
|
function comment
|
|
{
|
|
# Not implemented
|
|
# SUBSYSTEMS=="pci"
|
|
# export COMMENT="PCI device $attr{vendor}:$attr{device} ($driver)"
|
|
|
|
# SUBSYSTEMS=="usb", ATTRS{idVendor}=="?*"
|
|
# export COMMENT="USB device 0x$attr{idVendor}:0x$attr{idProduct} ($driver)"
|
|
|
|
# SUBSYSTEMS=="pcmcia",
|
|
# export COMMENT="PCMCIA device $attr{card_id}:$attr{manf_id} ($driver)"
|
|
|
|
# SUBSYSTEMS=="ieee1394",
|
|
# export COMMENT="Firewire device $attr{host_id})"
|
|
|
|
# ibmveth likes to use "locally administered" MAC addresses
|
|
# DRIVERS=="ibmveth",
|
|
# export COMMENT="ibmveth ($id)"
|
|
|
|
# S/390 uses id matches only, do not use MAC address match
|
|
# SUBSYSTEMS=="ccwgroup",
|
|
# export COMMENT="S/390 $driver device at $id",
|
|
# export MATCHID="$id"
|
|
# export MATCHDRV="$driver"
|
|
# export MATCHADDR=""
|
|
|
|
# Default
|
|
driver=$(basename $(readlink -f $NIC/device/driver/module))
|
|
export COMMENT="net device ${driver}"
|
|
}
|
|
|
|
if ! mountpoint -q /sys; then
|
|
msg="/sys must be mounted"
|
|
usage
|
|
fi
|
|
|
|
if ! mountpoint -q /proc; then
|
|
msg="/proc must be mounted"
|
|
usage
|
|
fi
|
|
|
|
if [ -e $RULES ]; then
|
|
msg="The rules file already exists"
|
|
usage
|
|
fi
|
|
|
|
# Ignore Xen virtual interfaces
|
|
if [ -e /proc/xen ]; then
|
|
msg="The rules file should not be created in the Xen environment"
|
|
usage
|
|
fi
|
|
|
|
# Variables used to communicate with write_net_rules:
|
|
# INTERFACE simple interface name
|
|
# MATCHADDR MAC address used for the match
|
|
# MATCHID bus_id used for the match
|
|
# MATCHDRV driver name used for the match
|
|
# MATCHIFTYPE interface type match
|
|
# COMMENT comment to add to the generated rule
|
|
# INTERFACE_NAME requested name supplied by external tool
|
|
# INTERFACE_NEW new interface name returned by rule writer
|
|
|
|
for NIC in $DEVICES; do
|
|
IF=${NIC##*/}
|
|
if echo $NIC | grep -q '*' ; then continue; fi
|
|
|
|
export INTERFACE=${NIC##*/} # Simple interface name
|
|
export MATCHADDR="$(cat $NIC/address)" # Read MAC address
|
|
|
|
VENDOR=$(echo $MATCHADDR | cut -c-9)
|
|
if ignore_if; then continue; fi
|
|
|
|
export MATCHDEVID="$(cat $NIC/dev_id)"
|
|
export MATCHIFTYPE="$(cat $NIC/type)" # Read interface type
|
|
comment
|
|
|
|
/lib/udev/write_net_rules
|
|
done
|
|
|