#!/bin/sh -e MARK_DEV_PREFIX="/run/network/ifup." MARK_STATIC_NETWORK_EMITTED="/run/network/static-network-up-emitted" if [ -e /lib/lsb/init-functions ]; then . /lib/lsb/init-functions fi if ! init_is_upstart; then exit 0 fi # Let's ignore meta entries (ifup -a) if [ "$ADDRFAM" = "meta" ]; then exit 0 fi # lo emission handled by /etc/init/network-interface.conf if [ "$IFACE" != lo ]; then initctl emit -n net-device-up \ "IFACE=$IFACE" \ "LOGICAL=$LOGICAL" \ "ADDRFAM=$ADDRFAM" \ "METHOD=$METHOD" fi get_auto_interfaces() { # write to stdout a list of interfaces configured as 'auto' in interfaces(5) local found="" # stderr redirected as it outputs things like: # Ignoring unknown interface eth0=eth0. found=$(ifquery --list --allow auto 2>/dev/null) || return set -- ${found} echo "$@" } all_interfaces_up() { # return true if all interfaces listed in /etc/network/interfaces as 'auto' # are up. if no interfaces are found there, then "all [given] were up" local prefix="$1" iface="" for iface in $(get_auto_interfaces); do # if cur interface does is not up, then all have not been brought up [ -f "${prefix}${iface}" ] || return 1 done return 0 } # touch our own "marker" indicating that this interface has been brought up. : > "${MARK_DEV_PREFIX}$IFACE" if all_interfaces_up "${MARK_DEV_PREFIX}" && mkdir "${MARK_STATIC_NETWORK_EMITTED}" 2>/dev/null; then initctl emit --no-wait static-network-up fi