summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile.am5
-rw-r--r--configure.ac16
-rw-r--r--rule_generator/75-cd-aliases-generator.rules9
-rw-r--r--rule_generator/75-persistent-net-generator.rules101
-rw-r--r--rule_generator/Makefile.am15
-rw-r--r--rule_generator/rule_generator.functions120
-rw-r--r--rule_generator/write_cd_rules.in127
-rw-r--r--rule_generator/write_net_rules.in141
-rw-r--r--rules/Makefile.am6
-rw-r--r--src/udev/udev-event.c110
-rw-r--r--src/udev/udev-rules.c64
12 files changed, 1 insertions, 715 deletions
diff --git a/.gitignore b/.gitignore
index d64c40a1dc..8c35832a49 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,8 +48,6 @@ docs/libudev/libudev.prerequisites
docs/libudev/libudev.signals
docs/libudev/html/
docs/libudev/xml/
-rule_generator/write_cd_rules
-rule_generator/write_net_rules
src/accelerometer/accelerometer
src/ata_id/ata_id
diff --git a/Makefile.am b/Makefile.am
index 509447ac0c..46c376b5d9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,8 +12,3 @@ if ENABLE_MANPAGES
SUBDIRS += \
man
endif
-
-if ENABLE_RULE_GENERATOR
-SUBDIRS += \
- rule_generator
-endif
diff --git a/configure.ac b/configure.ac
index 146ef75a15..83e2363e46 100644
--- a/configure.ac
+++ b/configure.ac
@@ -335,19 +335,6 @@ AC_ARG_WITH([modprobe],
AC_SUBST([MODPROBE], ["${with_modprobe}"])
# ------------------------------------------------------------------------------
-# rule-generator - persistent network and optical device rule generator
-# ------------------------------------------------------------------------------
-AC_ARG_ENABLE([rule-generator],
- AS_HELP_STRING([--enable-rule-generator], [enable legacy persistent network, cdrom support]),
- [], [enable_rule_generator=no])
-
-if test "x${enable_rule_generator}" != xno; then
- AC_DEFINE([ENABLE_RULE_GENERATOR], [1], [Define if we are enabling rule generator])
-fi
-
-AM_CONDITIONAL([ENABLE_RULE_GENERATOR], [test "x$enable_rule_generator" = xyes])
-
-# ------------------------------------------------------------------------------
AC_CONFIG_FILES([Makefile
docs/Makefile
@@ -358,9 +345,6 @@ AC_CONFIG_FILES([Makefile
hwdb/Makefile
man/Makefile
rules/Makefile
- rule_generator/Makefile
- rule_generator/write_cd_rules
- rule_generator/write_net_rules
src/Makefile
src/accelerometer/Makefile
src/ata_id/Makefile
diff --git a/rule_generator/75-cd-aliases-generator.rules b/rule_generator/75-cd-aliases-generator.rules
deleted file mode 100644
index e6da0101d6..0000000000
--- a/rule_generator/75-cd-aliases-generator.rules
+++ /dev/null
@@ -1,9 +0,0 @@
-# these rules generate rules for the /dev/{cdrom,dvd,...} symlinks
-
-# the "path" of usb/ieee1394 devices changes frequently, use "id"
-ACTION=="add", SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*", \
- PROGRAM="write_cd_rules by-id", SYMLINK+="%c", GOTO="persistent_cd_end"
-
-ACTION=="add", SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*", PROGRAM="write_cd_rules", SYMLINK+="%c"
-
-LABEL="persistent_cd_end"
diff --git a/rule_generator/75-persistent-net-generator.rules b/rule_generator/75-persistent-net-generator.rules
deleted file mode 100644
index 539807c861..0000000000
--- a/rule_generator/75-persistent-net-generator.rules
+++ /dev/null
@@ -1,101 +0,0 @@
-# do not edit this file, it will be overwritten on update
-
-# these rules generate rules for persistent network device naming
-#
-# variables used to communicate:
-# 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
-
-ACTION!="add", GOTO="persistent_net_generator_end"
-SUBSYSTEM!="net", GOTO="persistent_net_generator_end"
-
-# ignore the interface if a name has already been set
-NAME=="?*", GOTO="persistent_net_generator_end"
-
-# device name whitelist
-KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", GOTO="persistent_net_generator_end"
-
-# ignore Xen virtual interfaces
-SUBSYSTEMS=="xen", GOTO="persistent_net_generator_end"
-
-# read MAC address
-ENV{MATCHADDR}="$attr{address}"
-
-# match interface type
-ENV{MATCHIFTYPE}="$attr{type}"
-
-# ignore KVM virtual interfaces
-ENV{MATCHADDR}=="52:54:00:*", GOTO="persistent_net_generator_end"
-# ignore VMWare virtual interfaces
-ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*", GOTO="persistent_net_generator_end"
-# ignore Hyper-V virtual interfaces
-ENV{MATCHADDR}=="00:15:5d:*", GOTO="persistent_net_generator_end"
-
-# These vendors are known to violate the local MAC address assignment scheme
-# Interlan, DEC (UNIBUS or QBUS), Apollo, Cisco, Racal-Datacom
-ENV{MATCHADDR}=="02:07:01:*", GOTO="globally_administered_whitelist"
-# 3Com
-ENV{MATCHADDR}=="02:60:60:*", GOTO="globally_administered_whitelist"
-# 3Com IBM PC; Imagen; Valid; Cisco; Apple
-ENV{MATCHADDR}=="02:60:8c:*", GOTO="globally_administered_whitelist"
-# Intel
-ENV{MATCHADDR}=="02:a0:c9:*", GOTO="globally_administered_whitelist"
-# Olivetti
-ENV{MATCHADDR}=="02:aa:3c:*", GOTO="globally_administered_whitelist"
-# CMC Masscomp; Silicon Graphics; Prime EXL
-ENV{MATCHADDR}=="02:cf:1f:*", GOTO="globally_administered_whitelist"
-# Prominet Corporation Gigabit Ethernet Switch
-ENV{MATCHADDR}=="02:e0:3b:*", GOTO="globally_administered_whitelist"
-# BTI (Bus-Tech, Inc.) IBM Mainframes
-ENV{MATCHADDR}=="02:e6:d3:*", GOTO="globally_administered_whitelist"
-# Realtek
-ENV{MATCHADDR}=="52:54:00:*", GOTO="globally_administered_whitelist"
-# Novell 2000
-ENV{MATCHADDR}=="52:54:4c:*", GOTO="globally_administered_whitelist"
-# Realtec
-ENV{MATCHADDR}=="52:54:ab:*", GOTO="globally_administered_whitelist"
-# Kingston Technologies
-ENV{MATCHADDR}=="e2:0c:0f:*", GOTO="globally_administered_whitelist"
-
-# match interface dev_id
-ATTR{dev_id}=="?*", ENV{MATCHDEVID}="$attr{dev_id}"
-
-# do not use "locally administered" MAC address
-ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
-
-# do not use empty address
-ENV{MATCHADDR}=="00:00:00:00:00:00", ENV{MATCHADDR}=""
-
-LABEL="globally_administered_whitelist"
-
-# build comment line for generated rule:
-SUBSYSTEMS=="pci", ENV{COMMENT}="PCI device $attr{vendor}:$attr{device} ($driver)"
-SUBSYSTEMS=="usb", ATTRS{idVendor}=="?*", 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=="ieee1394", ENV{COMMENT}="Firewire device $attr{host_id})"
-
-# ibmveth likes to use "locally administered" MAC addresses
-DRIVERS=="ibmveth", ENV{MATCHADDR}="$attr{address}", ENV{COMMENT}="ibmveth ($id)"
-
-# S/390 uses id matches only, do not use MAC address match
-SUBSYSTEMS=="ccwgroup", ENV{COMMENT}="S/390 $driver device at $id", ENV{MATCHID}="$id", ENV{MATCHDRV}="$driver", ENV{MATCHADDR}=""
-
-# see if we got enough data to create a rule
-ENV{MATCHADDR}=="", ENV{MATCHID}=="", ENV{INTERFACE_NAME}=="", GOTO="persistent_net_generator_end"
-
-# default comment
-ENV{COMMENT}=="", ENV{COMMENT}="net device ($attr{driver})"
-
-# write rule
-DRIVERS=="?*", IMPORT{program}="write_net_rules"
-
-# rename interface if needed
-ENV{INTERFACE_NEW}=="?*", NAME="$env{INTERFACE_NEW}"
-
-LABEL="persistent_net_generator_end"
-
diff --git a/rule_generator/Makefile.am b/rule_generator/Makefile.am
deleted file mode 100644
index 2754c9db67..0000000000
--- a/rule_generator/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-
-# ------------------------------------------------------------------------------
-# rule_generator - persistent network and optical device rule generator
-# ------------------------------------------------------------------------------
-dist_udevlibexec_SCRIPTS = \
- write_cd_rules \
- write_net_rules
-
-udevhomedir = $(udevlibexecdir)
-dist_udevhome_DATA = rule_generator.functions
-
-dist_udevrules_DATA = \
- 75-cd-aliases-generator.rules \
- 75-persistent-net-generator.rules
diff --git a/rule_generator/rule_generator.functions b/rule_generator/rule_generator.functions
deleted file mode 100644
index ea02acc4c7..0000000000
--- a/rule_generator/rule_generator.functions
+++ /dev/null
@@ -1,120 +0,0 @@
-# functions used by the udev rule generator
-
-# Copyright (C) 2006 Marco d'Itri <md@Linux.IT>
-
-# 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 <http://www.gnu.org/licenses/>.
-
-PATH='/sbin:/bin'
-#
-
-PATH='/sbin:/bin'
-
-# Read a single line from file $1 in the $DEVPATH directory.
-# The function must not return an error even if the file does not exist.
-sysread() {
- local file="$1"
- [ -e "/sys$DEVPATH/$file" ] || return 0
- local value
- read value < "/sys$DEVPATH/$file" || return 0
- echo "$value"
-}
-
-sysreadlink() {
- local file="$1"
- [ -e "/sys$DEVPATH/$file" ] || return 0
- readlink -f /sys$DEVPATH/$file 2> /dev/null || true
-}
-
-# Return true if a directory is writeable.
-writeable() {
- if ln -s test-link $1/.is-writeable 2> /dev/null; then
- rm -f $1/.is-writeable
- return 0
- else
- return 1
- fi
-}
-
-# Create a lock file for the current rules file.
-lock_rules_file() {
- RUNDIR="/run/udev/"
-
- RULES_LOCK="$RUNDIR/.lock-${RULES_FILE##*/}"
-
- retry=30
- while ! mkdir $RULES_LOCK 2> /dev/null; do
- if [ $retry -eq 0 ]; then
- echo "Cannot lock $RULES_FILE!" >&2
- exit 2
- fi
- sleep 1
- retry=$(($retry - 1))
- done
-}
-
-unlock_rules_file() {
- [ "$RULES_LOCK" ] || return 0
- rmdir $RULES_LOCK || true
-}
-
-# Choose the real rules file if it is writeable or a temporary file if not.
-# Both files should be checked later when looking for existing rules.
-choose_rules_file() {
- RUNDIR="/run/udev/"
-
- local tmp_rules_file="$RUNDIR/tmp-rules--${RULES_FILE##*/}"
- [ -e "$RULES_FILE" -o -e "$tmp_rules_file" ] || PRINT_HEADER=1
-
- [ -d "${RULES_FILE%/*}" ] || if writeable ${RULES_FILE%/rules.d/*}; then
- mkdir -p "${RULES_FILE%/*}"
- fi
-
- if writeable ${RULES_FILE%/*}; then
- RO_RULES_FILE='/dev/null'
- else
- RO_RULES_FILE=$RULES_FILE
- RULES_FILE=$tmp_rules_file
- fi
-}
-
-# Return the name of the first free device.
-raw_find_next_available() {
- local links="$1"
-
- local basename=${links%%[ 0-9]*}
- local max=-1
- for name in $links; do
- local num=${name#$basename}
- [ "$num" ] || num=0
- [ $num -gt $max ] && max=$num
- done
-
- local max=$(($max + 1))
- # "name0" actually is just "name"
- [ $max -eq 0 ] && return
- echo "$max"
-}
-
-# Find all rules matching a key (with action) and a pattern.
-find_all_rules() {
- local key="$1"
- local linkre="$2"
- local match="$3"
-
- local search='.*[[:space:],]'"$key"'"('"$linkre"')".*'
- echo $(sed -n -r -e 's/^#.*//' -e "${match}s/${search}/\1/p" \
- $RO_RULES_FILE \
- $([ -e $RULES_FILE ] && echo $RULES_FILE) \
- 2>/dev/null)
-}
diff --git a/rule_generator/write_cd_rules.in b/rule_generator/write_cd_rules.in
deleted file mode 100644
index 2b00a32558..0000000000
--- a/rule_generator/write_cd_rules.in
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/sh -e
-
-# This script is run if an optical drive lacks a rule for persistent naming.
-#
-# It adds symlinks for optical drives based on the device class determined
-# by cdrom_id and used ID_PATH to identify the device.
-
-# (C) 2006 Marco d'Itri <md@Linux.IT>
-#
-# 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 <http://www.gnu.org/licenses/>.
-
-# debug, if UDEV_LOG=<debug>
-if [ -n "$UDEV_LOG" ]; then
- if [ "$UDEV_LOG" -ge 7 ]; then
- set -x
- fi
-fi
-
-RULES_FILE="@udevconfdir@/rules.d/70-persistent-cd.rules"
-
-. @udevlibexecdir@/rule_generator.functions
-
-find_next_available() {
- raw_find_next_available "$(find_all_rules 'SYMLINK\+=' "$1")"
-}
-
-write_rule() {
- local match="$1"
- local link="$2"
- local comment="$3"
-
- {
- if [ "$PRINT_HEADER" ]; then
- PRINT_HEADER=
- echo "# This file was automatically generated by the $0"
- echo "# program, run by the cd-aliases-generator.rules rules file."
- echo "#"
- echo "# You can modify it, as long as you keep each rule on a single"
- echo "# line, and set the \$GENERATED variable."
- echo ""
- fi
-
- [ "$comment" ] && echo "# $comment"
- echo "$match, SYMLINK+=\"$link\", ENV{GENERATED}=\"1\""
- } >> $RULES_FILE
- SYMLINKS="$SYMLINKS $link"
-}
-
-if [ -z "$DEVPATH" ]; then
- echo "Missing \$DEVPATH." >&2
- exit 1
-fi
-if [ -z "$ID_CDROM" ]; then
- echo "$DEVPATH is not a CD reader." >&2
- exit 1
-fi
-
-if [ "$1" ]; then
- METHOD="$1"
-else
- METHOD='by-path'
-fi
-
-case "$METHOD" in
- by-path)
- if [ -z "$ID_PATH" ]; then
- echo "$DEVPATH not supported by path_id. by-id may work." >&2
- exit 1
- fi
- RULE="ENV{ID_PATH}==\"$ID_PATH\""
- ;;
-
- by-id)
- if [ "$ID_SERIAL" ]; then
- RULE="ENV{ID_SERIAL}==\"$ID_SERIAL\""
- elif [ "$ID_MODEL" -a "$ID_REVISION" ]; then
- RULE="ENV{ID_MODEL}==\"$ID_MODEL\", ENV{ID_REVISION}==\"$ID_REVISION\""
- else
- echo "$DEVPATH not supported by ata_id. by-path may work." >&2
- exit 1
- fi
- ;;
-
- *)
- echo "Invalid argument (must be either by-path or by-id)." >&2
- exit 1
- ;;
-esac
-
-# Prevent concurrent processes from modifying the file at the same time.
-lock_rules_file
-
-# Check if the rules file is writeable.
-choose_rules_file
-
-link_num=$(find_next_available 'cdrom[0-9]*')
-
-match="SUBSYSTEM==\"block\", ENV{ID_CDROM}==\"?*\", $RULE"
-
-comment="$ID_MODEL ($ID_PATH)"
-
- write_rule "$match" "cdrom$link_num" "$comment"
-[ "$ID_CDROM_CD_R" -o "$ID_CDROM_CD_RW" ] && \
- write_rule "$match" "cdrw$link_num"
-[ "$ID_CDROM_DVD" ] && \
- write_rule "$match" "dvd$link_num"
-[ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ] && \
- write_rule "$match" "dvdrw$link_num"
-echo >> $RULES_FILE
-
-unlock_rules_file
-
-echo $SYMLINKS
-
-exit 0
-
diff --git a/rule_generator/write_net_rules.in b/rule_generator/write_net_rules.in
deleted file mode 100644
index 324e97821c..0000000000
--- a/rule_generator/write_net_rules.in
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/bin/sh -e
-
-# 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=<name> will be printed
-# on stdout to allow udev to IMPORT it.
-
-# 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 <md@Linux.IT>
-# Copyright (C) 2007 Kay Sievers <kay.sievers@vrfy.org>
-#
-# 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 <http://www.gnu.org/licenses/>.
-
-# debug, if UDEV_LOG=<debug>
-if [ -n "$UDEV_LOG" ]; then
- if [ "$UDEV_LOG" -ge 7 ]; then
- set -x
- fi
-fi
-
-RULES_FILE='@udevconfdir@/rules.d/70-persistent-net.rules'
-
-. @udevlibexecdir@/rule_generator.functions
-
-interface_name_taken() {
- local value="$(find_all_rules 'NAME=' $INTERFACE)"
- if [ "$value" ]; then
- return 0
- else
- return 1
- fi
-}
-
-find_next_available() {
- raw_find_next_available "$(find_all_rules 'NAME=' "$1")"
-}
-
-write_rule() {
- local match="$1"
- local name="$2"
- local comment="$3"
-
- {
- 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 "#"
- 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 ""
- [ "$comment" ] && echo "# $comment"
- echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
- } >> $RULES_FILE
-}
-
-if [ -z "$INTERFACE" ]; then
- echo "missing \$INTERFACE" >&2
- exit 1
-fi
-
-# Prevent concurrent processes from modifying the file at the same time.
-lock_rules_file
-
-# Check if the rules file is writeable.
-choose_rules_file
-
-# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
-if [ "$MATCHADDR" ]; then
- match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
-fi
-
-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
-
-if [ "$MATCHIFTYPE" ]; then
- match="$match, ATTR{type}==\"$MATCHIFTYPE\""
-fi
-
-if [ -z "$match" ]; then
- echo "missing valid match" >&2
- unlock_rules_file
- 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)"
- if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
- INTERFACE=$INTERFACE_NAME;
- echo "INTERFACE_NEW=$INTERFACE"
- fi
-else
- # if a rule using the current name already exists, find a new name
- 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
-
-write_rule "$match" "$INTERFACE" "$COMMENT"
-
-unlock_rules_file
-
-exit 0
diff --git a/rules/Makefile.am b/rules/Makefile.am
index 1fae8b56ec..408a23c976 100644
--- a/rules/Makefile.am
+++ b/rules/Makefile.am
@@ -18,13 +18,9 @@ dist_udevrules_DATA = \
75-probe_mtd.rules \
75-tty-description.rules \
78-sound-card.rules \
+ 80-net-name-slot.rules \
95-udev-late.rules
-if !ENABLE_RULE_GENERATOR
-dist_udevrules_DATA += \
- 80-net-name-slot.rules
-endif
-
if HAVE_BLKID
dist_udevrules_DATA += \
60-persistent-storage.rules
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
index 90ed7d8f0f..7bd625495c 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -771,11 +771,6 @@ out:
return err;
}
-#ifdef ENABLE_RULE_GENERATOR
-/* function to return the count of rules that assign NAME= to a value matching arg#2 , defined in udev-rules.c */
-int udev_rules_assigning_name_to(struct udev_rules *rules,const char *match_name);
-#endif
-
static int rename_netif_dev_fromname_toname(struct udev_device *dev,const char *oldname,const char *newname) {
int sk;
struct ifreq ifr;
@@ -794,49 +789,12 @@ static int rename_netif_dev_fromname_toname(struct udev_device *dev,const char *
strscpy(ifr.ifr_newname, IFNAMSIZ, newname);
err = ioctl(sk, SIOCSIFNAME, &ifr);
-#ifdef ENABLE_RULE_GENERATOR
- int loop;
-
- if (err == 0) {
- log_info("renamed network interface %s to %s", ifr.ifr_name, ifr.ifr_newname);
- goto out;
- }
- /* keep trying if the destination interface name already exists */
- log_debug("collision on rename of network interface %s to %s , retrying until timeout",
- ifr.ifr_name, ifr.ifr_newname);
-
- err = -errno;
- if (err != -EEXIST)
- goto out;
-
- /* wait a maximum of 90 seconds for our target to become available */
- loop = 90 * 20;
- while (loop--) {
- const struct timespec duration = { 0, 1000 * 1000 * 1000 / 20 };
-
- nanosleep(&duration, NULL);
-
- err = ioctl(sk, SIOCSIFNAME, &ifr);
- if (err == 0) {
- log_info("renamed network interface %s to %s", ifr.ifr_name, ifr.ifr_newname);
- break;
- }
- err = -errno;
- if (err != -EEXIST)
- break;
- }
-
-out:
- if (err < 0)
- log_error("error changing net interface name %s to %s: %m", ifr.ifr_name, ifr.ifr_newname);
-#else
if (err >= 0) {
log_info("renamed network interface %s to %s", ifr.ifr_name, ifr.ifr_newname);
} else {
err = -errno;
log_error("error changing net interface name %s to %s: %m", ifr.ifr_name, ifr.ifr_newname);
}
-#endif
close(sk);
return err;
@@ -904,82 +862,14 @@ void udev_event_execute_rules(struct udev_event *event,
sigmask);
/* rename a new network interface, if needed */
-
- /* ENABLE_RULE_GENERATOR conditional:
- * if this is a net iface, and it is an add event,
- * and as long as all of the following are FALSE:
- * - no NAME target and the current name is not being used
- * - there is a NAME target and it is the same as the current name
- * - the rules can successfully be searched for the current name (not really part of the conditional)
- * the run the rename.
- *
- * note - udev_rules_assigning_name_to is run when event->name is NULL to ensure renames happen,
- * but also on its own to check if a temp-rename is necessary when event->name exists.
- *
- * A temp-rename is necessary when:
- * - there is no rule renaming the current iface but the current name IS used in some other rule
- * - there is a rule renaming the current iface,
- * the current name IS used AND the target name != the current name
- */
-
int r;
if (udev_device_get_ifindex(dev) > 0 && streq(udev_device_get_action(dev), "add") &&
-#ifdef ENABLE_RULE_GENERATOR
- (event->name == NULL && (r=udev_rules_assigning_name_to(rules,udev_device_get_sysname(dev))) > 0 ||
- event->name != NULL && !streq(event->name, udev_device_get_sysname(dev)))) {
-#else
event->name != NULL && !streq(event->name, udev_device_get_sysname(dev))) {
-#endif
char syspath[UTIL_PATH_SIZE];
char *pos;
char *finalifname = event->name;
-#ifdef ENABLE_RULE_GENERATOR
- char newifname[IFNAMSIZ];
-
- /* r is the number of rules that assign a device with NAME= this sysname */
- if (r > 0 || (r=udev_rules_assigning_name_to(rules,udev_device_get_sysname(dev))) > 0) {
- /* have a conflict, rename to a temp name */
- char *newpos;
- int ifidnum;
-
- /* build the temporary iface name */
- strscpy(newifname, IFNAMSIZ, udev_device_get_sysname(dev));
- newpos=pos=&newifname[strcspn(newifname,"0123456789")];
- ifidnum=(int)strtol(pos,&newpos,10);
- *pos='\0';
- if (newpos > pos && *newpos == '\0') /* append new iface num to name */
- /* use udev_device_get_ifindex(dev) as it is unique to every iface */
- snprintf(pos,IFNAMSIZ+(newifname-pos), "%d", 128 - udev_device_get_ifindex(dev));
-
- /* note, r > 0, which will skip the post-rename stuff if no rename occurs */
-
- /* if sysname isn't already the tmpname (ie there is no numeric component), do the rename */
- if (!streq(newifname,udev_device_get_sysname(dev))) {
- r = rename_netif_dev_fromname_toname(dev,udev_device_get_sysname(dev),newifname);
- if (r == 0) {
- finalifname = newifname;
- log_debug("renamed netif to '%s' for collision avoidance", newifname);
- } else {
- log_error("could not rename netif to '%s' for collision avoidance",newifname);
- }
- }
- /* rename it now to its final target if its not already there */
- if (event->name != NULL && !streq(event->name, newifname)) {
- r = rename_netif_dev_fromname_toname(dev,newifname,event->name);
- if (r == 0)
- finalifname = event->name;
- }
-
- } else { /* no need to rename to a tempname first, do a regular direct rename to event->name */
-
- r = 1; /* skip the post-rename stuff if no rename occurs */
- if (!streq(event->name, udev_device_get_sysname(dev)))
- r = rename_netif(event);
- }
-#else
r = rename_netif(event);
-#endif
if (r >= 0) {
/* remember old name */
udev_device_add_property(dev, "INTERFACE_OLD", udev_device_get_sysname(dev));
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index f51691143b..11cf21a4fb 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -1877,70 +1877,6 @@ enum escape_type {
ESCAPE_REPLACE,
};
-#ifdef ENABLE_RULE_GENERATOR
-/* function to return the count of rules that assign NAME= to a value matching arg#2 - returns 0,1 */
-int udev_rules_assigning_name_to(struct udev_rules *rules, const char *match_name) {
- struct token *cur;
- struct token *rule;
- enum escape_type esc = ESCAPE_UNSET;
- bool name_final = false;
-
- if (rules->tokens == NULL)
- return 0;
-
- /* loop through token list, match, run actions or forward to next rule */
- cur = &rules->tokens[0];
- rule = cur;
- for (;;) {
- dump_token(rules, cur);
- switch (cur->type) {
- case TK_RULE:
- /* current rule */
- rule = cur;
- if (!rule->rule.can_set_name)
- goto nomatch;
- break;
- case TK_M_SUBSYSTEM:
- if (match_key(rules, cur, "net") != 0)
- goto nomatch;
- break;
- case TK_M_ACTION:
- if (match_key(rules, cur, "add") != 0)
- goto nomatch;
- break;
- case TK_A_NAME: {
- const char *name = rules_str(rules, cur->key.value_off);
- char name_str[UTIL_PATH_SIZE];
- int count;
-
- strscpy(name_str,UTIL_PATH_SIZE,name);
- count = util_replace_chars(name_str, "/");
- if (count > 0)
- log_debug("%i character(s) replaced", count);
- if (streq(name_str,match_name)) {
- log_debug("found a match! NAME assigns %s in: %s:%u",
- name,
- rules_str(rules, rule->rule.filename_off),
- rule->rule.filename_line);
- return 1; /* no need to find more than one */
- }
-
- /* skip to next rule */
- goto nomatch;
- }
- case TK_END:
- return 0;
- }
-
- cur++;
- continue;
- nomatch:
- /* fast-forward to next rule */
- cur = rule + rule->rule.token_count;
- }
-}
-#endif
-
int udev_rules_apply_to_event(struct udev_rules *rules,
struct udev_event *event,
usec_t timeout_usec,