func cmdAdd(args *skel.CmdArgs) error { tuningConf := TuningConf{} if err := json.Unmarshal(args.StdinData, &tuningConf); err != nil { return fmt.Errorf("failed to load netconf: %v", err) } // The directory /proc/sys/net is per network namespace. Enter in the // network namespace before writing on it. err := ns.WithNetNSPath(args.Netns, false, func(hostNS *os.File) error { for key, value := range tuningConf.SysCtl { fileName := filepath.Join("/proc/sys", strings.Replace(key, ".", "/", -1)) fileName = filepath.Clean(fileName) // Refuse to modify sysctl parameters that don't belong // to the network subsystem. if !strings.HasPrefix(fileName, "/proc/sys/net/") { return fmt.Errorf("invalid net sysctl key: %q", key) } content := []byte(value) err := ioutil.WriteFile(fileName, content, 0644) if err != nil { return err } } return nil }) if err != nil { return err } result := types.Result{} return result.Print() }
func cmdAdd(args *skel.CmdArgs) error { result := types.Result{} if err := rpcCall("DHCP.Allocate", args, &result); err != nil { return err } return result.Print() }
func cmdAdd(args *skel.CmdArgs) error { args.IfName = "lo" // ignore config, this only works for loopback err := ns.WithNetNSPath(args.Netns, false, func(hostNS *os.File) error { link, err := netlink.LinkByName(args.IfName) if err != nil { return err // not tested } err = netlink.LinkSetUp(link) if err != nil { return err // not tested } return nil }) if err != nil { return err // not tested } result := types.Result{} return result.Print() }