From 4c63ed5d87f28ba2a829cec8cb65c01388a703ed Mon Sep 17 00:00:00 2001 From: Satoshi Fujimoto Date: Tue, 29 May 2018 15:41:25 +0900 Subject: config: Change "RedistributeRouteTypeList" to []string RedistributeRouteTypeList is []InstallProtocolType, but InstallProtocolType only defines limited number of protocols, And currently, EnableZebra() in gRPC API validates its request with the protocols defined by InstallProtocolType, so the protocols such as "babel" or "lldp" could not be configured to Zebra, via gRPC API. This patch fixes RedistributeRouteTypeList to be []string, and fixes EnableZebra() to validate with the protocols defined in zapi.go. Signed-off-by: Satoshi Fujimoto --- api/grpc_server.go | 8 +++----- config/bgp_configs.go | 4 ++-- tools/pyang_plugins/gobgp.yang | 4 +--- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/api/grpc_server.go b/api/grpc_server.go index 0f5167ae..32fc4567 100644 --- a/api/grpc_server.go +++ b/api/grpc_server.go @@ -37,6 +37,7 @@ import ( "github.com/osrg/gobgp/packet/bgp" "github.com/osrg/gobgp/server" "github.com/osrg/gobgp/table" + "github.com/osrg/gobgp/zebra" ) type Server struct { @@ -970,17 +971,14 @@ func (s *Server) GetRoa(ctx context.Context, arg *GetRoaRequest) (*GetRoaRespons } func (s *Server) EnableZebra(ctx context.Context, arg *EnableZebraRequest) (*EnableZebraResponse, error) { - l := make([]config.InstallProtocolType, 0, len(arg.RouteTypes)) for _, p := range arg.RouteTypes { - if err := config.InstallProtocolType(p).Validate(); err != nil { + if _, err := zebra.RouteTypeFromString(p); err != nil { return &EnableZebraResponse{}, err - } else { - l = append(l, config.InstallProtocolType(p)) } } return &EnableZebraResponse{}, s.bgpServer.StartZebraClient(&config.ZebraConfig{ Url: arg.Url, - RedistributeRouteTypeList: l, + RedistributeRouteTypeList: arg.RouteTypes, Version: uint8(arg.Version), NexthopTriggerEnable: arg.NexthopTriggerEnable, NexthopTriggerDelay: uint8(arg.NexthopTriggerDelay), diff --git a/config/bgp_configs.go b/config/bgp_configs.go index 062ef8f7..8268769e 100644 --- a/config/bgp_configs.go +++ b/config/bgp_configs.go @@ -1114,7 +1114,7 @@ type ZebraState struct { // Configure url for zebra. Url string `mapstructure:"url" json:"url,omitempty"` // original -> gobgp:redistribute-route-type - RedistributeRouteTypeList []InstallProtocolType `mapstructure:"redistribute-route-type-list" json:"redistribute-route-type-list,omitempty"` + RedistributeRouteTypeList []string `mapstructure:"redistribute-route-type-list" json:"redistribute-route-type-list,omitempty"` // original -> gobgp:version // Configure version of zebra protocol. Default is 2. Supported up to 3. Version uint8 `mapstructure:"version" json:"version,omitempty"` @@ -1135,7 +1135,7 @@ type ZebraConfig struct { // Configure url for zebra. Url string `mapstructure:"url" json:"url,omitempty"` // original -> gobgp:redistribute-route-type - RedistributeRouteTypeList []InstallProtocolType `mapstructure:"redistribute-route-type-list" json:"redistribute-route-type-list,omitempty"` + RedistributeRouteTypeList []string `mapstructure:"redistribute-route-type-list" json:"redistribute-route-type-list,omitempty"` // original -> gobgp:version // Configure version of zebra protocol. Default is 2. Supported up to 3. Version uint8 `mapstructure:"version" json:"version,omitempty"` diff --git a/tools/pyang_plugins/gobgp.yang b/tools/pyang_plugins/gobgp.yang index 053ef0a0..639edd10 100644 --- a/tools/pyang_plugins/gobgp.yang +++ b/tools/pyang_plugins/gobgp.yang @@ -1191,9 +1191,7 @@ module gobgp { "Configure url for zebra."; } leaf-list redistribute-route-type { - type identityref { - base ptypes:install-protocol-type; - } + type string; } leaf version { type uint8; -- cgit v1.2.3