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 | |
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')
-rw-r--r-- | server/server.go | 35 | ||||
-rw-r--r-- | server/zclient.go | 27 |
2 files changed, 30 insertions, 32 deletions
diff --git a/server/server.go b/server/server.go index fc60ef63..a03fd92e 100644 --- a/server/server.go +++ b/server/server.go @@ -30,7 +30,6 @@ import ( "net" "os" "strconv" - "strings" "sync" "time" ) @@ -235,14 +234,12 @@ func (server *BgpServer) Serve() { w, _ := newGrpcIncomingWatcher() server.watchers[WATCHER_GRPC_INCOMING] = w - if g.Zebra.Enabled == true { - if g.Zebra.Url == "" { - g.Zebra.Url = "unix:/var/run/quagga/zserv.api" - } - err := server.NewZclient(g.Zebra.Url, g.Zebra.RedistributeRouteTypeList) + if g.Zebra.Enabled { + cli, err := NewZclient(g.Zebra.Url, g.Zebra.RedistributeRouteTypeList) if err != nil { log.Error(err) } + server.zclient = cli } senderCh := make(chan *SenderMsg, 1<<16) @@ -3059,29 +3056,3 @@ func (server *BgpServer) mkMrtRibMsgs(tbl *table.Table, t uint32) ([]*bgp.MRTMes } return msgs, nil } - -func (server *BgpServer) NewZclient(url string, redistRouteTypes []config.InstallProtocolType) error { - l := strings.SplitN(url, ":", 2) - if len(l) != 2 { - return fmt.Errorf("unsupported url: %s", url) - } - cli, err := zebra.NewClient(l[0], l[1], zebra.ROUTE_BGP) - if err != nil { - return err - } - cli.SendHello() - cli.SendRouterIDAdd() - cli.SendInterfaceAdd() - for _, typ := range redistRouteTypes { - t, err := zebra.RouteTypeFromString(string(typ)) - if err != nil { - return err - } - cli.SendRedistribute(t) - } - if e := cli.SendCommand(zebra.REDISTRIBUTE_DEFAULT_ADD, nil); e != nil { - return e - } - server.zclient = cli - return nil -} 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 +} |