X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=extras%2Frule_generator%2Fwrite_net_rules;h=437979241fbf0b920aeb809af12a7508f331b953;hb=ea69e8217b4ddb9b054b2d3bf18260e71102646f;hp=765e56f6d3ef5b9fab2dcc375dd13feb69016453;hpb=9138bcba99ebf0498a43b106100cb0ffd3dc222e;p=elogind.git diff --git a/extras/rule_generator/write_net_rules b/extras/rule_generator/write_net_rules index 765e56f6d..437979241 100644 --- a/extras/rule_generator/write_net_rules +++ b/extras/rule_generator/write_net_rules @@ -1,12 +1,5 @@ #!/bin/sh -e -# -# Copyright (C) 2006 Marco d'Itri -# Copyright (C) 2007 Kay Sievers -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation version 2 of the License. -# + # This script is run to create persistent network device naming rules # based on properties of the device. # If the interface needs to be renamed, INTERFACE_NEW= will be printed @@ -15,12 +8,36 @@ # variables used to communicate: # MATCHADDR MAC address used for the match # MATCHID bus_id used for the match +# MATCHDEVID dev_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 +# Copyright (C) 2006 Marco d'Itri +# Copyright (C) 2007 Kay Sievers +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# debug, if UDEV_LOG= +if [ -n "$UDEV_LOG" ]; then + if [ "$UDEV_LOG" -ge 7 ]; then + set -x + fi +fi + RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules' . /lib/udev/rule_generator.functions @@ -47,9 +64,10 @@ write_rule() { if [ "$PRINT_HEADER" ]; then PRINT_HEADER= echo "# This file was automatically generated by the $0" - echo "# program run by the persistent-net-generator.rules rules file." + echo "# program, run by the persistent-net-generator.rules rules file." echo "#" - echo "# You can modify it, as long as you keep each rule on a single line." + echo "# You can modify it, as long as you keep each rule on a single" + echo "# line, and change only the value of the NAME= key." fi echo "" @@ -78,6 +96,10 @@ if [ "$MATCHDRV" ]; then match="$match, DRIVERS==\"$MATCHDRV\"" fi +if [ "$MATCHDEVID" ]; then + match="$match, ATTR{dev_id}==\"$MATCHDEVID\"" +fi + if [ "$MATCHID" ]; then match="$match, KERNELS==\"$MATCHID\"" fi @@ -92,6 +114,9 @@ if [ -z "$match" ]; then exit 1 fi +basename=${INTERFACE%%[0-9]*} +match="$match, KERNEL==\"$basename*\"" + if [ "$INTERFACE_NAME" ]; then # external tools may request a custom name COMMENT="$COMMENT (custom name provided by external tool)" @@ -101,10 +126,10 @@ if [ "$INTERFACE_NAME" ]; then fi else # if a rule using the current name already exists, find a new name - basename=${INTERFACE%%[0-9]*} - match="$match, KERNEL==\"$basename*\"" if interface_name_taken; then INTERFACE="$basename$(find_next_available "$basename[0-9]*")" + # prevent INTERFACE from being "eth" instead of "eth0" + [ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0 echo "INTERFACE_NEW=$INTERFACE" fi fi