81 lines
2.4 KiB
Plaintext
81 lines
2.4 KiB
Plaintext
|
# 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
|