root / disconnect-network @ cf51ea5b
History | View | Annotate | Download (1.6 kB)
1 |
#!/bin/bash |
---|---|
2 |
|
3 |
DIR=/var/lib/snf-network |
4 |
NETWORK=$1 |
5 |
NODEGROUP=$2 |
6 |
|
7 |
source /etc/default/snf-network |
8 |
|
9 |
if [ $# -ne 2 ]; then |
10 |
echo "$0 <network> <nodegroup>" |
11 |
exit 1 |
12 |
fi |
13 |
|
14 |
NETWORK_FILE=$DIR/networks/$NETWORK |
15 |
NODEGROUP_FILE=$DIR/nodegoups/$NODEGROUP |
16 |
INTERFACES=$DIR/interfaces/$NETWORK-$NODEGROUP |
17 |
|
18 |
read x VLAN BRIDGE < $INTERFACES |
19 |
|
20 |
VLAN_ID=${VLAN#*:} |
21 |
|
22 |
source $NETWORK_FILE |
23 |
source $NODEGROUP_FILE |
24 |
|
25 |
if [ $MODE == "routed" ]; then |
26 |
if [ $TYPE == "public" ]; then |
27 |
APR_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}') |
28 |
ip rule del iif $VLAN table rt_$NAME |
29 |
|
30 |
ip route del $SUBNET dev $VLAN table main |
31 |
|
32 |
ip route del $SUBNET dev $VLAN table rt_$NAME |
33 |
ip route del default via $GATEWAY dev $VLAN table rt_$NAME |
34 |
|
35 |
arptables -D OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s $ARP_IP |
36 |
ifdown -i $INTERFACES $VLAN |
37 |
rm $INTERFACES |
38 |
fi |
39 |
fi |
40 |
|
41 |
|
42 |
|
43 |
if [ $MODE == "bridged" ]; then |
44 |
if [ $TYPE == "private" ]; then |
45 |
VLAN_IDS="$VLAN_ID $PRIVATE_VLAN_IDS" |
46 |
sed -i 's/PRIVATE_VLAN_IDS/ s/=.*/='"VLAN_IDS"'/' $NODEGROUP_FILE |
47 |
fi |
48 |
|
49 |
ip route del $SUBNET dev $BRIDGE table main |
50 |
|
51 |
ip route del $SUBNET dev $BRIDGE table rt_$NETWORK |
52 |
if [ ! -z $GATEWAY ]; then |
53 |
ip route del default via $GATEWAY dev $BRIDGE table rt_$NETWORK |
54 |
if [ $TYPE == "private" ]; then |
55 |
if [ ! -z $ROUTER ]; then |
56 |
if [ $(hostname) == $ROUTER ]; then |
57 |
NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}') |
58 |
ip addr del $GATEWAY/$NETMASK dev $LINK |
59 |
iptables -t nat -D POSTROUTING -s $SUBNET \! -d $SUBNET -j MASQUERADE |
60 |
fi |
61 |
fi |
62 |
fi |
63 |
fi |
64 |
ifdown -i $INTERFACES $BRIDGE |
65 |
rm $INTERFACES |
66 |
fi |