root / hooks / network-disconnect-post.d / snf-network @ a9872828
History | View | Annotate | Download (1.8 kB)
1 | 6e257ba8 | Dimitris Aragiorgis | #!/bin/bash |
---|---|---|---|
2 | 6e257ba8 | Dimitris Aragiorgis | |
3 | 6e257ba8 | Dimitris Aragiorgis | source /etc/default/snf-network |
4 | 6e257ba8 | Dimitris Aragiorgis | |
5 | 6e257ba8 | Dimitris Aragiorgis | source $CONF |
6 | 6e257ba8 | Dimitris Aragiorgis | |
7 | 6e257ba8 | Dimitris Aragiorgis | NETWORK=$GANETI_GROUP_NETWORK_NAME |
8 | 6e257ba8 | Dimitris Aragiorgis | MODE=$GANETI_GROUP_NETWORK_MODE |
9 | 6e257ba8 | Dimitris Aragiorgis | LINK=$GANETI_GROUP_NETWORK_LINK |
10 | 6e257ba8 | Dimitris Aragiorgis | |
11 | 6e257ba8 | Dimitris Aragiorgis | HOSTNAME=$(hostname) |
12 | 6e257ba8 | Dimitris Aragiorgis | |
13 | 6e257ba8 | Dimitris Aragiorgis | NETFILE=$SHAREDDIR/networks/$NETWORK |
14 | 6e257ba8 | Dimitris Aragiorgis | NODEMAPFILE=$SHAREDDIR/mappings/$NETWORK-$HOSTNAME |
15 | 6e257ba8 | Dimitris Aragiorgis | NODEINFRAFILE=$SHAREDDIR/infra/$HOSTNAME |
16 | 6e257ba8 | Dimitris Aragiorgis | CLUSTERINFRAFILE=$SHAREDDIR/infra/cluster |
17 | 6e257ba8 | Dimitris Aragiorgis | |
18 | 6e257ba8 | Dimitris Aragiorgis | RT_TABLES=/etc/iproute2/rt_tables |
19 | 6e257ba8 | Dimitris Aragiorgis | |
20 | a9872828 | Dimitris Aragiorgis | |
21 | a9872828 | Dimitris Aragiorgis | if [ ! -e $NODEMAPFILE ]; then |
22 | a9872828 | Dimitris Aragiorgis | exit 0 |
23 | a9872828 | Dimitris Aragiorgis | fi |
24 | a9872828 | Dimitris Aragiorgis | |
25 | 6e257ba8 | Dimitris Aragiorgis | source $NODEINFRAFILE |
26 | 6e257ba8 | Dimitris Aragiorgis | source $CLUSTERINFRAFILE |
27 | 6e257ba8 | Dimitris Aragiorgis | source $NETFILE |
28 | 6e257ba8 | Dimitris Aragiorgis | source $NODEMAPFILE |
29 | 6e257ba8 | Dimitris Aragiorgis | |
30 | 6e257ba8 | Dimitris Aragiorgis | if [ "$MODE" == "routed" ]; then |
31 | 6e257ba8 | Dimitris Aragiorgis | TABLE=rt_$NETWORK |
32 | 6e257ba8 | Dimitris Aragiorgis | if [ "$TYPE" == "public" ]; then |
33 | 63a8d2cc | Dimitris Aragiorgis | VLAN=$PUBLIC_VLAN |
34 | 6e257ba8 | Dimitris Aragiorgis | ARP_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}') |
35 | 6e257ba8 | Dimitris Aragiorgis | |
36 | a9872828 | Dimitris Aragiorgis | if [ -n "$SUBNET" ]; then |
37 | a9872828 | Dimitris Aragiorgis | arptables -D OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s $ARP_IP |
38 | a9872828 | Dimitris Aragiorgis | if [ -n "$GATEWAY" ]; then |
39 | a9872828 | Dimitris Aragiorgis | ip route del default via $GATEWAY dev $VLAN table $TABLE |
40 | a9872828 | Dimitris Aragiorgis | fi |
41 | 6e257ba8 | Dimitris Aragiorgis | |
42 | a9872828 | Dimitris Aragiorgis | ip route del $SUBNET dev $VLAN table $TABLE |
43 | 6e257ba8 | Dimitris Aragiorgis | |
44 | a9872828 | Dimitris Aragiorgis | ip route del $SUBNET dev $VLAN table main |
45 | 6e257ba8 | Dimitris Aragiorgis | |
46 | a9872828 | Dimitris Aragiorgis | ip rule del iif $VLAN table $TABLE |
47 | a9872828 | Dimitris Aragiorgis | fi |
48 | a9872828 | Dimitris Aragiorgis | if [ -n "$SUBNET6" ]; then |
49 | a9872828 | Dimitris Aragiorgis | if [ -n "$GATEWAY6" ]; then |
50 | a9872828 | Dimitris Aragiorgis | ip -6 route del default via $GATEWAY6 dev $VLAN table $TABLE |
51 | a9872828 | Dimitris Aragiorgis | fi |
52 | a9872828 | Dimitris Aragiorgis | ip -6 route add $SUBNET6 dev $VLAN table $TABLE |
53 | a9872828 | Dimitris Aragiorgis | ip -6 route add $SUBNET6 dev $VLAN table main |
54 | a9872828 | Dimitris Aragiorgis | ip -6 rule add iff $VLAN table $TABLE |
55 | a9872828 | Dimitris Aragiorgis | fi |
56 | 6e257ba8 | Dimitris Aragiorgis | sed -i 's/.*'"$TABLE"'$//' $RT_TABLES |
57 | a9872828 | Dimitris Aragiorgis | |
58 | 6e257ba8 | Dimitris Aragiorgis | fi |
59 | 6e257ba8 | Dimitris Aragiorgis | fi |
60 | 6e257ba8 | Dimitris Aragiorgis | |
61 | 6e257ba8 | Dimitris Aragiorgis | |
62 | 6e257ba8 | Dimitris Aragiorgis | |
63 | 6e257ba8 | Dimitris Aragiorgis | if [ "$MODE" == "bridged" ]; then |
64 | 6e257ba8 | Dimitris Aragiorgis | BRIDGE=$LINK |
65 | 6e257ba8 | Dimitris Aragiorgis | if [ ! -z "$GATEWAY" -a $ENABLE_MASQ]; then |
66 | 6e257ba8 | Dimitris Aragiorgis | if [ "$TYPE" == "private" ]; then |
67 | 6e257ba8 | Dimitris Aragiorgis | if [ "$HOSTNAME" == "$ROUTER" ]; then |
68 | 6e257ba8 | Dimitris Aragiorgis | NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}') |
69 | 6e257ba8 | Dimitris Aragiorgis | ip addr del $GATEWAY/$NETMASK dev $BRIDGE |
70 | 6e257ba8 | Dimitris Aragiorgis | iptables -t nat -D POSTROUTING -s $SUBNET \! -d 192.168.0.0/16 -j MASQUERADE |
71 | 6e257ba8 | Dimitris Aragiorgis | fi |
72 | 6e257ba8 | Dimitris Aragiorgis | fi |
73 | 6e257ba8 | Dimitris Aragiorgis | fi |
74 | 6e257ba8 | Dimitris Aragiorgis | fi |
75 | 6e257ba8 | Dimitris Aragiorgis | |
76 | 6e257ba8 | Dimitris Aragiorgis | rm $NODEMAPFILE |