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 |