HOSTNAME=$(hostname)
-INTERFACES=$SHAREDDIR/interfaces/$HOSTNAME
-HOSTINFRA=$SHAREDDIR/infra/$HOSTNAME
+INTERFACES=$STATE_DIR/interfaces
+HOSTINFRA=$STATE_DIR/infra
-if [ -e "$HOSTINFRA" ]; then
- source $HOSTINFRA
-fi
-
-if [ -e /proc/sys/net/ipv4/conf/$PUBLIC_BRIDGE -o \
- -e /proc/sys/net/ipv4/conf/$PUBLIC_VLAN -o \
- -e /proc/sys/net/ipv4/conf/$PRIVATE_VLAN -o \
- -e /proc/sys/net/ipv4/conf/$PRIVATE_BRIDGE ]; then
- echo Interfaces already exist! Please check:
- echo $PUBLIC_BRIDGE for bridging TAPs with public IPs
- echo $PUBLIC_VLAN for routing TAPs with public IPs
- echo $PRIVATE_VLAN bridged on $PRIVATE_BRIDGE for private LANs
+if [ ! -e "$HOSTINFRA" ]; then
+ echo "A host infra file must exist"
+ echo "Run snf-network-build-host-infra"
exit 1
fi
+source $HOSTINFRA
+
+DONOTIFUP=false
+
+check_iface(){
+ if [ -n "$1" -a -e /proc/sys/net/ipv4/conf/$1 ]; then
+ echo Interface $1 already exist! Please check
+ export DONOTIFUP=true
+ fi
+}
-PUBLIC_INTERFACE=$(ip route | grep default | awk '{print $5}')
-PUBLIC_MAC=$(ip link show $PUBLIC_INTERFACE | grep link/ether | awk '{print $2}')
+check_iface "$PUBLIC_BRIDGE"
+check_iface "$PUBLIC_IFACE.$PUBLIC_VLAN_ID"
+check_iface "$PUBLIC_IFACE.$PRIVATE_VLAN_ID"
+check_iface "$PRIVATE_BRIDGE"
-if [ -n "$PUBLIC_BRIDGE" -a -n "$PUBLIC_INTERFACE" ]; then
- cat > $INTERFACES<<EOF
+if [ -n "$PRIVATE_VLAN_ID_OFFSET" ]; then
+ for id in `seq $PRIVATE_VLAN_ID_MIN 1 $PRIVATE_VLAN_ID_MAX`; do
+ check_iface $PUBLIC_IFACE.$((PRIVATE_VLAN_ID_OFFSET+id))
+ check_iface $BRIDGE_PREFIX$id
+ done
+fi
+
+(
+
+if [ -n "$PUBLIC_BRIDGE" -a -n "$PUBLIC_IFACE" ]; then
+ cat<<EOF
auto $PUBLIC_BRIDGE
iface $PUBLIC_BRIDGE inet manual
- bridge_ports $PUBLIC_INTERFACE
+ bridge_ports $PUBLIC_IFACE
bridge_stp off
bridge_fd 2
post-up ip link set $PUBLIC_BRIDGE address $PUBLIC_MAC
else
if [ -n "$PUBLIC_VLAN" ]; then
- cat >> $INTERFACES<<EOF
+ cat<<EOF
auto $PUBLIC_VLAN
iface $PUBLIC_VLAN inet manual
EOF
+ fi
if [ -n "$PRIVATE_VLAN" -a -n "$PRIVATE_BRIDGE" ]; then
- cat >> $INTERFACES<<EOF
+ cat<<EOF
auto $PRIVATE_VLAN
iface $PRIVATE_VLAN inet manual
post-up ip link set $PRIVATE_BRIDGE address $PUBLIC_MAC
EOF
+ fi
+ if [ -n "$PRIVATE_VLAN_ID_OFFSET" ]; then
+ HELPER="$PRIVATE_VLAN_ID_MIN $PRIVATE_VLAN_ID_MAX $PRIVATE_VLAN_ID_OFFSET"
+ cat<<EOF
+auto prv
+iface prv inet manual
+ up prv-net-helper up $PUBLIC_IFACE $HELPER $BRIDGE_PREFIX
+ down prv-net-helper down $PUBLIC_IFACE $HELPER $BRIDGE_PREFIX
+
+EOF
fi
+
fi
-ifup -i $INTERFACES -a
-
+) > $INTERFACES
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
+echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
+
+if $DONOTIFUP; then
+ echo Check interfaces:
+ cat $INTERFACES
+ exit 1
+fi
+
+ifup -i $INTERFACES -a