Move setting up addresses for a container, into weaveutil-invoked function

This means we only change netns by execing nsenter: changing netns in
Go is unsafe for long-running processes like the proxy.
This commit is contained in:
Bryan Boreham committed 2017-06-16 13:19:08 +00:00
1 parent 97e0fcb765
commit 28aa181480
3 files changed
+78 -51

No files matched your search

+1
View File
@@ -32,6 +32,7 @@ func init() {
"check-iface": checkIface,
"del-iface": delIface,
"setup-iface": setupIface,
"setup-iface-addrs": setupIfaceAddrs,
"list-netdevs": listNetDevs,
"cni-net": cniNet,
"cni-ipam": cniIPAM,
+20
View File
@@ -50,6 +50,26 @@ func setupIface(args []string) error {
return weavenet.SetupIface(ifaceName, newIfName)
}
// setupIfaceAddrs sets up addresses on an interface. It expects to be called inside the container's netns.
func setupIfaceAddrs(args []string) error {
if len(args) < 1 {
cmdUsage("setup-iface-addrs", "<iface-name> <with-multicast> <cidr>...")
}
link, err := netlink.LinkByName(args[0])
if err != nil {
return err
}
withMulticastRoute, err := strconv.ParseBool(args[1])
if err != nil {
return err
}
cidrs, err := parseCIDRs(args[2:])
if err != nil {
return err
}
return weavenet.SetupIfaceAddrs(link, withMulticastRoute, cidrs)
}
func configureARP(args []string) error {
if len(args) != 2 {
cmdUsage("configure-arp", "<iface-name-prefix> <root-path>")