# networking - configure virtual network devices # # This task causes virtual network devices that do not have an associated # kernel object to be started on boot. description "configure virtual network devices" emits static-network-up emits net-device-up emits deconfiguring-networking start on (local-filesystems and (stopped udevtrigger or container)) or runlevel [2345] or stopped networking RESULT=failed PROCESS=post-stop EXIT_STATUS=100 stop on unmounted-remote-filesystems pre-start script if [ "$UPSTART_EVENTS" = "stopped" ] && [ "$UPSTART_JOB" = "networking" ] && [ "$EXIT_STATUS" = "100" ]; then exit 0 fi mkdir -p /run/network ifup -a end script post-stop script if [ -z "$UPSTART_STOP_EVENTS" ]; then echo "Stopping or restarting the networking job is not supported." echo "Use ifdown & ifup to reconfigure desired interface." exit 100 fi log_warning_msg() { echo $* } # These checks were taken from the Debian ifupdown.networking.init script check_network_file_systems() { [ -e /proc/mounts ] || return 0 if [ -e /etc/iscsi/iscsi.initramfs ]; then log_warning_msg "not deconfiguring network interfaces: iSCSI root is mounted." exit 0 fi while read DEV MTPT FSTYPE REST; do case $DEV in /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*) log_warning_msg "not deconfiguring network interfaces: network devices still mounted." exit 0 ;; esac case $FSTYPE in nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs) log_warning_msg "not deconfiguring network interfaces: network file systems still mounted." exit 0 ;; esac done < /proc/mounts } check_network_swap() { [ -e /proc/swaps ] || return 0 while read DEV MTPT FSTYPE REST; do case $DEV in /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*) log_warning_msg "not deconfiguring network interfaces: network swap still mounted." exit 0 ;; esac done < /proc/swaps } check_network_file_systems check_network_swap # Anything that manages network interfaces *MUST* wait for this event initctl emit deconfiguring-networking ifdown -a --exclude=lo end script