mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
Ticket: CM-9919 Reviewed By: dsa, daniel Testing Done: Checked that mgmt class interfaces are brought up at boot if present Note that this only indicates that: - 'mgmt' is a reserved class - if any interfaces are tagged as 'mgmt', they will be brought up at boot With this we can put out documentation saying that mgmt devices can be put into its own class for easier management of mgmtvrf. {noformat} $cat /etc/network/interfaces auto lo iface lo inet loopback allow-mgmt eth0 iface eth0 inet dhcp vrf mgmt allow-mgmt mgmt iface mgmt address 127.0.0.1/8 vrf-table auto $ifquery -l --allow=mgmt eth0 mgmt $ifquery -l -a lo $ifreload --allow=mgmt $ifup --allow=mgmt {noformat} Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
168 lines
3.8 KiB
Bash
Executable File
168 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This replaces the old init.d script, and is run from the networking.service
|
|
# Only has start, stop, reload, because that's all systemd has.
|
|
# restart is implemented in systemd by stop then start.
|
|
|
|
PATH="/sbin:/bin"
|
|
RUN_DIR="/run/network"
|
|
IFSTATE_LOCKFILE="${RUN_DIR}/ifstatelock"
|
|
|
|
STATE_DIR="/var/tmp/network"
|
|
IFSTATE_FILE="${STATE_DIR}/ifstatenew"
|
|
|
|
NAME=networking
|
|
|
|
[ -x /sbin/ifup ] || exit 0
|
|
[ -x /sbin/ifdown ] || exit 0
|
|
|
|
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"
|
|
|
|
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
|
|
echo ${NAME}':' "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*)
|
|
echo ${NAME}':' "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)
|
|
echo ${NAME}':' "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*)
|
|
echo ${NAME}':' "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
|
|
}
|
|
|
|
ifup_mgmt () {
|
|
ifaces=$(ifquery --list --allow=mgmt 2>/dev/null)
|
|
if [ -n "$ifaces" ]; then
|
|
echo "bringing up mgmt class interfaces"
|
|
ifup --allow=mgmt
|
|
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)
|
|
ifupdown_init
|
|
if [ "$CONFIGURE_INTERFACES" = no ]
|
|
then
|
|
echo ${NAME}':' "Not configuring network interfaces, see /etc/default/networking"
|
|
exit 0
|
|
fi
|
|
set -f
|
|
exclusions=$(process_exclusions)
|
|
perfoptions=$(perf_options)
|
|
echo ${NAME}':' "Configuring network interfaces"
|
|
ifup_mgmt
|
|
ifup -a $EXTRA_ARGS $exclusions $perfoptions
|
|
;;
|
|
stop)
|
|
if [ "$SKIP_DOWN_AT_SYSRESET" = "yes" ]; then
|
|
SYSRESET=0
|
|
systemctl list-jobs | egrep -q '(shutdown|reboot|halt|poweroff)\.target'
|
|
[ $? -eq 0 ] && SYSRESET=1
|
|
if [ $SYSRESET -eq 1 ]; then
|
|
echo ${NAME}':' "Skipping deconfiguring network interfaces"
|
|
exit 0
|
|
fi
|
|
fi
|
|
ifupdown_init
|
|
check_network_file_systems
|
|
check_network_swap
|
|
exclusions=$(process_exclusions)
|
|
|
|
echo ${NAME}':' "Deconfiguring network interfaces"
|
|
ifdown -a $EXTRA_ARGS
|
|
;;
|
|
|
|
reload)
|
|
|
|
ifupdown_init
|
|
echo ${NAME}':' "Reloading network interfaces configuration"
|
|
|
|
ifreload -a $EXTRA_ARGS
|
|
;;
|
|
|
|
*)
|
|
echo ${NAME}':' "Usage: $0 {start|stop|reload}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|