diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/bgp_configs.go | 984 | ||||
-rw-r--r-- | config/default.go | 66 | ||||
-rw-r--r-- | config/serve.go | 12 | ||||
-rw-r--r-- | config/util.go | 10 |
4 files changed, 498 insertions, 574 deletions
diff --git a/config/bgp_configs.go b/config/bgp_configs.go index c2ce2deb..d5f6975d 100644 --- a/config/bgp_configs.go +++ b/config/bgp_configs.go @@ -451,1416 +451,1386 @@ type BmpServerState struct { type BmpServerConfig struct { // original -> gobgp:address //gobgp:address's original type is inet:ip-address - Address string + Address string `mapstructure:"address"` // original -> gobgp:port - Port uint32 + Port uint32 `mapstructure:"port"` // original -> gobgp:route-monitoring-policy - RouteMonitoringPolicy BmpRouteMonitoringPolicyType + RouteMonitoringPolicy BmpRouteMonitoringPolicyType `mapstructure:"route-monitoring-policy"` } //struct for container gobgp:bmp-server type BmpServer struct { // original -> gobgp:address //gobgp:address's original type is inet:ip-address - Address string + Address string `mapstructure:"address"` // original -> gobgp:bmp-server-config - Config BmpServerConfig + Config BmpServerConfig `mapstructure:"config"` // original -> gobgp:bmp-server-state - State BmpServerState -} - -//struct for container gobgp:bmp-servers -type BmpServers struct { - // original -> gobgp:bmp-server - BmpServerList []BmpServer + State BmpServerState `mapstructure:"state"` } //struct for container gobgp:rpki-received type RpkiReceived struct { // original -> gobgp:serial-notify - SerialNotify int64 + SerialNotify int64 `mapstructure:"serial-notify"` // original -> gobgp:cache-reset - CacheReset int64 + CacheReset int64 `mapstructure:"cache-reset"` // original -> gobgp:cache-response - CacheResponse int64 + CacheResponse int64 `mapstructure:"cache-response"` // original -> gobgp:ipv4-prefix - Ipv4Prefix int64 + Ipv4Prefix int64 `mapstructure:"ipv4-prefix"` // original -> gobgp:ipv6-prefix - Ipv6Prefix int64 + Ipv6Prefix int64 `mapstructure:"ipv6-prefix"` // original -> gobgp:end-of-data - EndOfData int64 + EndOfData int64 `mapstructure:"end-of-data"` // original -> gobgp:error - Error int64 + Error int64 `mapstructure:"error"` } //struct for container gobgp:rpki-sent type RpkiSent struct { // original -> gobgp:serial-query - SerialQuery int64 + SerialQuery int64 `mapstructure:"serial-query"` // original -> gobgp:reset-query - ResetQuery int64 + ResetQuery int64 `mapstructure:"reset-query"` // original -> gobgp:error - Error int64 + Error int64 `mapstructure:"error"` } //struct for container gobgp:rpki-messages type RpkiMessages struct { // original -> gobgp:rpki-sent - RpkiSent RpkiSent + RpkiSent RpkiSent `mapstructure:"rpki-sent"` // original -> gobgp:rpki-received - RpkiReceived RpkiReceived + RpkiReceived RpkiReceived `mapstructure:"rpki-received"` } //struct for container gobgp:state type RpkiServerState struct { // original -> gobgp:uptime - Uptime int64 + Uptime int64 `mapstructure:"uptime"` // original -> gobgp:downtime - Downtime int64 + Downtime int64 `mapstructure:"downtime"` // original -> gobgp:last-pdu-recv-time - LastPduRecvTime int64 + LastPduRecvTime int64 `mapstructure:"last-pdu-recv-time"` // original -> gobgp:rpki-messages - RpkiMessages RpkiMessages + RpkiMessages RpkiMessages `mapstructure:"rpki-messages"` } //struct for container gobgp:config type RpkiServerConfig struct { // original -> gobgp:address //gobgp:address's original type is inet:ip-address - Address string + Address string `mapstructure:"address"` // original -> gobgp:port - Port uint32 + Port uint32 `mapstructure:"port"` // original -> gobgp:refresh-time - RefreshTime int64 + RefreshTime int64 `mapstructure:"refresh-time"` // original -> gobgp:hold-time - HoldTime int64 + HoldTime int64 `mapstructure:"hold-time"` // original -> gobgp:record-lifetime - RecordLifetime int64 + RecordLifetime int64 `mapstructure:"record-lifetime"` // original -> gobgp:preference - Preference uint8 + Preference uint8 `mapstructure:"preference"` } //struct for container gobgp:rpki-server type RpkiServer struct { // original -> gobgp:address //gobgp:address's original type is inet:ip-address - Address string + Address string `mapstructure:"address"` // original -> gobgp:rpki-server-config - Config RpkiServerConfig + Config RpkiServerConfig `mapstructure:"config"` // original -> gobgp:rpki-server-state - State RpkiServerState -} - -//struct for container gobgp:rpki-servers -type RpkiServers struct { - // original -> gobgp:rpki-server - RpkiServerList []RpkiServer + State RpkiServerState `mapstructure:"state"` } //struct for container bgp:state type PeerGroupState struct { // original -> bgp:peer-as //bgp:peer-as's original type is inet:as-number - PeerAs uint32 + PeerAs uint32 `mapstructure:"peer-as"` // original -> bgp:local-as //bgp:local-as's original type is inet:as-number - LocalAs uint32 + LocalAs uint32 `mapstructure:"local-as"` // original -> bgp:peer-type - PeerType PeerType + PeerType PeerType `mapstructure:"peer-type"` // original -> bgp:auth-password - AuthPassword string + AuthPassword string `mapstructure:"auth-password"` // original -> bgp:remove-private-as - RemovePrivateAs RemovePrivateAsOption + RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as"` // original -> bgp:route-flap-damping //bgp:route-flap-damping's original type is boolean - RouteFlapDamping bool + RouteFlapDamping bool `mapstructure:"route-flap-damping"` // original -> bgp:send-community - SendCommunity CommunityType + SendCommunity CommunityType `mapstructure:"send-community"` // original -> bgp:description - Description string + Description string `mapstructure:"description"` // original -> bgp:peer-group-name - PeerGroupName string + PeerGroupName string `mapstructure:"peer-group-name"` // original -> bgp-op:total-paths - TotalPaths uint32 + TotalPaths uint32 `mapstructure:"total-paths"` // original -> bgp-op:total-prefixes - TotalPrefixes uint32 + TotalPrefixes uint32 `mapstructure:"total-prefixes"` } //struct for container bgp:config type PeerGroupConfig struct { // original -> bgp:peer-as //bgp:peer-as's original type is inet:as-number - PeerAs uint32 + PeerAs uint32 `mapstructure:"peer-as"` // original -> bgp:local-as //bgp:local-as's original type is inet:as-number - LocalAs uint32 + LocalAs uint32 `mapstructure:"local-as"` // original -> bgp:peer-type - PeerType PeerType + PeerType PeerType `mapstructure:"peer-type"` // original -> bgp:auth-password - AuthPassword string + AuthPassword string `mapstructure:"auth-password"` // original -> bgp:remove-private-as - RemovePrivateAs RemovePrivateAsOption + RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as"` // original -> bgp:route-flap-damping //bgp:route-flap-damping's original type is boolean - RouteFlapDamping bool + RouteFlapDamping bool `mapstructure:"route-flap-damping"` // original -> bgp:send-community - SendCommunity CommunityType + SendCommunity CommunityType `mapstructure:"send-community"` // original -> bgp:description - Description string + Description string `mapstructure:"description"` // original -> bgp:peer-group-name - PeerGroupName string + PeerGroupName string `mapstructure:"peer-group-name"` } //struct for container bgp:peer-group type PeerGroup struct { // original -> bgp:peer-group-name - PeerGroupName string + PeerGroupName string `mapstructure:"peer-group-name"` // original -> bgp:peer-group-config - Config PeerGroupConfig + Config PeerGroupConfig `mapstructure:"config"` // original -> bgp:peer-group-state - State PeerGroupState + State PeerGroupState `mapstructure:"state"` // original -> bgp:timers - Timers Timers + Timers Timers `mapstructure:"timers"` // original -> bgp:transport - Transport Transport + Transport Transport `mapstructure:"transport"` // original -> bgp:error-handling - ErrorHandling ErrorHandling + ErrorHandling ErrorHandling `mapstructure:"error-handling"` // original -> bgp:logging-options - LoggingOptions LoggingOptions + LoggingOptions LoggingOptions `mapstructure:"logging-options"` // original -> bgp:ebgp-multihop - EbgpMultihop EbgpMultihop + EbgpMultihop EbgpMultihop `mapstructure:"ebgp-multihop"` // original -> bgp:route-reflector - RouteReflector RouteReflector + RouteReflector RouteReflector `mapstructure:"route-reflector"` // original -> bgp:as-path-options - AsPathOptions AsPathOptions + AsPathOptions AsPathOptions `mapstructure:"as-path-options"` // original -> bgp:add-paths - AddPaths AddPaths + AddPaths AddPaths `mapstructure:"add-paths"` // original -> bgp:afi-safis - AfiSafis AfiSafis + AfiSafis []AfiSafi `mapstructure:"afi-safis"` // original -> bgp:graceful-restart - GracefulRestart GracefulRestart + GracefulRestart GracefulRestart `mapstructure:"graceful-restart"` // original -> rpol:apply-policy - ApplyPolicy ApplyPolicy + ApplyPolicy ApplyPolicy `mapstructure:"apply-policy"` // original -> bgp-mp:use-multiple-paths - UseMultiplePaths UseMultiplePaths + UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths"` // original -> gobgp:route-server - RouteServer RouteServer -} - -//struct for container bgp:peer-groups -type PeerGroups struct { - // original -> bgp:peer-group - PeerGroupList []PeerGroup + RouteServer RouteServer `mapstructure:"route-server"` } //struct for container gobgp:state type RouteServerState struct { // original -> gobgp:route-server-client //gobgp:route-server-client's original type is boolean - RouteServerClient bool + RouteServerClient bool `mapstructure:"route-server-client"` } //struct for container gobgp:config type RouteServerConfig struct { // original -> gobgp:route-server-client //gobgp:route-server-client's original type is boolean - RouteServerClient bool + RouteServerClient bool `mapstructure:"route-server-client"` } //struct for container gobgp:route-server type RouteServer struct { // original -> gobgp:route-server-config - Config RouteServerConfig + Config RouteServerConfig `mapstructure:"config"` // original -> gobgp:route-server-state - State RouteServerState + State RouteServerState `mapstructure:"state"` } //struct for container bgp-op:prefixes type Prefixes struct { // original -> bgp-op:received - Received uint32 + Received uint32 `mapstructure:"received"` // original -> bgp-op:sent - Sent uint32 + Sent uint32 `mapstructure:"sent"` // original -> bgp-op:installed - Installed uint32 + Installed uint32 `mapstructure:"installed"` } //struct for container bgp:state type AddPathsState struct { // original -> bgp:receive //bgp:receive's original type is boolean - Receive bool + Receive bool `mapstructure:"receive"` // original -> bgp:send-max - SendMax uint8 + SendMax uint8 `mapstructure:"send-max"` } //struct for container bgp:config type AddPathsConfig struct { // original -> bgp:receive //bgp:receive's original type is boolean - Receive bool + Receive bool `mapstructure:"receive"` // original -> bgp:send-max - SendMax uint8 + SendMax uint8 `mapstructure:"send-max"` } //struct for container bgp:add-paths type AddPaths struct { // original -> bgp:add-paths-config - Config AddPathsConfig + Config AddPathsConfig `mapstructure:"config"` // original -> bgp:add-paths-state - State AddPathsState + State AddPathsState `mapstructure:"state"` } //struct for container bgp:state type AsPathOptionsState struct { // original -> bgp:allow-own-as - AllowOwnAs uint8 + AllowOwnAs uint8 `mapstructure:"allow-own-as"` // original -> bgp:replace-peer-as //bgp:replace-peer-as's original type is boolean - ReplacePeerAs bool + ReplacePeerAs bool `mapstructure:"replace-peer-as"` } //struct for container bgp:config type AsPathOptionsConfig struct { // original -> bgp:allow-own-as - AllowOwnAs uint8 + AllowOwnAs uint8 `mapstructure:"allow-own-as"` // original -> bgp:replace-peer-as //bgp:replace-peer-as's original type is boolean - ReplacePeerAs bool + ReplacePeerAs bool `mapstructure:"replace-peer-as"` } //struct for container bgp:as-path-options type AsPathOptions struct { // original -> bgp:as-path-options-config - Config AsPathOptionsConfig + Config AsPathOptionsConfig `mapstructure:"config"` // original -> bgp:as-path-options-state - State AsPathOptionsState + State AsPathOptionsState `mapstructure:"state"` } //struct for container bgp:state type RouteReflectorState struct { // original -> bgp:route-reflector-cluster-id - RouteReflectorClusterId RrClusterIdType + RouteReflectorClusterId RrClusterIdType `mapstructure:"route-reflector-cluster-id"` // original -> bgp:route-reflector-client //bgp:route-reflector-client's original type is boolean - RouteReflectorClient bool + RouteReflectorClient bool `mapstructure:"route-reflector-client"` } //struct for container bgp:config type RouteReflectorConfig struct { // original -> bgp:route-reflector-cluster-id - RouteReflectorClusterId RrClusterIdType + RouteReflectorClusterId RrClusterIdType `mapstructure:"route-reflector-cluster-id"` // original -> bgp:route-reflector-client //bgp:route-reflector-client's original type is boolean - RouteReflectorClient bool + RouteReflectorClient bool `mapstructure:"route-reflector-client"` } //struct for container bgp:route-reflector type RouteReflector struct { // original -> bgp:route-reflector-config - Config RouteReflectorConfig + Config RouteReflectorConfig `mapstructure:"config"` // original -> bgp:route-reflector-state - State RouteReflectorState + State RouteReflectorState `mapstructure:"state"` } //struct for container bgp:state type EbgpMultihopState struct { // original -> bgp:enabled //bgp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp:multihop-ttl - MultihopTtl uint8 + MultihopTtl uint8 `mapstructure:"multihop-ttl"` } //struct for container bgp:config type EbgpMultihopConfig struct { // original -> bgp:enabled //bgp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp:multihop-ttl - MultihopTtl uint8 + MultihopTtl uint8 `mapstructure:"multihop-ttl"` } //struct for container bgp:ebgp-multihop type EbgpMultihop struct { // original -> bgp:ebgp-multihop-config - Config EbgpMultihopConfig + Config EbgpMultihopConfig `mapstructure:"config"` // original -> bgp:ebgp-multihop-state - State EbgpMultihopState + State EbgpMultihopState `mapstructure:"state"` } //struct for container bgp:state type LoggingOptionsState struct { // original -> bgp:log-neighbor-state-changes //bgp:log-neighbor-state-changes's original type is boolean - LogNeighborStateChanges bool + LogNeighborStateChanges bool `mapstructure:"log-neighbor-state-changes"` } //struct for container bgp:config type LoggingOptionsConfig struct { // original -> bgp:log-neighbor-state-changes //bgp:log-neighbor-state-changes's original type is boolean - LogNeighborStateChanges bool + LogNeighborStateChanges bool `mapstructure:"log-neighbor-state-changes"` } //struct for container bgp:logging-options type LoggingOptions struct { // original -> bgp:logging-options-config - Config LoggingOptionsConfig + Config LoggingOptionsConfig `mapstructure:"config"` // original -> bgp:logging-options-state - State LoggingOptionsState + State LoggingOptionsState `mapstructure:"state"` } //struct for container bgp:state type ErrorHandlingState struct { // original -> bgp:treat-as-withdraw //bgp:treat-as-withdraw's original type is boolean - TreatAsWithdraw bool + TreatAsWithdraw bool `mapstructure:"treat-as-withdraw"` // original -> bgp-op:erroneous-update-messages - ErroneousUpdateMessages uint32 + ErroneousUpdateMessages uint32 `mapstructure:"erroneous-update-messages"` } //struct for container bgp:config type ErrorHandlingConfig struct { // original -> bgp:treat-as-withdraw //bgp:treat-as-withdraw's original type is boolean - TreatAsWithdraw bool + TreatAsWithdraw bool `mapstructure:"treat-as-withdraw"` } //struct for container bgp:error-handling type ErrorHandling struct { // original -> bgp:error-handling-config - Config ErrorHandlingConfig + Config ErrorHandlingConfig `mapstructure:"config"` // original -> bgp:error-handling-state - State ErrorHandlingState + State ErrorHandlingState `mapstructure:"state"` } //struct for container bgp:state type TransportState struct { // original -> bgp:tcp-mss - TcpMss uint16 + TcpMss uint16 `mapstructure:"tcp-mss"` // original -> bgp:mtu-discovery //bgp:mtu-discovery's original type is boolean - MtuDiscovery bool + MtuDiscovery bool `mapstructure:"mtu-discovery"` // original -> bgp:passive-mode //bgp:passive-mode's original type is boolean - PassiveMode bool + PassiveMode bool `mapstructure:"passive-mode"` // original -> bgp:local-address //bgp:local-address's original type is union - LocalAddress string + LocalAddress string `mapstructure:"local-address"` // original -> bgp-op:local-port //bgp-op:local-port's original type is inet:port-number - LocalPort uint16 + LocalPort uint16 `mapstructure:"local-port"` // original -> bgp-op:remote-address //bgp-op:remote-address's original type is inet:ip-address - RemoteAddress string + RemoteAddress string `mapstructure:"remote-address"` // original -> bgp-op:remote-port //bgp-op:remote-port's original type is inet:port-number - RemotePort uint16 + RemotePort uint16 `mapstructure:"remote-port"` } //struct for container bgp:config type TransportConfig struct { // original -> bgp:tcp-mss - TcpMss uint16 + TcpMss uint16 `mapstructure:"tcp-mss"` // original -> bgp:mtu-discovery //bgp:mtu-discovery's original type is boolean - MtuDiscovery bool + MtuDiscovery bool `mapstructure:"mtu-discovery"` // original -> bgp:passive-mode //bgp:passive-mode's original type is boolean - PassiveMode bool + PassiveMode bool `mapstructure:"passive-mode"` // original -> bgp:local-address //bgp:local-address's original type is union - LocalAddress string + LocalAddress string `mapstructure:"local-address"` } //struct for container bgp:transport type Transport struct { // original -> bgp:transport-config - Config TransportConfig + Config TransportConfig `mapstructure:"config"` // original -> bgp:transport-state - State TransportState + State TransportState `mapstructure:"state"` } //struct for container bgp:state type TimersState struct { // original -> bgp:connect-retry //bgp:connect-retry's original type is decimal64 - ConnectRetry float64 + ConnectRetry float64 `mapstructure:"connect-retry"` // original -> bgp:hold-time //bgp:hold-time's original type is decimal64 - HoldTime float64 + HoldTime float64 `mapstructure:"hold-time"` // original -> bgp:keepalive-interval //bgp:keepalive-interval's original type is decimal64 - KeepaliveInterval float64 + KeepaliveInterval float64 `mapstructure:"keepalive-interval"` // original -> bgp:minimum-advertisement-interval //bgp:minimum-advertisement-interval's original type is decimal64 - MinimumAdvertisementInterval float64 + MinimumAdvertisementInterval float64 `mapstructure:"minimum-advertisement-interval"` // original -> bgp-op:uptime //bgp-op:uptime's original type is yang:timeticks - Uptime int64 + Uptime int64 `mapstructure:"uptime"` // original -> bgp-op:negotiated-hold-time //bgp-op:negotiated-hold-time's original type is decimal64 - NegotiatedHoldTime float64 + NegotiatedHoldTime float64 `mapstructure:"negotiated-hold-time"` // original -> gobgp:idle-hold-time-after-reset //gobgp:idle-hold-time-after-reset's original type is decimal64 - IdleHoldTimeAfterReset float64 + IdleHoldTimeAfterReset float64 `mapstructure:"idle-hold-time-after-reset"` // original -> gobgp:downtime //gobgp:downtime's original type is yang:timeticks - Downtime int64 + Downtime int64 `mapstructure:"downtime"` // original -> gobgp:update-recv-time - UpdateRecvTime int64 + UpdateRecvTime int64 `mapstructure:"update-recv-time"` } //struct for container bgp:config type TimersConfig struct { // original -> bgp:connect-retry //bgp:connect-retry's original type is decimal64 - ConnectRetry float64 + ConnectRetry float64 `mapstructure:"connect-retry"` // original -> bgp:hold-time //bgp:hold-time's original type is decimal64 - HoldTime float64 + HoldTime float64 `mapstructure:"hold-time"` // original -> bgp:keepalive-interval //bgp:keepalive-interval's original type is decimal64 - KeepaliveInterval float64 + KeepaliveInterval float64 `mapstructure:"keepalive-interval"` // original -> bgp:minimum-advertisement-interval //bgp:minimum-advertisement-interval's original type is decimal64 - MinimumAdvertisementInterval float64 + MinimumAdvertisementInterval float64 `mapstructure:"minimum-advertisement-interval"` // original -> gobgp:idle-hold-time-after-reset //gobgp:idle-hold-time-after-reset's original type is decimal64 - IdleHoldTimeAfterReset float64 + IdleHoldTimeAfterReset float64 `mapstructure:"idle-hold-time-after-reset"` } //struct for container bgp:timers type Timers struct { // original -> bgp:timers-config - Config TimersConfig + Config TimersConfig `mapstructure:"config"` // original -> bgp:timers-state - State TimersState + State TimersState `mapstructure:"state"` } //struct for container bgp:queues type Queues struct { // original -> bgp-op:input - Input uint32 + Input uint32 `mapstructure:"input"` // original -> bgp-op:output - Output uint32 + Output uint32 `mapstructure:"output"` } //struct for container bgp:received type Received struct { // original -> bgp-op:UPDATE - Update uint64 + Update uint64 `mapstructure:"update"` // original -> bgp-op:NOTIFICATION - Notification uint64 + Notification uint64 `mapstructure:"notification"` // original -> gobgp:OPEN - Open uint64 + Open uint64 `mapstructure:"open"` // original -> gobgp:REFRESH - Refresh uint64 + Refresh uint64 `mapstructure:"refresh"` // original -> gobgp:KEEPALIVE - Keepalive uint64 + Keepalive uint64 `mapstructure:"keepalive"` // original -> gobgp:DYNAMIC-CAP - DynamicCap uint64 + DynamicCap uint64 `mapstructure:"dynamic-cap"` // original -> gobgp:DISCARDED - Discarded uint64 + Discarded uint64 `mapstructure:"discarded"` // original -> gobgp:TOTAL - Total uint64 + Total uint64 `mapstructure:"total"` } //struct for container bgp:sent type Sent struct { // original -> bgp-op:UPDATE - Update uint64 + Update uint64 `mapstructure:"update"` // original -> bgp-op:NOTIFICATION - Notification uint64 + Notification uint64 `mapstructure:"notification"` // original -> gobgp:OPEN - Open uint64 + Open uint64 `mapstructure:"open"` // original -> gobgp:REFRESH - Refresh uint64 + Refresh uint64 `mapstructure:"refresh"` // original -> gobgp:KEEPALIVE - Keepalive uint64 + Keepalive uint64 `mapstructure:"keepalive"` // original -> gobgp:DYNAMIC-CAP - DynamicCap uint64 + DynamicCap uint64 `mapstructure:"dynamic-cap"` // original -> gobgp:DISCARDED - Discarded uint64 + Discarded uint64 `mapstructure:"discarded"` // original -> gobgp:TOTAL - Total uint64 + Total uint64 `mapstructure:"total"` } //struct for container bgp:messages type Messages struct { // original -> bgp:sent - Sent Sent + Sent Sent `mapstructure:"sent"` // original -> bgp:received - Received Received + Received Received `mapstructure:"received"` } //struct for container bgp:state type NeighborState struct { // original -> bgp:peer-as //bgp:peer-as's original type is inet:as-number - PeerAs uint32 + PeerAs uint32 `mapstructure:"peer-as"` // original -> bgp:local-as //bgp:local-as's original type is inet:as-number - LocalAs uint32 + LocalAs uint32 `mapstructure:"local-as"` // original -> bgp:peer-type - PeerType PeerType + PeerType PeerType `mapstructure:"peer-type"` // original -> bgp:auth-password - AuthPassword string + AuthPassword string `mapstructure:"auth-password"` // original -> bgp:remove-private-as - RemovePrivateAs RemovePrivateAsOption + RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as"` // original -> bgp:route-flap-damping //bgp:route-flap-damping's original type is boolean - RouteFlapDamping bool + RouteFlapDamping bool `mapstructure:"route-flap-damping"` // original -> bgp:send-community - SendCommunity CommunityType + SendCommunity CommunityType `mapstructure:"send-community"` // original -> bgp:description - Description string + Description string `mapstructure:"description"` // original -> bgp:peer-group - PeerGroup string + PeerGroup string `mapstructure:"peer-group"` // original -> bgp:neighbor-address //bgp:neighbor-address's original type is inet:ip-address - NeighborAddress string + NeighborAddress string `mapstructure:"neighbor-address"` // original -> bgp-op:session-state //bgp-op:session-state's original type is enumeration - SessionState uint32 + SessionState uint32 `mapstructure:"session-state"` // original -> bgp-op:supported-capabilities - //original type is list of identityref - SupportedCapabilities []string + // original type is list of identityref + SupportedCapabilitiesList []string `mapstructure:"supported-capabilities-list"` // original -> bgp:messages - Messages Messages + Messages Messages `mapstructure:"messages"` // original -> bgp:queues - Queues Queues + Queues Queues `mapstructure:"queues"` // original -> gobgp:admin-down //gobgp:admin-down's original type is boolean - AdminDown bool + AdminDown bool `mapstructure:"admin-down"` // original -> gobgp:established-count - EstablishedCount uint32 + EstablishedCount uint32 `mapstructure:"established-count"` // original -> gobgp:flops - Flops uint32 + Flops uint32 `mapstructure:"flops"` } //struct for container bgp:config type NeighborConfig struct { // original -> bgp:peer-as //bgp:peer-as's original type is inet:as-number - PeerAs uint32 + PeerAs uint32 `mapstructure:"peer-as"` // original -> bgp:local-as //bgp:local-as's original type is inet:as-number - LocalAs uint32 + LocalAs uint32 `mapstructure:"local-as"` // original -> bgp:peer-type - PeerType PeerType + PeerType PeerType `mapstructure:"peer-type"` // original -> bgp:auth-password - AuthPassword string + AuthPassword string `mapstructure:"auth-password"` // original -> bgp:remove-private-as - RemovePrivateAs RemovePrivateAsOption + RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as"` // original -> bgp:route-flap-damping //bgp:route-flap-damping's original type is boolean - RouteFlapDamping bool + RouteFlapDamping bool `mapstructure:"route-flap-damping"` // original -> bgp:send-community - SendCommunity CommunityType + SendCommunity CommunityType `mapstructure:"send-community"` // original -> bgp:description - Description string + Description string `mapstructure:"description"` // original -> bgp:peer-group - PeerGroup string + PeerGroup string `mapstructure:"peer-group"` // original -> bgp:neighbor-address //bgp:neighbor-address's original type is inet:ip-address - NeighborAddress string + NeighborAddress string `mapstructure:"neighbor-address"` } //struct for container bgp:neighbor type Neighbor struct { // original -> bgp:neighbor-address //bgp:neighbor-address's original type is inet:ip-address - NeighborAddress string + NeighborAddress string `mapstructure:"neighbor-address"` // original -> bgp:neighbor-config - Config NeighborConfig + Config NeighborConfig `mapstructure:"config"` // original -> bgp:neighbor-state - State NeighborState + State NeighborState `mapstructure:"state"` // original -> bgp:timers - Timers Timers + Timers Timers `mapstructure:"timers"` // original -> bgp:transport - Transport Transport + Transport Transport `mapstructure:"transport"` // original -> bgp:error-handling - ErrorHandling ErrorHandling + ErrorHandling ErrorHandling `mapstructure:"error-handling"` // original -> bgp:logging-options - LoggingOptions LoggingOptions + LoggingOptions LoggingOptions `mapstructure:"logging-options"` // original -> bgp:ebgp-multihop - EbgpMultihop EbgpMultihop + EbgpMultihop EbgpMultihop `mapstructure:"ebgp-multihop"` // original -> bgp:route-reflector - RouteReflector RouteReflector + RouteReflector RouteReflector `mapstructure:"route-reflector"` // original -> bgp:as-path-options - AsPathOptions AsPathOptions + AsPathOptions AsPathOptions `mapstructure:"as-path-options"` // original -> bgp:add-paths - AddPaths AddPaths + AddPaths AddPaths `mapstructure:"add-paths"` // original -> bgp:afi-safis - AfiSafis AfiSafis + AfiSafis []AfiSafi `mapstructure:"afi-safis"` // original -> bgp:graceful-restart - GracefulRestart GracefulRestart + GracefulRestart GracefulRestart `mapstructure:"graceful-restart"` // original -> rpol:apply-policy - ApplyPolicy ApplyPolicy + ApplyPolicy ApplyPolicy `mapstructure:"apply-policy"` // original -> bgp-mp:use-multiple-paths - UseMultiplePaths UseMultiplePaths + UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths"` // original -> gobgp:route-server - RouteServer RouteServer -} - -//struct for container bgp:neighbors -type Neighbors struct { - // original -> bgp:neighbor - NeighborList []Neighbor + RouteServer RouteServer `mapstructure:"route-server"` } //struct for container gobgp:listen-config type ListenConfig struct { // original -> gobgp:port - Port int32 + Port int32 `mapstructure:"port"` } //struct for container gobgp:mpls-label-range type MplsLabelRange struct { // original -> gobgp:min-label - MinLabel uint32 + MinLabel uint32 `mapstructure:"min-label"` // original -> gobgp:max-label - MaxLabel uint32 + MaxLabel uint32 `mapstructure:"max-label"` } //struct for container gobgp:zebra type Zebra struct { // original -> gobgp:enabled //gobgp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> gobgp:url - Url string + Url string `mapstructure:"url"` // original -> gobgp:redistribute-route-type - //original type is list of identityref - RedistributeRouteType []string + // original type is list of identityref + RedistributeRouteTypeList []string `mapstructure:"redistribute-route-type-list"` } //struct for container gobgp:mrt type Mrt struct { // original -> gobgp:file-name - FileName string + FileName string `mapstructure:"file-name"` } //struct for container bgp-mp:l2vpn-evpn type L2vpnEvpn struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:l2vpn-vpls type L2vpnVpls struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:l3vpn-ipv6-multicast type L3vpnIpv6Multicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:l3vpn-ipv4-multicast type L3vpnIpv4Multicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:l3vpn-ipv6-unicast type L3vpnIpv6Unicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:l3vpn-ipv4-unicast type L3vpnIpv4Unicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:ipv6-labelled-unicast type Ipv6LabelledUnicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:ipv4-labelled-unicast type Ipv4LabelledUnicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` } //struct for container bgp-mp:state type Ipv6UnicastState struct { // original -> bgp-mp:send-default-route //bgp-mp:send-default-route's original type is boolean - SendDefaultRoute bool + SendDefaultRoute bool `mapstructure:"send-default-route"` } //struct for container bgp-mp:config type Ipv6UnicastConfig struct { // original -> bgp-mp:send-default-route //bgp-mp:send-default-route's original type is boolean - SendDefaultRoute bool + SendDefaultRoute bool `mapstructure:"send-default-route"` } //struct for container bgp-mp:ipv6-unicast type Ipv6Unicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` // original -> bgp-mp:ipv6-unicast-config - Config Ipv6UnicastConfig + Config Ipv6UnicastConfig `mapstructure:"config"` // original -> bgp-mp:ipv6-unicast-state - State Ipv6UnicastState + State Ipv6UnicastState `mapstructure:"state"` } //struct for container bgp-mp:state type Ipv4UnicastState struct { // original -> bgp-mp:send-default-route //bgp-mp:send-default-route's original type is boolean - SendDefaultRoute bool + SendDefaultRoute bool `mapstructure:"send-default-route"` } //struct for container bgp-mp:config type Ipv4UnicastConfig struct { // original -> bgp-mp:send-default-route //bgp-mp:send-default-route's original type is boolean - SendDefaultRoute bool + SendDefaultRoute bool `mapstructure:"send-default-route"` } //struct for container bgp-mp:state type PrefixLimitState struct { // original -> bgp-mp:max-prefixes - MaxPrefixes uint32 + MaxPrefixes uint32 `mapstructure:"max-prefixes"` // original -> bgp-mp:shutdown-threshold-pct - ShutdownThresholdPct Percentage + ShutdownThresholdPct Percentage `mapstructure:"shutdown-threshold-pct"` // original -> bgp-mp:restart-timer //bgp-mp:restart-timer's original type is decimal64 - RestartTimer float64 + RestartTimer float64 `mapstructure:"restart-timer"` } //struct for container bgp-mp:config type PrefixLimitConfig struct { // original -> bgp-mp:max-prefixes - MaxPrefixes uint32 + MaxPrefixes uint32 `mapstructure:"max-prefixes"` // original -> bgp-mp:shutdown-threshold-pct - ShutdownThresholdPct Percentage + ShutdownThresholdPct Percentage `mapstructure:"shutdown-threshold-pct"` // original -> bgp-mp:restart-timer //bgp-mp:restart-timer's original type is decimal64 - RestartTimer float64 + RestartTimer float64 `mapstructure:"restart-timer"` } //struct for container bgp-mp:prefix-limit type PrefixLimit struct { // original -> bgp-mp:prefix-limit-config - Config PrefixLimitConfig + Config PrefixLimitConfig `mapstructure:"config"` // original -> bgp-mp:prefix-limit-state - State PrefixLimitState + State PrefixLimitState `mapstructure:"state"` } //struct for container bgp-mp:ipv4-unicast type Ipv4Unicast struct { // original -> bgp-mp:prefix-limit - PrefixLimit PrefixLimit + PrefixLimit PrefixLimit `mapstructure:"prefix-limit"` // original -> bgp-mp:ipv4-unicast-config - Config Ipv4UnicastConfig + Config Ipv4UnicastConfig `mapstructure:"config"` // original -> bgp-mp:ipv4-unicast-state - State Ipv4UnicastState + State Ipv4UnicastState `mapstructure:"state"` } //struct for container rpol:state type ApplyPolicyState struct { // original -> rpol:import-policy - ImportPolicy []string + ImportPolicyList []string `mapstructure:"import-policy-list"` // original -> rpol:default-import-policy - DefaultImportPolicy DefaultPolicyType + DefaultImportPolicy DefaultPolicyType `mapstructure:"default-import-policy"` // original -> rpol:export-policy - ExportPolicy []string + ExportPolicyList []string `mapstructure:"export-policy-list"` // original -> rpol:default-export-policy - DefaultExportPolicy DefaultPolicyType + DefaultExportPolicy DefaultPolicyType `mapstructure:"default-export-policy"` // original -> gobgp:in-policy - InPolicy []string + InPolicyList []string `mapstructure:"in-policy-list"` // original -> gobgp:default-in-policy - DefaultInPolicy DefaultPolicyType + DefaultInPolicy DefaultPolicyType `mapstructure:"default-in-policy"` } //struct for container rpol:config type ApplyPolicyConfig struct { // original -> rpol:import-policy - ImportPolicy []string + ImportPolicyList []string `mapstructure:"import-policy-list"` // original -> rpol:default-import-policy - DefaultImportPolicy DefaultPolicyType + DefaultImportPolicy DefaultPolicyType `mapstructure:"default-import-policy"` // original -> rpol:export-policy - ExportPolicy []string + ExportPolicyList []string `mapstructure:"export-policy-list"` // original -> rpol:default-export-policy - DefaultExportPolicy DefaultPolicyType + DefaultExportPolicy DefaultPolicyType `mapstructure:"default-export-policy"` // original -> gobgp:in-policy - InPolicy []string + InPolicyList []string `mapstructure:"in-policy-list"` // original -> gobgp:default-in-policy - DefaultInPolicy DefaultPolicyType + DefaultInPolicy DefaultPolicyType `mapstructure:"default-in-policy"` } //struct for container rpol:apply-policy type ApplyPolicy struct { // original -> rpol:apply-policy-config - Config ApplyPolicyConfig + Config ApplyPolicyConfig `mapstructure:"config"` // original -> rpol:apply-policy-state - State ApplyPolicyState + State ApplyPolicyState `mapstructure:"state"` } //struct for container bgp-mp:state type AfiSafiState struct { // original -> bgp-mp:afi-safi-name - AfiSafiName string + AfiSafiName string `mapstructure:"afi-safi-name"` // original -> bgp-mp:enabled //bgp-mp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp-op:total-paths - TotalPaths uint32 + TotalPaths uint32 `mapstructure:"total-paths"` // original -> bgp-op:total-prefixes - TotalPrefixes uint32 + TotalPrefixes uint32 `mapstructure:"total-prefixes"` } //struct for container bgp-mp:config type AfiSafiConfig struct { // original -> bgp-mp:afi-safi-name - AfiSafiName string + AfiSafiName string `mapstructure:"afi-safi-name"` // original -> bgp-mp:enabled //bgp-mp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` } //struct for container bgp-mp:state type MpGracefulRestartState struct { // original -> bgp-mp:enabled //bgp-mp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp-op:received //bgp-op:received's original type is boolean - Received bool + Received bool `mapstructure:"received"` // original -> bgp-op:advertised //bgp-op:advertised's original type is boolean - Advertised bool + Advertised bool `mapstructure:"advertised"` } //struct for container bgp-mp:config type MpGracefulRestartConfig struct { // original -> bgp-mp:enabled //bgp-mp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` } //struct for container bgp-mp:graceful-restart type MpGracefulRestart struct { // original -> bgp-mp:mp-graceful-restart-config - Config MpGracefulRestartConfig + Config MpGracefulRestartConfig `mapstructure:"config"` // original -> bgp-mp:mp-graceful-restart-state - State MpGracefulRestartState + State MpGracefulRestartState `mapstructure:"state"` } //struct for container bgp-mp:afi-safi type AfiSafi struct { // original -> bgp-mp:afi-safi-name //bgp-mp:afi-safi-name's original type is identityref - AfiSafiName string + AfiSafiName string `mapstructure:"afi-safi-name"` // original -> bgp-mp:mp-graceful-restart - MpGracefulRestart MpGracefulRestart + MpGracefulRestart MpGracefulRestart `mapstructure:"mp-graceful-restart"` // original -> bgp-mp:afi-safi-config - Config AfiSafiConfig + Config AfiSafiConfig `mapstructure:"config"` // original -> bgp-mp:afi-safi-state - State AfiSafiState + State AfiSafiState `mapstructure:"state"` // original -> rpol:apply-policy - ApplyPolicy ApplyPolicy + ApplyPolicy ApplyPolicy `mapstructure:"apply-policy"` // original -> bgp-mp:ipv4-unicast - Ipv4Unicast Ipv4Unicast + Ipv4Unicast Ipv4Unicast `mapstructure:"ipv4-unicast"` // original -> bgp-mp:ipv6-unicast - Ipv6Unicast Ipv6Unicast + Ipv6Unicast Ipv6Unicast `mapstructure:"ipv6-unicast"` // original -> bgp-mp:ipv4-labelled-unicast - Ipv4LabelledUnicast Ipv4LabelledUnicast + Ipv4LabelledUnicast Ipv4LabelledUnicast `mapstructure:"ipv4-labelled-unicast"` // original -> bgp-mp:ipv6-labelled-unicast - Ipv6LabelledUnicast Ipv6LabelledUnicast + Ipv6LabelledUnicast Ipv6LabelledUnicast `mapstructure:"ipv6-labelled-unicast"` // original -> bgp-mp:l3vpn-ipv4-unicast - L3vpnIpv4Unicast L3vpnIpv4Unicast + L3vpnIpv4Unicast L3vpnIpv4Unicast `mapstructure:"l3vpn-ipv4-unicast"` // original -> bgp-mp:l3vpn-ipv6-unicast - L3vpnIpv6Unicast L3vpnIpv6Unicast + L3vpnIpv6Unicast L3vpnIpv6Unicast `mapstructure:"l3vpn-ipv6-unicast"` // original -> bgp-mp:l3vpn-ipv4-multicast - L3vpnIpv4Multicast L3vpnIpv4Multicast + L3vpnIpv4Multicast L3vpnIpv4Multicast `mapstructure:"l3vpn-ipv4-multicast"` // original -> bgp-mp:l3vpn-ipv6-multicast - L3vpnIpv6Multicast L3vpnIpv6Multicast + L3vpnIpv6Multicast L3vpnIpv6Multicast `mapstructure:"l3vpn-ipv6-multicast"` // original -> bgp-mp:l2vpn-vpls - L2vpnVpls L2vpnVpls + L2vpnVpls L2vpnVpls `mapstructure:"l2vpn-vpls"` // original -> bgp-mp:l2vpn-evpn - L2vpnEvpn L2vpnEvpn + L2vpnEvpn L2vpnEvpn `mapstructure:"l2vpn-evpn"` // original -> bgp-mp:route-selection-options - RouteSelectionOptions RouteSelectionOptions + RouteSelectionOptions RouteSelectionOptions `mapstructure:"route-selection-options"` // original -> bgp-mp:use-multiple-paths - UseMultiplePaths UseMultiplePaths -} - -//struct for container bgp:afi-safis -type AfiSafis struct { - // original -> bgp-mp:afi-safi - AfiSafiList []AfiSafi + UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths"` } //struct for container bgp:state type GracefulRestartState struct { // original -> bgp:enabled //bgp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp:restart-time - RestartTime uint16 + RestartTime uint16 `mapstructure:"restart-time"` // original -> bgp:stale-routes-time //bgp:stale-routes-time's original type is decimal64 - StaleRoutesTime float64 + StaleRoutesTime float64 `mapstructure:"stale-routes-time"` // original -> bgp:helper-only //bgp:helper-only's original type is boolean - HelperOnly bool + HelperOnly bool `mapstructure:"helper-only"` // original -> bgp-op:peer-restart-time - PeerRestartTime uint16 + PeerRestartTime uint16 `mapstructure:"peer-restart-time"` // original -> bgp-op:peer-restarting //bgp-op:peer-restarting's original type is boolean - PeerRestarting bool + PeerRestarting bool `mapstructure:"peer-restarting"` // original -> bgp-op:local-restarting //bgp-op:local-restarting's original type is boolean - LocalRestarting bool + LocalRestarting bool `mapstructure:"local-restarting"` // original -> bgp-op:mode //bgp-op:mode's original type is enumeration - Mode uint32 + Mode uint32 `mapstructure:"mode"` } //struct for container bgp:config type GracefulRestartConfig struct { // original -> bgp:enabled //bgp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp:restart-time - RestartTime uint16 + RestartTime uint16 `mapstructure:"restart-time"` // original -> bgp:stale-routes-time //bgp:stale-routes-time's original type is decimal64 - StaleRoutesTime float64 + StaleRoutesTime float64 `mapstructure:"stale-routes-time"` // original -> bgp:helper-only //bgp:helper-only's original type is boolean - HelperOnly bool + HelperOnly bool `mapstructure:"helper-only"` } //struct for container bgp:graceful-restart type GracefulRestart struct { // original -> bgp:graceful-restart-config - Config GracefulRestartConfig + Config GracefulRestartConfig `mapstructure:"config"` // original -> bgp:graceful-restart-state - State GracefulRestartState + State GracefulRestartState `mapstructure:"state"` } //struct for container bgp-mp:state type IbgpState struct { // original -> bgp-mp:maximum-paths - MaximumPaths uint32 + MaximumPaths uint32 `mapstructure:"maximum-paths"` } //struct for container bgp-mp:config type IbgpConfig struct { // original -> bgp-mp:maximum-paths - MaximumPaths uint32 + MaximumPaths uint32 `mapstructure:"maximum-paths"` } //struct for container bgp-mp:ibgp type Ibgp struct { // original -> bgp-mp:ibgp-config - Config IbgpConfig + Config IbgpConfig `mapstructure:"config"` // original -> bgp-mp:ibgp-state - State IbgpState + State IbgpState `mapstructure:"state"` } //struct for container bgp-mp:state type EbgpState struct { // original -> bgp-mp:allow-multiple-as //bgp-mp:allow-multiple-as's original type is boolean - AllowMultipleAs bool + AllowMultipleAs bool `mapstructure:"allow-multiple-as"` // original -> bgp-mp:maximum-paths - MaximumPaths uint32 + MaximumPaths uint32 `mapstructure:"maximum-paths"` } //struct for container bgp-mp:config type EbgpConfig struct { // original -> bgp-mp:allow-multiple-as //bgp-mp:allow-multiple-as's original type is boolean - AllowMultipleAs bool + AllowMultipleAs bool `mapstructure:"allow-multiple-as"` // original -> bgp-mp:maximum-paths - MaximumPaths uint32 + MaximumPaths uint32 `mapstructure:"maximum-paths"` } //struct for container bgp-mp:ebgp type Ebgp struct { // original -> bgp-mp:ebgp-config - Config EbgpConfig + Config EbgpConfig `mapstructure:"config"` // original -> bgp-mp:ebgp-state - State EbgpState + State EbgpState `mapstructure:"state"` } //struct for container bgp-mp:state type UseMultiplePathsState struct { // original -> bgp-mp:enabled //bgp-mp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` } //struct for container bgp-mp:config type UseMultiplePathsConfig struct { // original -> bgp-mp:enabled //bgp-mp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` } //struct for container bgp-mp:use-multiple-paths type UseMultiplePaths struct { // original -> bgp-mp:use-multiple-paths-config - Config UseMultiplePathsConfig + Config UseMultiplePathsConfig `mapstructure:"config"` // original -> bgp-mp:use-multiple-paths-state - State UseMultiplePathsState + State UseMultiplePathsState `mapstructure:"state"` // original -> bgp-mp:ebgp - Ebgp Ebgp + Ebgp Ebgp `mapstructure:"ebgp"` // original -> bgp-mp:ibgp - Ibgp Ibgp + Ibgp Ibgp `mapstructure:"ibgp"` } //struct for container bgp:state type ConfederationState struct { // original -> bgp:enabled //bgp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp:identifier //bgp:identifier's original type is inet:as-number - Identifier uint32 + Identifier uint32 `mapstructure:"identifier"` // original -> bgp:member-as - //original type is list of inet:as-number - MemberAs []uint32 + // original type is list of inet:as-number + MemberAsList []uint32 `mapstructure:"member-as-list"` } //struct for container bgp:config type ConfederationConfig struct { // original -> bgp:enabled //bgp:enabled's original type is boolean - Enabled bool + Enabled bool `mapstructure:"enabled"` // original -> bgp:identifier //bgp:identifier's original type is inet:as-number - Identifier uint32 + Identifier uint32 `mapstructure:"identifier"` // original -> bgp:member-as - //original type is list of inet:as-number - MemberAs []uint32 + // original type is list of inet:as-number + MemberAsList []uint32 `mapstructure:"member-as-list"` } //struct for container bgp:confederation type Confederation struct { // original -> bgp:confederation-config - Config ConfederationConfig + Config ConfederationConfig `mapstructure:"config"` // original -> bgp:confederation-state - State ConfederationState + State ConfederationState `mapstructure:"state"` } //struct for container bgp:state type DefaultRouteDistanceState struct { // original -> bgp:external-route-distance - ExternalRouteDistance uint8 + ExternalRouteDistance uint8 `mapstructure:"external-route-distance"` // original -> bgp:internal-route-distance - InternalRouteDistance uint8 + InternalRouteDistance uint8 `mapstructure:"internal-route-distance"` } //struct for container bgp:config type DefaultRouteDistanceConfig struct { // original -> bgp:external-route-distance - ExternalRouteDistance uint8 + ExternalRouteDistance uint8 `mapstructure:"external-route-distance"` // original -> bgp:internal-route-distance - InternalRouteDistance uint8 + InternalRouteDistance uint8 `mapstructure:"internal-route-distance"` } //struct for container bgp:default-route-distance type DefaultRouteDistance struct { // original -> bgp:default-route-distance-config - Config DefaultRouteDistanceConfig + Config DefaultRouteDistanceConfig `mapstructure:"config"` // original -> bgp:default-route-distance-state - State DefaultRouteDistanceState + State DefaultRouteDistanceState `mapstructure:"state"` } //struct for container bgp-mp:state type RouteSelectionOptionsState struct { // original -> bgp-mp:always-compare-med //bgp-mp:always-compare-med's original type is boolean - AlwaysCompareMed bool + AlwaysCompareMed bool `mapstructure:"always-compare-med"` // original -> bgp-mp:ignore-as-path-length //bgp-mp:ignore-as-path-length's original type is boolean - IgnoreAsPathLength bool + IgnoreAsPathLength bool `mapstructure:"ignore-as-path-length"` // original -> bgp-mp:external-compare-router-id //bgp-mp:external-compare-router-id's original type is boolean - ExternalCompareRouterId bool + ExternalCompareRouterId bool `mapstructure:"external-compare-router-id"` // original -> bgp-mp:advertise-inactive-routes //bgp-mp:advertise-inactive-routes's original type is boolean - AdvertiseInactiveRoutes bool + AdvertiseInactiveRoutes bool `mapstructure:"advertise-inactive-routes"` // original -> bgp-mp:enable-aigp //bgp-mp:enable-aigp's original type is boolean - EnableAigp bool + EnableAigp bool `mapstructure:"enable-aigp"` // original -> bgp-mp:ignore-next-hop-igp-metric //bgp-mp:ignore-next-hop-igp-metric's original type is boolean - IgnoreNextHopIgpMetric bool + IgnoreNextHopIgpMetric bool `mapstructure:"ignore-next-hop-igp-metric"` } //struct for container bgp-mp:config type RouteSelectionOptionsConfig struct { // original -> bgp-mp:always-compare-med //bgp-mp:always-compare-med's original type is boolean - AlwaysCompareMed bool + AlwaysCompareMed bool `mapstructure:"always-compare-med"` // original -> bgp-mp:ignore-as-path-length //bgp-mp:ignore-as-path-length's original type is boolean - IgnoreAsPathLength bool + IgnoreAsPathLength bool `mapstructure:"ignore-as-path-length"` // original -> bgp-mp:external-compare-router-id //bgp-mp:external-compare-router-id's original type is boolean - ExternalCompareRouterId bool + ExternalCompareRouterId bool `mapstructure:"external-compare-router-id"` // original -> bgp-mp:advertise-inactive-routes //bgp-mp:advertise-inactive-routes's original type is boolean - AdvertiseInactiveRoutes bool + AdvertiseInactiveRoutes bool `mapstructure:"advertise-inactive-routes"` // original -> bgp-mp:enable-aigp //bgp-mp:enable-aigp's original type is boolean - EnableAigp bool + EnableAigp bool `mapstructure:"enable-aigp"` // original -> bgp-mp:ignore-next-hop-igp-metric //bgp-mp:ignore-next-hop-igp-metric's original type is boolean - IgnoreNextHopIgpMetric bool + IgnoreNextHopIgpMetric bool `mapstructure:"ignore-next-hop-igp-metric"` } //struct for container bgp-mp:route-selection-options type RouteSelectionOptions struct { // original -> bgp-mp:route-selection-options-config - Config RouteSelectionOptionsConfig + Config RouteSelectionOptionsConfig `mapstructure:"config"` // original -> bgp-mp:route-selection-options-state - State RouteSelectionOptionsState + State RouteSelectionOptionsState `mapstructure:"state"` } //struct for container bgp:state type GlobalState struct { // original -> bgp:as //bgp:as's original type is inet:as-number - As uint32 + As uint32 `mapstructure:"as"` // original -> bgp:router-id //bgp:router-id's original type is inet:ipv4-address - RouterId string + RouterId string `mapstructure:"router-id"` // original -> bgp-op:total-paths - TotalPaths uint32 + TotalPaths uint32 `mapstructure:"total-paths"` // original -> bgp-op:total-prefixes - TotalPrefixes uint32 + TotalPrefixes uint32 `mapstructure:"total-prefixes"` } //struct for container bgp:config type GlobalConfig struct { // original -> bgp:as //bgp:as's original type is inet:as-number - As uint32 + As uint32 `mapstructure:"as"` // original -> bgp:router-id //bgp:router-id's original type is inet:ipv4-address - RouterId string + RouterId string `mapstructure:"router-id"` } //struct for container bgp:global type Global struct { // original -> bgp:global-config - Config GlobalConfig + Config GlobalConfig `mapstructure:"config"` // original -> bgp:global-state - State GlobalState + State GlobalState `mapstructure:"state"` // original -> bgp-mp:route-selection-options - RouteSelectionOptions RouteSelectionOptions + RouteSelectionOptions RouteSelectionOptions `mapstructure:"route-selection-options"` // original -> bgp:default-route-distance - DefaultRouteDistance DefaultRouteDistance + DefaultRouteDistance DefaultRouteDistance `mapstructure:"default-route-distance"` // original -> bgp:confederation - Confederation Confederation + Confederation Confederation `mapstructure:"confederation"` // original -> bgp-mp:use-multiple-paths - UseMultiplePaths UseMultiplePaths + UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths"` // original -> bgp:graceful-restart - GracefulRestart GracefulRestart + GracefulRestart GracefulRestart `mapstructure:"graceful-restart"` // original -> bgp:afi-safis - AfiSafis AfiSafis + AfiSafis []AfiSafi `mapstructure:"afi-safis"` // original -> rpol:apply-policy - ApplyPolicy ApplyPolicy + ApplyPolicy ApplyPolicy `mapstructure:"apply-policy"` // original -> gobgp:mrt - Mrt Mrt + Mrt Mrt `mapstructure:"mrt"` // original -> gobgp:zebra - Zebra Zebra + Zebra Zebra `mapstructure:"zebra"` // original -> gobgp:mpls-label-range - MplsLabelRange MplsLabelRange + MplsLabelRange MplsLabelRange `mapstructure:"mpls-label-range"` // original -> gobgp:listen-config - ListenConfig ListenConfig + ListenConfig ListenConfig `mapstructure:"listen-config"` } //struct for container bgp:bgp type Bgp struct { // original -> bgp:global - Global Global + Global Global `mapstructure:"global"` // original -> bgp:neighbors - Neighbors Neighbors + Neighbors []Neighbor `mapstructure:"neighbors"` // original -> bgp:peer-groups - PeerGroups PeerGroups + PeerGroups []PeerGroup `mapstructure:"peer-groups"` // original -> gobgp:rpki-servers - RpkiServers RpkiServers + RpkiServers []RpkiServer `mapstructure:"rpki-servers"` // original -> gobgp:bmp-servers - BmpServers BmpServers + BmpServers []BmpServer `mapstructure:"bmp-servers"` } //struct for container bgp-pol:set-ext-community-method type SetExtCommunityMethod struct { // original -> bgp-pol:communities - //original type is list of union - Communities []string + // original type is list of union + CommunitiesList []string `mapstructure:"communities-list"` // original -> bgp-pol:ext-community-set-ref - ExtCommunitySetRef string + ExtCommunitySetRef string `mapstructure:"ext-community-set-ref"` } //struct for container bgp-pol:set-ext-community type SetExtCommunity struct { // original -> bgp-pol:set-ext-community-method - SetExtCommunityMethod SetExtCommunityMethod + SetExtCommunityMethod SetExtCommunityMethod `mapstructure:"set-ext-community-method"` // original -> bgp-pol:options //bgp-pol:options's original type is bgp-set-community-option-type - Options string + Options string `mapstructure:"options"` } //struct for container bgp-pol:set-community-method type SetCommunityMethod struct { // original -> bgp-pol:communities - //original type is list of union - Communities []string + // original type is list of union + CommunitiesList []string `mapstructure:"communities-list"` // original -> bgp-pol:community-set-ref - CommunitySetRef string + CommunitySetRef string `mapstructure:"community-set-ref"` } //struct for container bgp-pol:set-community type SetCommunity struct { // original -> bgp-pol:set-community-method - SetCommunityMethod SetCommunityMethod + SetCommunityMethod SetCommunityMethod `mapstructure:"set-community-method"` // original -> bgp-pol:options //bgp-pol:options's original type is bgp-set-community-option-type - Options string + Options string `mapstructure:"options"` } //struct for container bgp-pol:set-as-path-prepend type SetAsPathPrepend struct { // original -> bgp-pol:repeat-n - RepeatN uint8 + RepeatN uint8 `mapstructure:"repeat-n"` // original -> gobgp:as //gobgp:as's original type is union - As string + As string `mapstructure:"as"` } //struct for container bgp-pol:bgp-actions type BgpActions struct { // original -> bgp-pol:set-as-path-prepend - SetAsPathPrepend SetAsPathPrepend + SetAsPathPrepend SetAsPathPrepend `mapstructure:"set-as-path-prepend"` // original -> bgp-pol:set-community - SetCommunity SetCommunity + SetCommunity SetCommunity `mapstructure:"set-community"` // original -> bgp-pol:set-ext-community - SetExtCommunity SetExtCommunity + SetExtCommunity SetExtCommunity `mapstructure:"set-ext-community"` // original -> bgp-pol:set-route-origin - SetRouteOrigin BgpOriginAttrType + SetRouteOrigin BgpOriginAttrType `mapstructure:"set-route-origin"` // original -> bgp-pol:set-local-pref - SetLocalPref uint32 + SetLocalPref uint32 `mapstructure:"set-local-pref"` // original -> bgp-pol:set-next-hop - SetNextHop BgpNextHopType + SetNextHop BgpNextHopType `mapstructure:"set-next-hop"` // original -> bgp-pol:set-med - SetMed BgpSetMedType + SetMed BgpSetMedType `mapstructure:"set-med"` } //struct for container rpol:igp-actions type IgpActions struct { // original -> rpol:set-tag - SetTag TagType + SetTag TagType `mapstructure:"set-tag"` } //struct for container rpol:route-disposition type RouteDisposition struct { // original -> rpol:accept-route //rpol:accept-route's original type is empty - AcceptRoute bool + AcceptRoute bool `mapstructure:"accept-route"` // original -> rpol:reject-route //rpol:reject-route's original type is empty - RejectRoute bool + RejectRoute bool `mapstructure:"reject-route"` } //struct for container rpol:actions type Actions struct { // original -> rpol:route-disposition - RouteDisposition RouteDisposition + RouteDisposition RouteDisposition `mapstructure:"route-disposition"` // original -> rpol:igp-actions - IgpActions IgpActions + IgpActions IgpActions `mapstructure:"igp-actions"` // original -> bgp-pol:bgp-actions - BgpActions BgpActions + BgpActions BgpActions `mapstructure:"bgp-actions"` } //struct for container bgp-pol:as-path-length type AsPathLength struct { // original -> ptypes:operator - Operator string + Operator string `mapstructure:"operator"` // original -> ptypes:value - Value uint32 + Value uint32 `mapstructure:"value"` } //struct for container bgp-pol:community-count type CommunityCount struct { // original -> ptypes:operator - Operator string + Operator string `mapstructure:"operator"` // original -> ptypes:value - Value uint32 + Value uint32 `mapstructure:"value"` } //struct for container bgp-pol:match-as-path-set type MatchAsPathSet struct { // original -> bgp-pol:as-path-set - AsPathSet string + AsPathSet string `mapstructure:"as-path-set"` // original -> rpol:match-set-options - MatchSetOptions MatchSetOptionsType + MatchSetOptions MatchSetOptionsType `mapstructure:"match-set-options"` } //struct for container bgp-pol:match-ext-community-set type MatchExtCommunitySet struct { // original -> bgp-pol:ext-community-set - ExtCommunitySet string + ExtCommunitySet string `mapstructure:"ext-community-set"` // original -> rpol:match-set-options - MatchSetOptions MatchSetOptionsType + MatchSetOptions MatchSetOptionsType `mapstructure:"match-set-options"` } //struct for container bgp-pol:match-community-set type MatchCommunitySet struct { // original -> bgp-pol:community-set - CommunitySet string + CommunitySet string `mapstructure:"community-set"` // original -> rpol:match-set-options - MatchSetOptions MatchSetOptionsType + MatchSetOptions MatchSetOptionsType `mapstructure:"match-set-options"` } //struct for container bgp-pol:bgp-conditions type BgpConditions struct { // original -> bgp-pol:match-community-set - MatchCommunitySet MatchCommunitySet + MatchCommunitySet MatchCommunitySet `mapstructure:"match-community-set"` // original -> bgp-pol:match-ext-community-set - MatchExtCommunitySet MatchExtCommunitySet + MatchExtCommunitySet MatchExtCommunitySet `mapstructure:"match-ext-community-set"` // original -> bgp-pol:match-as-path-set - MatchAsPathSet MatchAsPathSet + MatchAsPathSet MatchAsPathSet `mapstructure:"match-as-path-set"` // original -> bgp-pol:med-eq - MedEq uint32 + MedEq uint32 `mapstructure:"med-eq"` // original -> bgp-pol:origin-eq - OriginEq BgpOriginAttrType + OriginEq BgpOriginAttrType `mapstructure:"origin-eq"` // original -> bgp-pol:next-hop-in - //original type is list of inet:ip-address - NextHopIn []string + // original type is list of inet:ip-address + NextHopInList []string `mapstructure:"next-hop-in-list"` // original -> bgp-pol:afi-safi-in - //original type is list of identityref - AfiSafiIn []string + // original type is list of identityref + AfiSafiInList []string `mapstructure:"afi-safi-in-list"` // original -> bgp-pol:local-pref-eq - LocalPrefEq uint32 + LocalPrefEq uint32 `mapstructure:"local-pref-eq"` // original -> bgp-pol:community-count - CommunityCount CommunityCount + CommunityCount CommunityCount `mapstructure:"community-count"` // original -> bgp-pol:as-path-length - AsPathLength AsPathLength + AsPathLength AsPathLength `mapstructure:"as-path-length"` // original -> bgp-pol:route-type //bgp-pol:route-type's original type is enumeration - RouteType uint32 + RouteType uint32 `mapstructure:"route-type"` // original -> gobgp:rpki-validation-result - RpkiValidationResult RpkiValidationResultType + RpkiValidationResult RpkiValidationResultType `mapstructure:"rpki-validation-result"` } //struct for container rpol:igp-conditions @@ -1870,201 +1840,153 @@ type IgpConditions struct { //struct for container rpol:match-tag-set type MatchTagSet struct { // original -> rpol:tag-set - TagSet string + TagSet string `mapstructure:"tag-set"` // original -> rpol:match-set-options - MatchSetOptions MatchSetOptionsRestrictedType + MatchSetOptions MatchSetOptionsRestrictedType `mapstructure:"match-set-options"` } //struct for container rpol:match-neighbor-set type MatchNeighborSet struct { // original -> rpol:neighbor-set - NeighborSet string + NeighborSet string `mapstructure:"neighbor-set"` // original -> rpol:match-set-options - MatchSetOptions MatchSetOptionsRestrictedType + MatchSetOptions MatchSetOptionsRestrictedType `mapstructure:"match-set-options"` } //struct for container rpol:match-prefix-set type MatchPrefixSet struct { // original -> rpol:prefix-set - PrefixSet string + PrefixSet string `mapstructure:"prefix-set"` // original -> rpol:match-set-options - MatchSetOptions MatchSetOptionsRestrictedType + MatchSetOptions MatchSetOptionsRestrictedType `mapstructure:"match-set-options"` } //struct for container rpol:conditions type Conditions struct { // original -> rpol:call-policy - CallPolicy string + CallPolicy string `mapstructure:"call-policy"` // original -> rpol:match-prefix-set - MatchPrefixSet MatchPrefixSet + MatchPrefixSet MatchPrefixSet `mapstructure:"match-prefix-set"` // original -> rpol:match-neighbor-set - MatchNeighborSet MatchNeighborSet + MatchNeighborSet MatchNeighborSet `mapstructure:"match-neighbor-set"` // original -> rpol:match-tag-set - MatchTagSet MatchTagSet + MatchTagSet MatchTagSet `mapstructure:"match-tag-set"` // original -> rpol:install-protocol-eq - InstallProtocolEq string + InstallProtocolEq string `mapstructure:"install-protocol-eq"` // original -> rpol:igp-conditions - IgpConditions IgpConditions + IgpConditions IgpConditions `mapstructure:"igp-conditions"` // original -> bgp-pol:bgp-conditions - BgpConditions BgpConditions + BgpConditions BgpConditions `mapstructure:"bgp-conditions"` } //struct for container rpol:statement type Statement struct { // original -> rpol:name - Name string + Name string `mapstructure:"name"` // original -> rpol:conditions - Conditions Conditions + Conditions Conditions `mapstructure:"conditions"` // original -> rpol:actions - Actions Actions -} - -//struct for container rpol:statements -type Statements struct { - // original -> rpol:statement - StatementList []Statement + Actions Actions `mapstructure:"actions"` } //struct for container rpol:policy-definition type PolicyDefinition struct { // original -> rpol:name - Name string + Name string `mapstructure:"name"` // original -> rpol:statements - Statements Statements -} - -//struct for container rpol:policy-definitions -type PolicyDefinitions struct { - // original -> rpol:policy-definition - PolicyDefinitionList []PolicyDefinition + Statements []Statement `mapstructure:"statements"` } //struct for container bgp-pol:as-path-set type AsPathSet struct { // original -> bgp-pol:as-path-set-name - AsPathSetName string + AsPathSetName string `mapstructure:"as-path-set-name"` // original -> gobgp:as-path - AsPath []string -} - -//struct for container bgp-pol:as-path-sets -type AsPathSets struct { - // original -> bgp-pol:as-path-set - AsPathSetList []AsPathSet + AsPathList []string `mapstructure:"as-path-list"` } //struct for container bgp-pol:ext-community-set type ExtCommunitySet struct { // original -> bgp-pol:ext-community-set-name - ExtCommunitySetName string + ExtCommunitySetName string `mapstructure:"ext-community-set-name"` // original -> gobgp:ext-community - ExtCommunity []string -} - -//struct for container bgp-pol:ext-community-sets -type ExtCommunitySets struct { - // original -> bgp-pol:ext-community-set - ExtCommunitySetList []ExtCommunitySet + ExtCommunityList []string `mapstructure:"ext-community-list"` } //struct for container bgp-pol:community-set type CommunitySet struct { // original -> bgp-pol:community-set-name - CommunitySetName string + CommunitySetName string `mapstructure:"community-set-name"` // original -> gobgp:community - Community []string -} - -//struct for container bgp-pol:community-sets -type CommunitySets struct { - // original -> bgp-pol:community-set - CommunitySetList []CommunitySet + CommunityList []string `mapstructure:"community-list"` } //struct for container bgp-pol:bgp-defined-sets type BgpDefinedSets struct { // original -> bgp-pol:community-sets - CommunitySets CommunitySets + CommunitySets []CommunitySet `mapstructure:"community-sets"` // original -> bgp-pol:ext-community-sets - ExtCommunitySets ExtCommunitySets + ExtCommunitySets []ExtCommunitySet `mapstructure:"ext-community-sets"` // original -> bgp-pol:as-path-sets - AsPathSets AsPathSets + AsPathSets []AsPathSet `mapstructure:"as-path-sets"` } //struct for container rpol:tag type Tag struct { // original -> rpol:value - Value TagType + Value TagType `mapstructure:"value"` } //struct for container rpol:tag-set type TagSet struct { // original -> rpol:tag-set-name - TagSetName string + TagSetName string `mapstructure:"tag-set-name"` // original -> rpol:tag - TagList []Tag -} - -//struct for container rpol:tag-sets -type TagSets struct { - // original -> rpol:tag-set - TagSetList []TagSet + TagList []Tag `mapstructure:"tag-list"` } //struct for container rpol:neighbor-set type NeighborSet struct { // original -> rpol:neighbor-set-name - NeighborSetName string + NeighborSetName string `mapstructure:"neighbor-set-name"` // original -> gobgp:neighbor-info - //original type is list of inet:ip-address - NeighborInfo []string -} - -//struct for container rpol:neighbor-sets -type NeighborSets struct { - // original -> rpol:neighbor-set - NeighborSetList []NeighborSet + // original type is list of inet:ip-address + NeighborInfoList []string `mapstructure:"neighbor-info-list"` } //struct for container rpol:prefix type Prefix struct { // original -> rpol:ip-prefix //rpol:ip-prefix's original type is inet:ip-prefix - IpPrefix string + IpPrefix string `mapstructure:"ip-prefix"` // original -> rpol:masklength-range - MasklengthRange string + MasklengthRange string `mapstructure:"masklength-range"` } //struct for container rpol:prefix-set type PrefixSet struct { // original -> rpol:prefix-set-name - PrefixSetName string + PrefixSetName string `mapstructure:"prefix-set-name"` // original -> rpol:prefix - PrefixList []Prefix -} - -//struct for container rpol:prefix-sets -type PrefixSets struct { - // original -> rpol:prefix-set - PrefixSetList []PrefixSet + PrefixList []Prefix `mapstructure:"prefix-list"` } //struct for container rpol:defined-sets type DefinedSets struct { // original -> rpol:prefix-sets - PrefixSets PrefixSets + PrefixSets []PrefixSet `mapstructure:"prefix-sets"` // original -> rpol:neighbor-sets - NeighborSets NeighborSets + NeighborSets []NeighborSet `mapstructure:"neighbor-sets"` // original -> rpol:tag-sets - TagSets TagSets + TagSets []TagSet `mapstructure:"tag-sets"` // original -> bgp-pol:bgp-defined-sets - BgpDefinedSets BgpDefinedSets + BgpDefinedSets BgpDefinedSets `mapstructure:"bgp-defined-sets"` } //struct for container rpol:routing-policy type RoutingPolicy struct { // original -> rpol:defined-sets - DefinedSets DefinedSets + DefinedSets DefinedSets `mapstructure:"defined-sets"` // original -> rpol:policy-definitions - PolicyDefinitions PolicyDefinitions + PolicyDefinitions []PolicyDefinition `mapstructure:"policy-definitions"` } diff --git a/config/default.go b/config/default.go index 0cc55680..82a17446 100644 --- a/config/default.go +++ b/config/default.go @@ -5,7 +5,6 @@ import ( "github.com/osrg/gobgp/packet" "github.com/spf13/viper" "net" - "strings" ) const ( @@ -20,8 +19,8 @@ func SetDefaultConfigValues(v *viper.Viper, b *Bgp) error { if v == nil { v = viper.New() } - if !v.IsSet("global.afisafis.afisafilist") { - b.Global.AfiSafis.AfiSafiList = []AfiSafi{ + if !v.IsSet("global.afi-safis") { + b.Global.AfiSafis = []AfiSafi{ AfiSafi{AfiSafiName: "ipv4-unicast"}, AfiSafi{AfiSafiName: "ipv6-unicast"}, AfiSafi{AfiSafiName: "l3vpn-ipv4-unicast"}, @@ -40,65 +39,66 @@ func SetDefaultConfigValues(v *viper.Viper, b *Bgp) error { b.Global.ListenConfig.Port = bgp.BGP_PORT } - for idx, server := range b.BmpServers.BmpServerList { + for idx, server := range b.BmpServers { if server.Config.Port == 0 { server.Config.Port = bgp.BMP_DEFAULT_PORT } - b.BmpServers.BmpServerList[idx] = server + b.BmpServers[idx] = server } - if !v.IsSet("global.mplslabelrange.minlabel") { + if !v.IsSet("global.mpls-label-range.min-label") { b.Global.MplsLabelRange.MinLabel = DEFAULT_MPLS_LABEL_MIN } - if !v.IsSet("global.mplslabelrange.maxlabel") { + if !v.IsSet("global.mpls-label-range.max-label") { b.Global.MplsLabelRange.MaxLabel = DEFAULT_MPLS_LABEL_MAX } + + // yaml is decoded as []interface{} + // but toml is decoded as []map[string]interface{}. + // currently, viper can't hide this difference. + // handle the difference here. var list []interface{} - for k, val := range v.GetStringMap("neighbors") { - if strings.ToLower(k) == "neighborlist" { - var ok bool - // yaml is decoded as []interface{} - // but toml is decoded as []map[string]interface{}. - // currently, viper can't hide this difference. - // handle the difference here. - list, ok = val.([]interface{}) + intf := v.Get("neighbors") + if intf != nil { + var ok bool + list, ok = intf.([]interface{}) + if !ok { + l, ok := intf.([]map[string]interface{}) if !ok { - l, ok := val.([]map[string]interface{}) - if !ok { - return fmt.Errorf("invalid configuration: neighborlist must be a list") - } - for _, m := range l { - list = append(list, m) - } + return fmt.Errorf("invalid configuration: neighborlist must be a list") + } + list = make([]interface{}, 0, len(l)) + for _, m := range l { + list = append(list, m) } } } - for idx, n := range b.Neighbors.NeighborList { + for idx, n := range b.Neighbors { vv := viper.New() if len(list) > idx { vv.Set("neighbor", list[idx]) } - if !vv.IsSet("neighbor.timers.config.connectretry") { + if !vv.IsSet("neighbor.timers.config.connect-retry") { n.Timers.Config.ConnectRetry = float64(DEFAULT_CONNECT_RETRY) } - if !vv.IsSet("neighbor.timers.config.holdtime") { + if !vv.IsSet("neighbor.timers.config.hold-time") { n.Timers.Config.HoldTime = float64(DEFAULT_HOLDTIME) } - if !vv.IsSet("neighbor.timers.config.keepaliveinterval") { + if !vv.IsSet("neighbor.timers.config.keepalive-interval") { n.Timers.Config.KeepaliveInterval = n.Timers.Config.HoldTime / 3 } - if !vv.IsSet("neighbor.timers.config.idleholdtimeafterreset") { + if !vv.IsSet("neighbor.timers.config.idle-hold-time-after-reset") { n.Timers.Config.IdleHoldTimeAfterReset = float64(DEFAULT_IDLE_HOLDTIME_AFTER_RESET) } - if !vv.IsSet("neighbor.afisafis.afisafilist") { + if !vv.IsSet("neighbor.afi-safis") { if ip := net.ParseIP(n.Config.NeighborAddress); ip.To4() != nil { - n.AfiSafis.AfiSafiList = []AfiSafi{ + n.AfiSafis = []AfiSafi{ AfiSafi{AfiSafiName: "ipv4-unicast"}, } } else if ip.To16() != nil { - n.AfiSafis.AfiSafiList = []AfiSafi{ + n.AfiSafis = []AfiSafi{ AfiSafi{AfiSafiName: "ipv6-unicast"}, } } else { @@ -106,17 +106,17 @@ func SetDefaultConfigValues(v *viper.Viper, b *Bgp) error { } } - if !vv.IsSet("neighbor.config.peertype") { + if !vv.IsSet("neighbor.config.peer-type") { if n.Config.PeerAs != b.Global.Config.As { n.Config.PeerType = PEER_TYPE_EXTERNAL } else { n.Config.PeerType = PEER_TYPE_INTERNAL } } - b.Neighbors.NeighborList[idx] = n + b.Neighbors[idx] = n } - for _, r := range b.RpkiServers.RpkiServerList { + for _, r := range b.RpkiServers { if r.Config.Port == 0 { r.Config.Port = bgp.RPKI_DEFAULT_PORT } diff --git a/config/serve.go b/config/serve.go index 6de993b8..10eed911 100644 --- a/config/serve.go +++ b/config/serve.go @@ -78,23 +78,23 @@ func UpdateConfig(curC *Bgp, newC *Bgp) (*Bgp, []Neighbor, []Neighbor, []Neighbo deleted := []Neighbor{} updated := []Neighbor{} - for _, n := range newC.Neighbors.NeighborList { - if idx := inSlice(n, curC.Neighbors.NeighborList); idx < 0 { + for _, n := range newC.Neighbors { + if idx := inSlice(n, curC.Neighbors); idx < 0 { added = append(added, n) } else { - if !reflect.DeepEqual(n.ApplyPolicy, curC.Neighbors.NeighborList[idx].ApplyPolicy) { + if !reflect.DeepEqual(n.ApplyPolicy, curC.Neighbors[idx].ApplyPolicy) { updated = append(updated, n) } } } - for _, n := range curC.Neighbors.NeighborList { - if inSlice(n, newC.Neighbors.NeighborList) < 0 { + for _, n := range curC.Neighbors { + if inSlice(n, newC.Neighbors) < 0 { deleted = append(deleted, n) } } - bgpConfig.Neighbors.NeighborList = newC.Neighbors.NeighborList + bgpConfig.Neighbors = newC.Neighbors return &bgpConfig, added, deleted, updated } diff --git a/config/util.go b/config/util.go index cc7cbba1..ca2ebe4c 100644 --- a/config/util.go +++ b/config/util.go @@ -21,7 +21,7 @@ import ( func IsConfederationMember(g *Global, p *Neighbor) bool { if p.Config.PeerAs != g.Config.As { - for _, member := range g.Confederation.Config.MemberAs { + for _, member := range g.Confederation.Config.MemberAsList { if member == p.Config.PeerAs { return true } @@ -34,9 +34,11 @@ func IsEBGPPeer(g *Global, p *Neighbor) bool { return p.Config.PeerAs != g.Config.As } +type AfiSafis []AfiSafi + func (c AfiSafis) ToRfList() ([]bgp.RouteFamily, error) { - rfs := make([]bgp.RouteFamily, 0, len(c.AfiSafiList)) - for _, rf := range c.AfiSafiList { + rfs := make([]bgp.RouteFamily, 0, len(c)) + for _, rf := range c { k, err := bgp.GetRouteFamily(rf.AfiSafiName) if err != nil { return nil, err @@ -47,7 +49,7 @@ func (c AfiSafis) ToRfList() ([]bgp.RouteFamily, error) { } func CreateRfMap(p *Neighbor) map[bgp.RouteFamily]bool { - rfs, _ := p.AfiSafis.ToRfList() + rfs, _ := AfiSafis(p.AfiSafis).ToRfList() rfMap := make(map[bgp.RouteFamily]bool) for _, rf := range rfs { rfMap[rf] = true |