Statistics
| Branch: | Tag: | Revision:

root / hooks / network-connect-post.d / snf-network @ a9872828

History | View | Annotate | Download (2 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
GROUP=$GANETI_GROUP_NAME
8 6e257ba8 Dimitris Aragiorgis
NETWORK=$GANETI_GROUP_NETWORK_NAME
9 6e257ba8 Dimitris Aragiorgis
MODE=$GANETI_GROUP_NETWORK_MODE
10 6e257ba8 Dimitris Aragiorgis
LINK=$GANETI_GROUP_NETWORK_LINK
11 6e257ba8 Dimitris Aragiorgis
12 6e257ba8 Dimitris Aragiorgis
HOSTNAME=$(hostname)
13 6e257ba8 Dimitris Aragiorgis
14 6e257ba8 Dimitris Aragiorgis
NETFILE=$SHAREDDIR/networks/$NETWORK
15 6e257ba8 Dimitris Aragiorgis
NODEMAPFILE=$SHAREDDIR/mappings/$NETWORK-$HOSTNAME
16 6e257ba8 Dimitris Aragiorgis
NODEINFRAFILE=$SHAREDDIR/infra/$HOSTNAME
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 a9872828 Dimitris Aragiorgis
26 6e257ba8 Dimitris Aragiorgis
cat > $NODEMAPFILE <<EOF
27 6e257ba8 Dimitris Aragiorgis
MODE=$MODE
28 6e257ba8 Dimitris Aragiorgis
LINK=$LINK
29 6e257ba8 Dimitris Aragiorgis
EOF
30 6e257ba8 Dimitris Aragiorgis
31 6e257ba8 Dimitris Aragiorgis
32 6e257ba8 Dimitris Aragiorgis
source $NODEINFRAFILE
33 6e257ba8 Dimitris Aragiorgis
source $NETFILE
34 6e257ba8 Dimitris Aragiorgis
35 6e257ba8 Dimitris Aragiorgis
if [ "$MODE" == "routed" ]; then 
36 6e257ba8 Dimitris Aragiorgis
  TABLE=rt_$NETWORK
37 6e257ba8 Dimitris Aragiorgis
  if [ "$TYPE" == "public" ]; then
38 63a8d2cc Dimitris Aragiorgis
    VLAN=$PUBLIC_VLAN
39 6e257ba8 Dimitris Aragiorgis
    ARP_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}')
40 6e257ba8 Dimitris Aragiorgis
    
41 6e257ba8 Dimitris Aragiorgis
    ip link set $VLAN up
42 6e257ba8 Dimitris Aragiorgis
43 6e257ba8 Dimitris Aragiorgis
    echo 1 > "/proc/sys/net/ipv4/conf/$VLAN/proxy_arp"
44 6e257ba8 Dimitris Aragiorgis
45 6e257ba8 Dimitris Aragiorgis
    ID=$(wc -l < $RT_TABLES)
46 6e257ba8 Dimitris Aragiorgis
    echo $((ID+1)) $TABLE >> $RT_TABLES
47 6e257ba8 Dimitris Aragiorgis
48 a9872828 Dimitris Aragiorgis
    if [ -n "$SUBNET" ]; then
49 a9872828 Dimitris Aragiorgis
      ip rule add iif $VLAN table $TABLE
50 6e257ba8 Dimitris Aragiorgis
51 a9872828 Dimitris Aragiorgis
      ip route add $SUBNET dev $VLAN table main 
52 6e257ba8 Dimitris Aragiorgis
53 a9872828 Dimitris Aragiorgis
      ip route add $SUBNET dev $VLAN table $TABLE
54 a9872828 Dimitris Aragiorgis
      if [ -n "$GATEWAY" ]; then
55 a9872828 Dimitris Aragiorgis
        ip route add default via $GATEWAY dev $VLAN table $TABLE
56 a9872828 Dimitris Aragiorgis
      fi
57 a9872828 Dimitris Aragiorgis
      echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
58 a9872828 Dimitris Aragiorgis
59 a9872828 Dimitris Aragiorgis
      arptables -A OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s  $ARP_IP 
60 a9872828 Dimitris Aragiorgis
    fi
61 6e257ba8 Dimitris Aragiorgis
62 a9872828 Dimitris Aragiorgis
    if [ -n "$SUBNET6" ]; then
63 a9872828 Dimitris Aragiorgis
      ip -6 rule add iif $VLAN table $TABLE
64 a9872828 Dimitris Aragiorgis
      ip -6 route add $SUBNET6 dev $VLAN table main
65 a9872828 Dimitris Aragiorgis
      ip -6 route add $SUBNET6 dev $VLAN table $TABLE
66 a9872828 Dimitris Aragiorgis
      if [ -n "$GATEWAY6" ]; then
67 a9872828 Dimitris Aragiorgis
        ip -6 route add default via $GATEWAY6 dev $VLAN table $TABLE
68 a9872828 Dimitris Aragiorgis
      fi
69 a9872828 Dimitris Aragiorgis
      echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
70 a9872828 Dimitris Aragiorgis
      echo 1 > /proc/sys/net/ipv6/conf/$VLAN/proxy_ndp
71 a9872828 Dimitris Aragiorgis
    fi
72 6e257ba8 Dimitris Aragiorgis
  fi
73 6e257ba8 Dimitris Aragiorgis
fi
74 6e257ba8 Dimitris Aragiorgis
75 6e257ba8 Dimitris Aragiorgis
76 6e257ba8 Dimitris Aragiorgis
77 6e257ba8 Dimitris Aragiorgis
if [ "$MODE" == "bridged" ]; then
78 6e257ba8 Dimitris Aragiorgis
  BRIDGE=$LINK
79 6e257ba8 Dimitris Aragiorgis
  if [ ! -z "$GATEWAY" -a $ENABLE_MASQ ]; then
80 6e257ba8 Dimitris Aragiorgis
    if [ "$TYPE" == "private" ]; then 
81 6e257ba8 Dimitris Aragiorgis
      if [ "$HOSTNAME" == "$ROUTER" ]; then
82 6e257ba8 Dimitris Aragiorgis
        NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}')
83 6e257ba8 Dimitris Aragiorgis
        ip addr add $GATEWAY/$NETMASK dev $BRIDGE
84 6e257ba8 Dimitris Aragiorgis
        iptables -t nat -A POSTROUTING -s $SUBNET \! -d 192.168.0.0/16 -j MASQUERADE
85 6e257ba8 Dimitris Aragiorgis
      fi  
86 6e257ba8 Dimitris Aragiorgis
    fi
87 6e257ba8 Dimitris Aragiorgis
  fi
88 6e257ba8 Dimitris Aragiorgis
fi