mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
ifupdown2 2.0.0 release
This is a major update coming all at once from master-next branch master-next branch was started with --orphan option which is basically a new branch without history. The major changes are: - repackaging - cleanup the directory tree - rewritte setup.py to allow install from deb file or pypi (pip install) - add a Makefile to make things (like building a deb) easier - review all debian files Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
222
etc/init.d/networking
Normal file
222
etc/init.d/networking
Normal file
@@ -0,0 +1,222 @@
|
||||
#!/bin/bash
|
||||
### BEGIN INIT INFO
|
||||
# Provides: networking ifupdown
|
||||
# Required-Start: mountkernfs $local_fs urandom
|
||||
# Required-Stop: $local_fs
|
||||
# Default-Start: S
|
||||
# Default-Stop: 0 6
|
||||
# Short-Description: Raise network interfaces.
|
||||
# Description: Prepare /run/network directory, ifstate file and raise network interfaces, or take them down.
|
||||
### END INIT INFO
|
||||
|
||||
RUN_DIR="/run/network"
|
||||
IFSTATE_LOCKFILE="${RUN_DIR}/ifstatelock"
|
||||
|
||||
STATE_DIR="/var/tmp/network"
|
||||
IFSTATE_FILE="${STATE_DIR}/ifstatenew"
|
||||
|
||||
NAME=networking
|
||||
SCRIPTNAME=/etc/init.d/$NAME
|
||||
|
||||
[ -x /sbin/ifup ] || exit 0
|
||||
[ -x /sbin/ifdown ] || exit 0
|
||||
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
CONFIGURE_INTERFACES=yes
|
||||
|
||||
EXTRA_ARGS=
|
||||
|
||||
[ -f /etc/default/networking ] && . /etc/default/networking
|
||||
|
||||
[ "$VERBOSE" = yes ] && EXTRA_ARGS=-v
|
||||
[ "$DEBUG" = yes ] && EXTRA_ARGS="$EXTRA_ARGS -d"
|
||||
[ "$SYSLOG" = yes ] && EXTRA_ARGS="$EXTRA_ARGS --syslog"
|
||||
|
||||
gen_examples() {
|
||||
# Generate sample interfaces file. The interfaces files are
|
||||
# generated under /usr/share/doc/ifupdown2/examples/
|
||||
#
|
||||
|
||||
# generate files only at boot
|
||||
[ -f ${IFSTATE_LOCKFILE} ] && return
|
||||
|
||||
python_ifupdown2_docdir="/usr/share/doc/ifupdown2"
|
||||
swpfile=${python_ifupdown2_docdir}"/examples/swp_defaults"
|
||||
bridgedefaultfile=${python_ifupdown2_docdir}"/examples/bridge_untagged_default"
|
||||
interfaces_gen_script=${python_ifupdown2_docdir}"/examples/generate_interfaces.py"
|
||||
|
||||
[ ! -e $interfaces_gen_script ] && return
|
||||
ret=$($interfaces_gen_script -s 2>&1 >$swpfile)
|
||||
ret=$($interfaces_gen_script -b 2>&1 >$bridgedefaultfile)
|
||||
return
|
||||
}
|
||||
|
||||
perf_options() {
|
||||
# At bootup lets set perfmode
|
||||
[ -f ${IFSTATE_LOCKFILE} ] && echo -n "" && return
|
||||
|
||||
echo -n "--perfmode"
|
||||
}
|
||||
|
||||
process_exclusions() {
|
||||
set -- $EXCLUDE_INTERFACES
|
||||
exclusions=""
|
||||
for d
|
||||
do
|
||||
exclusions="-X $d $exclusions"
|
||||
done
|
||||
echo $exclusions
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
ifup_hotplug () {
|
||||
if [ -d /sys/class/net ]
|
||||
then
|
||||
ifaces=$(for iface in $(ifquery --list --allow=hotplug 2>/dev/null)
|
||||
do
|
||||
link=${iface##:*}
|
||||
link=${link##.*}
|
||||
if [ -e "/sys/class/net/$link" ] && [ "$(cat /sys/class/net/$link/operstate)" = up ]
|
||||
then
|
||||
echo "$iface"
|
||||
fi
|
||||
done)
|
||||
if [ -n "$ifaces" ]
|
||||
then
|
||||
ifup $ifaces "$@" || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
ifupdown_init() {
|
||||
# remove state file at boot
|
||||
[ ! -e ${IFSTATE_LOCKFILE} ] && rm -f ${IFSTATE_FILE}
|
||||
[ ! -e /run/network ] && mkdir -p /run/network &>/dev/null
|
||||
[ ! -e /etc/network/run ] && \
|
||||
ln -sf /run/network /etc/network/run &>/dev/null
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
gen_examples
|
||||
ifupdown_init
|
||||
if [ "$CONFIGURE_INTERFACES" = no ]
|
||||
then
|
||||
log_action_msg "Not configuring network interfaces, see /etc/default/networking"
|
||||
exit 0
|
||||
fi
|
||||
set -f
|
||||
exclusions=$(process_exclusions)
|
||||
perfoptions=$(perf_options)
|
||||
log_action_begin_msg "Configuring network interfaces"
|
||||
ifup -a $EXTRA_ARGS $exclusions $perfoptions
|
||||
log_action_end_msg $?
|
||||
;;
|
||||
|
||||
stop)
|
||||
if [ "$SKIP_DOWN_AT_SYSRESET" = "yes" ]; then
|
||||
shutdown_or_reboot=$(runlevel 2>/dev/null | \
|
||||
/usr/bin/tr -s " " | \
|
||||
/usr/bin/cut -d " " \
|
||||
-f1- --output-delimiter=$'\n' | \
|
||||
/bin/grep -e "0" -e "6")
|
||||
if [ -n "$shutdown_or_reboot" ]; then
|
||||
log_action_begin_msg "Deconfiguring network interfaces..skip"
|
||||
log_action_end_msg 0
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
ifupdown_init
|
||||
check_network_file_systems
|
||||
check_network_swap
|
||||
exclusions=$(process_exclusions)
|
||||
|
||||
log_action_begin_msg "Deconfiguring network interfaces"
|
||||
ifdown -a $EXTRA_ARGS $exclusions
|
||||
log_action_end_msg $?
|
||||
;;
|
||||
|
||||
reload)
|
||||
|
||||
ifupdown_init
|
||||
log_action_begin_msg "Reloading network interfaces configuration"
|
||||
|
||||
ifreload -a $EXTRA_ARGS
|
||||
log_action_end_msg $?
|
||||
;;
|
||||
|
||||
reload-currently-up)
|
||||
|
||||
ifupdown_init
|
||||
log_action_begin_msg "Reloading currently up network interfaces configuration"
|
||||
|
||||
ifreload --currently-up $EXTRA_ARGS
|
||||
log_action_end_msg $?
|
||||
;;
|
||||
|
||||
force-reload)
|
||||
|
||||
ifupdown_init
|
||||
|
||||
log_action_begin_msg "Reloading network interfaces configuration"
|
||||
ifreload -f -a $EXTRA_ARGS
|
||||
log_action_end_msg $?
|
||||
;;
|
||||
|
||||
restart)
|
||||
ifupdown_init
|
||||
|
||||
set -f
|
||||
exclusions=$(process_exclusions)
|
||||
log_action_begin_msg "Reconfiguring network interfaces"
|
||||
ifdown -a $EXTRA_ARGS $exclusions || true
|
||||
ifup -a $EXTRA_ARGS $exclusions
|
||||
log_action_end_msg $?
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: /etc/init.d/networking {start|stop|reload|restart|force-reload}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# vim: noet ts=8
|
Reference in New Issue
Block a user