Blob Blame Raw
#!/bin/bash
export LC_ALL=C

[ -f /etc/sysconfig/dhcpd ] && . /etc/sysconfig/dhcpd

# restart dhcpd whenever $1 interface is brought up by NM (rhbz #565921)
if [ "$2" = "up" ]; then
    # exit if the service is not configured to be started in the current runlevel
    /bin/systemctl is-enabled dhcpd.service || exit 0

    ifaces=""                # interfaces defined in DHCPDARGS
    net=$(ls /sys/class/net) # all interfaces on system

    if [ -n "${DHCPDARGS}" ]; then
        for iface in ${net}; do
            for arg in ${DHCPDARGS}; do
                [ $arg == $iface ] && ifaces="$ifaces $iface"
            done
        done
    fi

    # exit if dhcpd is not defined to listen on $1
    # i.e. if there are interfaces defined in DHCPDARGS and $1 is not among them
    if [ -n "${ifaces}" ] &&
       [[ "${ifaces}" != *$1* ]]; then
          exit 0
    fi

    # restart service
    /bin/systemctl restart dhcpd.service || :
fi