3 DIR=/var/lib/snf-network
9 source /etc/default/snf-network
12 echo "$0 <network> <nodegroup> <mode> <link>"
16 NETWORK_FILE=$DIR/networks/$NETWORK
17 NODEGROUP_FILE=$DIR/nodegoups/$NODEGROUP
18 INTERFACES=$DIR/interfaces/$NETWORK-$NODEGROUP
21 source $NODEGROUP_FILE
23 if [ $MODE == "routed" ]; then
25 if [ $TYPE == "public" ]; then
26 APR_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}')
27 cat > $INTERFACES<<EOF
30 iface $VLAN inet manual
31 # ip-routing-table rt_$NETWORK
38 ifup -i $INTERFACES $VLAN
41 ip rule add iif $VLAN table rt_$NAME
43 ip route add $SUBNET dev $VLAN table main
45 ip route add $SUBNET dev $VLAN table rt_$NAME
46 ip route add default via $GATEWAY dev $VLAN table rt_$NAME
48 echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
50 arptables -A OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s $ARP_IP
56 if [ $MODE == "bridged" ]; then
58 echo 1 > /proc/sys/net/ipv4/ip_forward
59 if [ $TYPE == "public" ]; then
60 VLAN=$INTERFACE.$PUBLIC_VLAN_ID
61 elif [ $TYPE == "private" ]; then
62 VLAN_ID=${PRIVATE_VLAN_IDS%% *}
63 VLAN_IDS=${PRIVATE_VLAN_IDS#* }
64 sed -i 's/PRIVATE_VLAN_IDS/ s/=.*/='"VLAN_IDS"'/' $NODEGROUP_FILE
65 #set -- $PRIVATE_VLAN_IDS
69 VLAN=$INTERFACE.$VLAN_ID
71 cat > $INTERFACES <<EOF
74 iface $VLAN inet manual
77 iface $BRIDGE inet manual
82 ifup -i $INTERFACES $BRIDGE
84 ip route add $SUBNET dev $BRIDGE table main
86 ip route add $SUBNET dev $BRIDGE table rt_$NETWORK
87 if [ ! -z $GATEWAY ]; then
88 ip route add default via dev $BRIDGE table rt_$NETWORK
89 if [ $TYPE == "private" ]; then
90 if [ ! -z $ROUTER ]; then
91 if [ $(hostname) == $ROUTER ]; then
92 NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}')
93 ip addr add $GATEWAY/$NETMASK dev $BRIDGE
94 iptables -t nat -A POSTROUTING -s $SUBNET \! -d $SUBNET -j MASQUERADE