vcluster-setup: Create $vnode/etc/ganeti directory
[ganeti-local] / tools / kvm-ifup.in
index a5e8c1b..e506d73 100644 (file)
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301, USA.
 
+@SHELL_ENV_INIT@
+
 if [ -z "$INTERFACE" ]; then
-       echo "No network interface specified"
-       exit 1
+  echo "No network interface specified"
+  exit 1
 fi
 
 if [ -z "$MODE" ]; then
-       echo "MODE not specified"
-       exit 1
+  echo "MODE not specified"
+  exit 1
 fi
 
 # Execute the user-supplied network script, if applicable
-if [ -x "@SYSCONFDIR@/ganeti/kvm-vif-bridge" ]; then
-       exec @SYSCONFDIR@/ganeti/kvm-vif-bridge
+if [ -x "$CONF_DIR/kvm-vif-bridge" ]; then
+  exec $CONF_DIR/kvm-vif-bridge
 fi
 
 if [ "$MODE" = "bridged" ]; then
-       # Fix the autogenerated MAC to have the first octet set to "fe"
-       # to discourage the bridge from using the TAP dev's MAC
-       FIXED_MAC=$(ip link show $INTERFACE | awk '{if ($1 == "link/ether") printf("fe%s",substr($2,3,15))}')
-       ip link set $INTERFACE address $FIXED_MAC
+  # Fix the autogenerated MAC to have the first octet set to "fe"
+  # to discourage the bridge from using the TAP dev's MAC
+  FIXED_MAC=$(ip link show $INTERFACE | \
+    awk '{if ($1 == "link/ether") printf("fe%s",substr($2,3,15))}')
+  ip link set $INTERFACE address $FIXED_MAC
+
+  ip link set $INTERFACE up
+  ip link set $INTERFACE mtu $(</sys/class/net/${BRIDGE}/mtu)
+
+  # Connect the interface to the bridge
+  brctl addif $BRIDGE $INTERFACE
 
-       ip link set $INTERFACE up
-       ip link set $INTERFACE mtu $(</sys/class/net/${BRIDGE}/mtu)
+elif [ "$MODE" = "openvswitch" ]; then
+  ovs-vsctl add-port ${LINK} $INTERFACE
 
-       # Connect the interface to the bridge
-       brctl addif $BRIDGE $INTERFACE
 else
-       ip link set $INTERFACE up
+  ip link set $INTERFACE up
 
-       if [ -z "$IP" ]; then
-               echo "Routed NIC but no IP address specified"
-               exit 1
-       fi
+  if [ -z "$IP" ]; then
+    echo "Routed NIC but no IP address specified"
+    exit 1
+  fi
 
-       # Route traffic targeted at the IP to the interface
-       if [ -n "$LINK" ]; then
-               while ip rule del dev $INTERFACE; do :; done
-               ip rule add dev $INTERFACE table $LINK
-               ip route replace $IP table $LINK proto static dev $INTERFACE
+  # Route traffic targeted at the IP to the interface
+  if [ -n "$LINK" ]; then
+    while ip rule del dev $INTERFACE; do :; done
+    ip rule add dev $INTERFACE table $LINK
+    ip route replace $IP table $LINK proto static dev $INTERFACE
 
-       else
-               ip route replace $IP proto static dev $INTERFACE
-       fi
+  else
+    ip route replace $IP proto static dev $INTERFACE
+  fi
 
-       if [ -d "/proc/sys/net/ipv4/conf/$INTERFACE" ]; then
-               echo 1 > /proc/sys/net/ipv4/conf/$INTERFACE/proxy_arp
-               echo 1 > /proc/sys/net/ipv4/conf/$INTERFACE/forwarding
-       fi
+  # Allow routing and arp proxying, or ndp proxying (IPv6)
+  if [ -d "/proc/sys/net/ipv4/conf/$INTERFACE" ]; then
+    echo 1 > /proc/sys/net/ipv4/conf/$INTERFACE/proxy_arp
+    echo 1 > /proc/sys/net/ipv4/conf/$INTERFACE/forwarding
+  fi
 
-       if [ -d "/proc/sys/net/ipv6/conf/$INTERFACE" ]; then
-               echo 1 > /proc/sys/net/ipv6/conf/$INTERFACE/proxy_ndp
-               echo 1 > /proc/sys/net/ipv6/conf/$INTERFACE/forwarding
-       fi
+  if [ -d "/proc/sys/net/ipv6/conf/$INTERFACE" ]; then
+    echo 1 > /proc/sys/net/ipv6/conf/$INTERFACE/proxy_ndp
+    echo 1 > /proc/sys/net/ipv6/conf/$INTERFACE/forwarding
+  fi
 fi