From 167bca193103b3825816c1cd09b1fb9d7e78521c Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Thu, 16 Jan 2020 18:28:54 +0800 Subject: [PATCH] hostman: replace route command dep with netlink call --- pkg/hostman/hostinfo/hostbridge/hostbridge.go | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/pkg/hostman/hostinfo/hostbridge/hostbridge.go b/pkg/hostman/hostinfo/hostbridge/hostbridge.go index c7b9c1f2da..b19902d356 100644 --- a/pkg/hostman/hostinfo/hostbridge/hostbridge.go +++ b/pkg/hostman/hostinfo/hostbridge/hostbridge.go @@ -29,7 +29,6 @@ import ( "yunion.io/x/onecloud/pkg/util/fileutils2" "yunion.io/x/onecloud/pkg/util/iproute2" "yunion.io/x/onecloud/pkg/util/netutils2" - "yunion.io/x/onecloud/pkg/util/procutils" ) type IBridgeDriver interface { @@ -228,17 +227,14 @@ func (d *SBaseBridgeDriver) SetupSlaveAddresses(slaveAddrs [][]string) error { } func (d *SBaseBridgeDriver) SetupRoutes(routes [][]string) error { - for _, r := range routes { - var cmd []string - if r[2] == "0.0.0.0" { - cmd = []string{"route", "add", "default", "gw", r[1], "dev", d.bridge.String()} - } else { - cmd = []string{"route", "add", "-net", r[0], "netmask", r[2], "gw", r[1], "dev", d.bridge.String()} - } - if _, err := procutils.NewCommand(cmd[0], cmd[1:]...).Output(); err != nil { - log.Errorln(err) - return fmt.Errorf("Failed to add slave address to bridge %s", d.bridge) - } + br := d.bridge.String() + r := iproute2.NewRoute(br) + for _, route := range routes { + netStr, maskStr, gwStr := route[0], route[2], route[1] + r.Add(netStr, maskStr, gwStr) + } + if err := r.Err(); err != nil { + return errors.Wrapf(err, "set routes on %s", br) } return nil }