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:
1 parent
97e0fcb765
commit
28aa181480
3 files changed
+78
-51
No files matched your search
@@ -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,
|
||||
|
||||
@@ -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>")
|
||||
|
||||
Reference in new issue
Block a user