3 source /etc/default/snf-network
8 echo Usage: $0 add/remove
14 NETWORKS="$(ls $SHAREDDIR/networks/)"
18 if [ "$ACTION" == "add" ]; then
19 snf-network-configure-interfaces
22 for NETWORK in $NETWORKS; do
24 NETFILE=$SHAREDDIR/networks/$NETWORK
25 NODEMAPFILE=$SHAREDDIR/mappings/$NETWORK-$HOSTNAME
26 NODEINFRAFILE=$SHAREDDIR/infra/$HOSTNAME
28 RT_TABLES=/etc/iproute2/rt_tables
36 if [ "$ACTION" == "add" ]; then
37 if [ "$MODE" == "routed" ]; then
40 if [ "$TYPE" == "public" ]; then
41 ARP_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}')
45 echo 1 > "/proc/sys/net/ipv4/conf/$VLAN/proxy_arp"
47 ID=$(wc -l < $RT_TABLES)
48 echo $((ID+1)) $TABLE >> $RT_TABLES
50 ip rule add iif $VLAN table $TABLE
52 ip route add $SUBNET dev $VLAN table main
54 ip route add $SUBNET dev $VLAN table $TABLE
55 ip route add default via $GATEWAY dev $VLAN table $TABLE
57 echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
59 arptables -A OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s $ARP_IP
65 if [ "$MODE" == "bridged" ]; then
67 if [ ! -z "$GATEWAY" ]; then
68 if [ "$TYPE" == "private" ]; then
69 if [ "$HOSTNAME" == "$ROUTER" ]; then
70 NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}')
71 ip addr add $GATEWAY/$NETMASK dev $BRIDGE
72 iptables -t nat -A POSTROUTING -s $SUBNET \! -d 192.168.0.0/16 -j MASQUERADE
78 elif [ "$ACTION" == "remove" ]; then
79 if [ ! -e "$NODEMAPFILE" ]; then
85 if [ "$MODE" == "routed" ]; then
88 if [ "$TYPE" == "public" ]; then
89 ARP_IP=$(ipcalc $SUBNET | grep HostMax | awk '{print $2}')
91 arptables -D OUTPUT -o $VLAN --opcode request -j mangle --mangle-ip-s $ARP_IP
93 ip route del default via $GATEWAY dev $VLAN table $TABLE
94 ip route del $SUBNET dev $VLAN table $TABLE
96 ip route del $SUBNET dev $VLAN table main
98 ip rule del iif $VLAN table $TABLE
100 sed -i 's/.*'"$TABLE"'$//' $RT_TABLES
106 if [ "$MODE" == "bridged" ]; then
108 if [ ! -z "$GATEWAY" ]; then
109 if [ "$TYPE" == "private" ]; then
110 if [ "$HOSTNAME" == "$ROUTER" ]; then
111 NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}')
112 ip addr del $GATEWAY/$NETMASK dev $BRIDGE
113 iptables -t nat -D POSTROUTING -s $SUBNET \! -d 192.168.0.0/16 -j MASQUERADE
124 if [ "$ACTION" == "remove" ]; then
125 snf-network-unconfigure-interfaces