xenserver: Remove ip_gre kernel module when other modules are removed
[openvswitch] / xenserver / etc_init.d_vswitch
index bd621c106363a8739810cb455924f0bf8703c4fd..18dd7bc69663f3fae3a14e0369a7e1b55237878e 100755 (executable)
@@ -92,6 +92,9 @@ function insert_modules_if_required {
     if [ -n "$BRCOMPATD_PIDFILE" ] && ! lsmod | grep -q "brcompat_mod"; then
         action "Inserting brcompat module" modprobe brcompat_mod
     fi
+    if [ -f "/lib/modules/`uname -r`/kernel/net/vswitch/ip_gre_mod.ko" ] && ! lsmod | grep -q "ip_gre_mod"; then
+        action "Inserting ip_gre module" modprobe ip_gre_mod
+    fi
 }
 
 function remove_modules {
@@ -101,6 +104,9 @@ function remove_modules {
     if lsmod | grep -q "openvswitch_mod"; then
         action "Removing openvswitch module" rmmod openvswitch_mod.ko
     fi
+    if lsmod | grep -q "ip_gre_mod"; then
+        action "Removing ip_gre module" rmmod ip_gre_mod.ko
+    fi
 }
 
 function reload_vswitchd {
@@ -258,6 +264,9 @@ function start {
     # ovs-vswitchd needs a few per bridge
     ulimit -n 4096
 
+    # Allow GRE traffic.
+    iptables -I INPUT -p gre -j ACCEPT
+
     if [ ! -e "$VSWITCHD_CONF" ]; then
         warning "$VSWITCHD_CONF does not exist"
         action "Creating empty $VSWITCHD_CONF" touch "$VSWITCHD_CONF"