From dcfa2acce30c0574bcec761b72cad4141da78e1b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 2 Aug 2007 21:19:41 +0200 Subject: [PATCH] rules_generator: skip random MAC addresses --- .../75-persistent-net-generator.rules | 27 +++++++++++++------ .../rule_generator/rule_generator.functions | 2 +- extras/rule_generator/write_net_rules | 4 +-- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/extras/rule_generator/75-persistent-net-generator.rules b/extras/rule_generator/75-persistent-net-generator.rules index 90d7f82d63..cfb13f182b 100644 --- a/extras/rule_generator/75-persistent-net-generator.rules +++ b/extras/rule_generator/75-persistent-net-generator.rules @@ -1,22 +1,33 @@ +# do not edit this file, it will be overwritten on update + # these rules generate rules for persistent network device naming -ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*|ath*|wlan*|ra*|sta*|ctc*|lcs*|hsi*" \ - NAME!="?*", DRIVERS=="?*", GOTO="persistent_net_generator_do" +ACTION!="add", GOTO="persistent_net_generator_end" +SUBSYSTEM!="net", GOTO="persistent_net_generator_end" -GOTO="persistent_net_generator_end" -LABEL="persistent_net_generator_do" +# device name whitelist +KERNEL!="eth*|ath*|wlan*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end" -# build device description string to add a comment the generated rule +# ignore the interface if a name has already been set +NAME=="?*", GOTO="persistent_net_generator_end" + +# ignore Xen virtual interfaces +SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end" + +# build device description string to add a comment to the generated rule SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($driver)" SUBSYSTEMS=="usb", ENV{COMMENT}="USB device 0x$attr{idVendor}:0x$attr{idProduct} ($driver)" SUBSYSTEMS=="pcmcia", ENV{COMMENT}="PCMCIA device $attr{card_id}:$attr{manf_id} ($driver)" SUBSYSTEMS=="ccwgroup", ENV{COMMENT}="S/390 $driver device at $id", ENV{NETDEV}="$id", ENV{NETDRV}="$driver" SUBSYSTEMS=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})" -SUBSYSTEMS=="xen", ENV{COMMENT}="Xen virtual device" ENV{COMMENT}=="", ENV{COMMENT}="$env{SUBSYSTEM} device ($driver)" -ENV{NETDEV}=="?*", IMPORT{program}="write_net_rules --driver $env{NETDRV} --id $env{NETDEV}" -ENV{NETDEV}!="?*", IMPORT{program}="write_net_rules $attr{address}" +DRIVERS!="?*", ENV{NETDEV}=="?*", IMPORT{program}="write_net_rules --driver $env{NETDRV} --id $env{NETDEV}" + +# skip "locally administered" MAC addresses +ATTR{address}=="?[2367abef]:*", GOTO="persistent_net_generator_end" + +DRIVERS!="?*", ENV{NETDEV}!="?*", IMPORT{program}="write_net_rules $attr{address}" ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}" LABEL="persistent_net_generator_end" diff --git a/extras/rule_generator/rule_generator.functions b/extras/rule_generator/rule_generator.functions index 712ed269e0..495bb7b047 100644 --- a/extras/rule_generator/rule_generator.functions +++ b/extras/rule_generator/rule_generator.functions @@ -93,5 +93,5 @@ find_all_rules() { local match="$3" local search='.*[[:space:],]'"$key"'"\('"$linkre"'\)"[[:space:]]*\(,.*\|\\\|\)$' - echo $(sed -n -e "${match}s/${search}/\1/p" $RO_RULES_FILE $RULES_FILE) + echo $(sed -n -e "${match}s/${search}/\1/p" $RO_RULES_FILE $RULES_FILE 2>/dev/null) } diff --git a/extras/rule_generator/write_net_rules b/extras/rule_generator/write_net_rules index b873b5bf8c..62acb8820c 100644 --- a/extras/rule_generator/write_net_rules +++ b/extras/rule_generator/write_net_rules @@ -115,12 +115,12 @@ fi # the DRIVERS key is needed to not match bridges and VLAN sub-interfaces if [ "$MAC_ADDR" ] ; then - match="DRIVERS==\"?*\", ATTRS{address}==\"$MAC_ADDR\"" + match="DRIVERS==\"?*\", ATTR{address}==\"$MAC_ADDR\"" else match="DRIVERS==\"$DRIVER\", KERNELS==\"$ID\"" fi if [ $basename = "ath" -o $basename = "wlan" ]; then - match="$match, ATTRS{type}==\"1\"" # do not match the wifi* interfaces + match="$match, ATTR{type}==\"1\"" # do not match the wifi* interfaces fi write_rule "$match" "$INTERFACE" "$COMMENT"