--- Makefile +++ Makefile @@ -4,7 +4,7 @@ include Makefile.inc -SUBDIR = doc init.d net sh +SUBDIR = doc init.d net sh udev_helper udev_rules INSTALLAFTER= _installafter --- mk/os-Linux.mk +++ mk/os-Linux.mk @@ -3,6 +3,7 @@ SFX= .Linux.in PKG_PREFIX?= /usr +UDEVDIR?= $(shell pkg-config udev --variable=udevdir) CPPFLAGS+= -D_BSD_SOURCE -D_XOPEN_SOURCE=700 LIBDL= -Wl,-Bdynamic -ldl --- udev_helper/Makefile +++ udev_helper/Makefile @@ -0,0 +1,11 @@ +DIR= ${UDEVDIR} +SRCS= ${SRCS-${OS}} +BIN= ${BIN-${OS}} + +MK= ../mk +include ${MK}/os.mk + +SRCS-Linux= net.sh +BIN-Linux= net.sh + +include ${MK}/scripts.mk --- udev_helper/net.sh +++ udev_helper/net.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# net.sh: udev external RUN script +# +# Copyright 2007 Roy Marples +# Distributed under the terms of the GNU General Public License v2 + +IFACE=$1 +ACTION=$2 + +SCRIPT=/etc/init.d/net.$IFACE + +# ignore interfaces that are registered after being "up" (?) +case ${IFACE} in + ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*|br*) + exit 0 ;; +esac + +# stop here if coldplug is disabled, Bug #206518 +if [ "${do_not_run_plug_service}" = 1 ]; then + exit 0 +fi + +if [ ! -x "${SCRIPT}" ] ; then + #do not flood log with messages, bug #205687 + #logger -t udev-net.sh "${SCRIPT}: does not exist or is not executable" + exit 1 +fi + +# If we're stopping then sleep for a bit in-case a daemon is monitoring +# the interface. This to try and ensure we stop after they do. +[ "${ACTION}" == "stop" ] && sleep 2 + +IN_HOTPLUG=1 "${SCRIPT}" --quiet "${ACTION}" --- udev_rules/90-network.rules +++ udev_rules/90-network.rules @@ -0,0 +1,8 @@ +# do not edit this file, it will be overwritten on update + +# /etc/udev/rules/90-network.rules: triggering network init-scripts + +# Activate our network if we can +SUBSYSTEM=="net", ACTION=="add", RUN+="net.sh %k start" +SUBSYSTEM=="net", ACTION=="remove", RUN+="net.sh %k stop" + --- udev_rules/Makefile +++ udev_rules/Makefile @@ -0,0 +1,11 @@ +DIR= ${UDEVDIR}/rules.d +SRCS= ${SRCS-${OS}} +INC= ${INC-${OS}} + +MK= ../mk +include ${MK}/os.mk + +SRCS-Linux= 90-network.rules +INC-Linux= 90-network.rules + +include ${MK}/scripts.mk