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
|