Statistics
| Branch: | Tag: | Revision:

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