diff options
author | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2016-03-11 16:10:46 +0900 |
---|---|---|
committer | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2016-03-17 10:44:44 +0900 |
commit | ee68181ce1be8af7faa4c9ee16a81e513e506499 (patch) | |
tree | 71f7a2ac76154e27110094314463d946daa42124 /server/zclient.go | |
parent | 304523e48aab7aa7bb0063f63ed61de84a6d0b42 (diff) |
server: minor refactoring of zebra related code
move things to more appropriate place
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
Diffstat (limited to 'server/zclient.go')
-rw-r--r-- | server/zclient.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/server/zclient.go b/server/zclient.go index 6cf0af4f..b380e90e 100644 --- a/server/zclient.go +++ b/server/zclient.go @@ -16,7 +16,9 @@ package server import ( + "fmt" log "github.com/Sirupsen/logrus" + "github.com/osrg/gobgp/config" "github.com/osrg/gobgp/packet" "github.com/osrg/gobgp/table" "github.com/osrg/gobgp/zebra" @@ -164,3 +166,28 @@ func handleZapiMsg(msg *zebra.Message, server *BgpServer) []*SenderMsg { return nil } + +func NewZclient(url string, redistRouteTypes []config.InstallProtocolType) (*zebra.Client, error) { + l := strings.SplitN(url, ":", 2) + if len(l) != 2 { + return nil, fmt.Errorf("unsupported url: %s", url) + } + cli, err := zebra.NewClient(l[0], l[1], zebra.ROUTE_BGP) + if err != nil { + return nil, err + } + cli.SendHello() + cli.SendRouterIDAdd() + cli.SendInterfaceAdd() + for _, typ := range redistRouteTypes { + t, err := zebra.RouteTypeFromString(string(typ)) + if err != nil { + return nil, err + } + cli.SendRedistribute(t) + } + if e := cli.SendCommand(zebra.REDISTRIBUTE_DEFAULT_ADD, nil); e != nil { + return nil, e + } + return cli, nil +} |