Allow using built-in modules

Signed-off-by: 's avatarWenxuan Zhao <viz@linux.com>
parent 1d42fc97
...@@ -2,6 +2,7 @@ package syssetup ...@@ -2,6 +2,7 @@ package syssetup
import ( import (
"io/ioutil" "io/ioutil"
"os"
"os/exec" "os/exec"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
...@@ -12,11 +13,20 @@ var ( ...@@ -12,11 +13,20 @@ var (
forward = "/proc/sys/net/ipv4/ip_forward" forward = "/proc/sys/net/ipv4/ip_forward"
) )
func Configure() error { func loadKernelModule(moduleName string) {
if err := exec.Command("modprobe", "br_netfilter").Run(); err != nil { if _, err := os.Stat("/sys/module/" + moduleName); err == nil {
logrus.Warnf("failed to start br_netfilter module") logrus.Infof("module %s was already loaded", moduleName)
return nil return
}
if err := exec.Command("modprobe", moduleName).Run(); err != nil {
logrus.Warnf("failed to start %s module", moduleName)
} }
}
func Configure() error {
loadKernelModule("br_netfilter")
if err := ioutil.WriteFile(callIPTablesFile, []byte("1"), 0640); err != nil { if err := ioutil.WriteFile(callIPTablesFile, []byte("1"), 0640); err != nil {
logrus.Warnf("failed to write value 1 at %s: %v", callIPTablesFile, err) logrus.Warnf("failed to write value 1 at %s: %v", callIPTablesFile, err)
return nil return nil
...@@ -26,13 +36,8 @@ func Configure() error { ...@@ -26,13 +36,8 @@ func Configure() error {
return nil return nil
} }
if err := exec.Command("modprobe", "overlay").Run(); err != nil { loadKernelModule("overlay")
logrus.Warnf("failed to start overlay module") loadKernelModule("nf_conntrack")
return nil
}
if err := exec.Command("modprobe", "nf_conntrack").Run(); err != nil {
logrus.Warnf("failed to start nf_conntrack module")
return nil
}
return nil return nil
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment