mirror of
https://github.com/osrg/gobgp.git
synced 2024-05-11 05:55:10 +00:00
+480
-422
File diff suppressed because it is too large
Load Diff
@@ -50,6 +50,7 @@ service GobgpApi {
|
||||
rpc ResetRpki(ResetRpkiRequest) returns (ResetRpkiResponse) {}
|
||||
rpc SoftResetRpki(SoftResetRpkiRequest) returns (SoftResetRpkiResponse) {}
|
||||
rpc GetRoa(GetRoaRequest) returns (GetRoaResponse) {}
|
||||
rpc EnableZebra(EnableZebraRequest) returns (EnableZebraResponse) {}
|
||||
rpc AddVrf(AddVrfRequest) returns (AddVrfResponse) {}
|
||||
rpc DeleteVrf(DeleteVrfRequest) returns (DeleteVrfResponse) {}
|
||||
rpc GetVrf(GetVrfRequest) returns (GetVrfResponse) {}
|
||||
@@ -289,6 +290,14 @@ message SoftResetRpkiRequest {
|
||||
message SoftResetRpkiResponse {
|
||||
}
|
||||
|
||||
message EnableZebraRequest {
|
||||
string url = 1;
|
||||
repeated string route_types = 2;
|
||||
}
|
||||
|
||||
message EnableZebraResponse {
|
||||
}
|
||||
|
||||
message GetVrfRequest {
|
||||
}
|
||||
|
||||
|
||||
@@ -688,6 +688,21 @@ func (s *Server) GetRoa(ctx context.Context, arg *GetRoaRequest) (*GetRoaRespons
|
||||
return &GetRoaResponse{Roas: l}, nil
|
||||
}
|
||||
|
||||
func (s *Server) EnableZebra(ctx context.Context, arg *EnableZebraRequest) (*EnableZebraResponse, error) {
|
||||
l := []config.InstallProtocolType{}
|
||||
for _, p := range arg.RouteTypes {
|
||||
if err := config.InstallProtocolType(p).Validate(); err != nil {
|
||||
return &EnableZebraResponse{}, err
|
||||
} else {
|
||||
l = append(l, config.InstallProtocolType(p))
|
||||
}
|
||||
}
|
||||
return &EnableZebraResponse{}, s.bgpServer.StartZebraClient(&config.ZebraConfig{
|
||||
Url: arg.Url,
|
||||
RedistributeRouteTypeList: l,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *Server) GetVrf(ctx context.Context, arg *GetVrfRequest) (*GetVrfResponse, error) {
|
||||
toApi := func(v *table.Vrf) *Vrf {
|
||||
f := func(rts []bgp.ExtendedCommunityInterface) [][]byte {
|
||||
|
||||
+1
-1
@@ -212,7 +212,7 @@ func main() {
|
||||
log.Fatalf("failed to set global config: %s", err)
|
||||
}
|
||||
if newConfig.Zebra.Config.Enabled {
|
||||
if err := bgpServer.StartZebraClient(&newConfig.Zebra); err != nil {
|
||||
if err := bgpServer.StartZebraClient(&newConfig.Zebra.Config); err != nil {
|
||||
log.Fatalf("failed to set zebra config: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-3
@@ -875,7 +875,7 @@ func (s *BgpServer) StartCollector(c *config.CollectorConfig) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *BgpServer) StartZebraClient(x *config.Zebra) (err error) {
|
||||
func (s *BgpServer) StartZebraClient(c *config.ZebraConfig) (err error) {
|
||||
ch := make(chan struct{})
|
||||
defer func() { <-ch }()
|
||||
|
||||
@@ -885,8 +885,6 @@ func (s *BgpServer) StartZebraClient(x *config.Zebra) (err error) {
|
||||
if s.zclient != nil {
|
||||
err = fmt.Errorf("already connected to Zebra")
|
||||
} else {
|
||||
c := x.Config
|
||||
|
||||
protos := make([]string, 0, len(c.RedistributeRouteTypeList))
|
||||
for _, p := range c.RedistributeRouteTypeList {
|
||||
protos = append(protos, string(p))
|
||||
|
||||
Reference in New Issue
Block a user