Statistics
| Branch: | Tag: | Revision:

root / hooks / network-connect-post.d / snf-network @ 63a8d2cc

History | View | Annotate | Download (1.5 kB)

1
#!/bin/bash
2

    
3
source /etc/default/snf-network
4

    
5
source $CONF
6

    
7
GROUP=$GANETI_GROUP_NAME
8
NETWORK=$GANETI_GROUP_NETWORK_NAME
9
MODE=$GANETI_GROUP_NETWORK_MODE
10
LINK=$GANETI_GROUP_NETWORK_LINK
11

    
12
HOSTNAME=$(hostname)
13

    
14
NETFILE=$SHAREDDIR/networks/$NETWORK
15
NODEMAPFILE=$SHAREDDIR/mappings/$NETWORK-$HOSTNAME
16
NODEINFRAFILE=$SHAREDDIR/infra/$HOSTNAME
17

    
18
RT_TABLES=/etc/iproute2/rt_tables
19

    
20
cat > $NODEMAPFILE <<EOF
21
MODE=$MODE
22
LINK=$LINK
23
EOF
24

    
25

    
26
source $NODEINFRAFILE
27
source $NETFILE
28

    
29
if [ "$MODE" == "routed" ]; then 
30
  TABLE=rt_$NETWORK
31
  if [ "$TYPE" == "public" ]; then
32
    VLAN=$PUBLIC_VLAN
33
    ARP_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}')
34
    
35
    ip link set $VLAN up
36

    
37
    echo 1 > "/proc/sys/net/ipv4/conf/$VLAN/proxy_arp"
38

    
39
    ID=$(wc -l < $RT_TABLES)
40
    echo $((ID+1)) $TABLE >> $RT_TABLES
41

    
42
    ip rule add iif $VLAN table $TABLE
43

    
44
    ip route add $SUBNET dev $VLAN table main 
45

    
46
    ip route add $SUBNET dev $VLAN table $TABLE
47
    ip route add default via $GATEWAY dev $VLAN table $TABLE
48
    
49
    echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
50

    
51
    arptables -A OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s  $ARP_IP 
52
  fi
53
fi
54

    
55

    
56

    
57
if [ "$MODE" == "bridged" ]; then
58
  BRIDGE=$LINK
59
  if [ ! -z "$GATEWAY" -a $ENABLE_MASQ ]; then
60
    if [ "$TYPE" == "private" ]; then 
61
      if [ "$HOSTNAME" == "$ROUTER" ]; then
62
        NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}')
63
        ip addr add $GATEWAY/$NETMASK dev $BRIDGE
64
        iptables -t nat -A POSTROUTING -s $SUBNET \! -d 192.168.0.0/16 -j MASQUERADE
65
      fi  
66
    fi
67
  fi
68
fi
69