mirror of
https://github.com/osrg/gobgp.git
synced 2024-05-11 05:55:10 +00:00
ops: add feature that monitoring route of gobgp
This commit is contained in:
committed by
FUJITA Tomonori
parent
4e03f6ae68
commit
bbd5a2cfae
+1
-1
@@ -161,7 +161,7 @@ func main() {
|
||||
log.Errorf("Failed to start ops config manager: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
go m.Serve()
|
||||
m.Serve()
|
||||
} else if opts.ConfigFile != "" {
|
||||
go config.ReadConfigfileServe(opts.ConfigFile, opts.ConfigType, configCh, reloadCh)
|
||||
reloadCh <- true
|
||||
|
||||
@@ -239,6 +239,12 @@ func (m *OpsManager) handleNeighborUpdate(update ovsdb.TableUpdate) []*server.Gr
|
||||
}
|
||||
|
||||
func (m *OpsManager) Serve() error {
|
||||
go m.OpsServe()
|
||||
go m.GobgpServe()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *OpsManager) OpsServe() error {
|
||||
initial, err := m.client.MonitorAll("OpenSwitch", "")
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -297,6 +303,42 @@ func (m *OpsManager) Serve() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *OpsManager) GobgpServe() error {
|
||||
family := bgp.RF_IPv4_UC
|
||||
arg := &api.Arguments{
|
||||
Resource: api.Resource_GLOBAL,
|
||||
Family: uint32(family),
|
||||
}
|
||||
|
||||
stream, err := client.MonitorBestChanged(context.Background(), arg)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
for {
|
||||
d, err := stream.Recv()
|
||||
if err == io.EOF {
|
||||
break
|
||||
} else if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
p, err := ApiStruct2Path(d.Paths[0])
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if globalOpts.Json {
|
||||
j, _ := json.Marshal(p)
|
||||
fmt.Println(string(j))
|
||||
} else {
|
||||
ShowRoute(p, false, false, false, true, false)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewOpsManager(ch chan *server.GrpcRequest) (*OpsManager, error) {
|
||||
cli, err := ovsdb.ConnectUnix("")
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user