/etc/vz/dists/scripts/arch-del_ip.sh is in vzctl 4.9.4-5.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | #!/bin/bash
# Copyright (C) 2006-2007 SYSTS.ORG All rights reserved.
# Copyright (C) 2012 Brinstar Networks All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Deletes IP address(es) from a container running Arch Linux.
VENET_DEV=venet0
OLDCFGFILE=/etc/rc.conf
CFGPATH=/etc/network.d
NETCFG=/etc/conf.d/netcfg
CTLPATH=/etc/netctl
function old_remove_all_ve_aliases()
{
local ve_if_name
local ve_if
ve_if_name=`grep "^${VENET_DEV}_" ${OLDCFGFILE} | cut -d'=' -f1`
for ve_if in ${ve_if_name}; do
/etc/rc.d/network ifdown ${ve_if} 2>/dev/null
del_param "${OLDCFGFILE}" "${ve_if}"
del_param3 "${OLDCFGFILE}" "INTERFACES" "${ve_if}"
done
}
function old_del_ip()
{
local ifname
local ipm
if [ "x${IPDELALL}" = "xyes" ]; then
old_remove_all_ve_aliases
return 0
fi
for ipm in ${IP_ADDR}; do
ip_conv $ipm
ifname=$(grep -Fw "${_IP}" ${OLDCFGFILE} |
grep "^${VENET_DEV}_" | cut -d'=' -f1)
if [ -n "${ifname}" ]; then
# shutdown interface venet0:x
/etc/rc.d/network ifdown ${ifname/_/:} 2> /dev/null
# remove venet0_x from cfg
del_param "${OLDCFGFILE}" "${ifname}"
# del venet0_x from INTERFACES array
del_param3 "${OLDCFGFILE}" "INTERFACES" "${ifname}"
fi
done
}
function remove_all_ve_aliases()
{
local ve_if
for ve_if in $(ls -1 ${CFGPATH}/${VENET_DEV}_* 2> /dev/null | sed "s/.*${VENET_DEV}_//"); do
ip link set "${VENET_DEV}:${ve_if}" down
rm -f "${CFGPATH}/${VENET_DEV}_${ve_if}"
del_param3 "${NETCFG}" "NETWORKS" "${VENET_DEV}_${ve_if}"
done
}
function del_ip()
{
local ve_if
local ipm
if [ "x${IPDELALL}" = "xyes" ]; then
remove_all_ve_aliases
return 0
fi
for ipm in ${IP_ADDR}; do
ip_conv $ipm
if [ -z "$_IPV6ADDR" ] ; then
ve_if=`grep -H "ADDR='${_IP}'" "${CFGPATH}/${VENET_DEV}"_* 2> /dev/null | awk -F: '{print$1}' | sed "s/.*${VENET_DEV}_//"`
del_param3 "${CFGPATH}/${VENET_DEV}" "IPCFG" "addr add ${_IP}/${_MASK} broadcast 0.0.0.0 dev ${VENET_DEV}"
else
ve_if=`grep -H "ADDR6='${_IP}/128'" "${CFGPATH}/${VENET_DEV}"_* 2> /dev/null | awk -F: '{print$1}' | sed "s/.*${VENET_DEV}_//"`
del_param3 "${CFGPATH}/${VENET_DEV}" "IPCFG" "addr add ${_IP}/${_MASK} dev ${VENET_DEV}"
fi
if [ -z "$ve_if" ] ; then
break
fi
ip link set "${VENET_DEV}:${ve_if}" down
rm -f "${CFGPATH}/${VENET_DEV}_${ve_if}"
del_param3 "${NETCFG}" "NETWORKS" "${VENET_DEV}_${ve_if}"
done
netcfg "${VENET_DEV}"
}
function netctl_del_ip()
{
local ipm
if [ "x${IPDELALL}" = "xyes" ]; then
remove_all_ve_aliases
return 0
fi
for ipm in ${IP_ADDR}; do
ip_conv $ipm
if [ -z "$_IPV6ADDR" ]; then
del_param3 "${CTLPATH}/${VENET_DEV}" "Address" "$_IP/$_MASK"
else
del_param3 "${CTLPATH}/${VENET_DEV}" "Address6" "$_IP/$_MASK"
fi
done
if [ "${VE_STATE}" = "running" ]; then
netctl restart ${VENET_DEV}
fi
}
newcfg=
if [ -d "${CFGPATH}" ] ; then
newcfg=1
del_ip
fi
if [ -d "${CTLPATH}" ] ; then
newcfg=1
netctl_del_ip
fi
if [ -z $newcfg ] ; then
old_del_ip
fi
exit 0
|