Statistics
| Branch: | Tag: | Revision:

root / modify-network @ cf51ea5b

History | View | Annotate | Download (1.4 kB)

1
#!/bin/bash
2

    
3
DIR=/var/lib/snf-network
4
NEW_GATEWAY=$1
5
NEW_TYPE=$2
6
NETWORK=$3
7
RT_TABLES=/etc/iproute2/rt_tables
8

    
9
if [ $# -ne 3 ]; then
10
  echo "$0 <gateway> <private/public> <name>"
11
  exit 1
12
fi
13

    
14
source /etc/default/snf-network
15

    
16
NETWORK_FILE=$DIR/networks/$NETWORK
17

    
18
source $NETWORK_FILE
19

    
20
OLD_GATEWAY=$GATEWAY
21
OLD_TYPE=$TYPE
22

    
23
INTERFACES=$(ls $DIR/interfaces/$NETWORK-*)
24

    
25

    
26
for IFACES in $INTERFACES ; do
27
  
28
  NODEGROUP=$(echo $IFACES | sed 's/.*interfaces.*-//')
29
  source $DIR/nodegroups/$NODEGROUP
30

    
31
  read x VLAN MODE BRIDGE < $INTERFACES
32

    
33
  if [ $MODE == "routed" ]; then 
34
    if [ $TYPE == "public" ]; then
35
      ip route replace default via $GATEWAY dev $VLAN table rt_$NETWORK
36
    fi
37
  fi
38

    
39
  if [ $MODE == "bridged" ]; then
40
    if [ ! -z $GATEWAY ]; then
41
      ip route replace default via $GATEWAY dev $BRIDGE table rt_$NETWORK
42
      if [ $TYPE == "private" ]; then 
43
        if [ ! -z $ROUTER ]; then 
44
          if [ $(hostname) == $ROUTER ]; then
45
            NETMASK=$(ipcalc $SUBNET | grep Netmask | awk '{print $4}')
46
            ip addr del $GATEWAY/$NETMASK dev $BRIDGE  
47
            ip addr add $NEW_GATEWAY/$NETMASK dev $BRIDGE  
48
          fi  
49
        fi
50
      fi
51
    fi
52
  fi
53

    
54
  if [ ! -z $NEW_GATEWAY ]; then 
55
    sed -i '/^GATEWAY/ s/=.*/='"$NEW_GATEWAY"'/' $NETWORK_FILE 
56
  fi
57

    
58
  if [ ! -z $NEW_TYPE ]; then
59
    sed -i '/^TYPE/ s/=.*/='"$NEW_TYPE"'/' $NETWORK_FILE
60
  fi 
61

    
62
done