mirror of
https://github.com/cloudnativelabs/kube-router.git
synced 2025-10-17 21:01:06 +02:00
5080 lines
152 KiB
Go
5080 lines
152 KiB
Go
// DO NOT EDIT
|
|
// generated by pyang using OpenConfig https://github.com/openconfig/public
|
|
//
|
|
// Copyright (C) 2014-2016 Nippon Telegraph and Telephone Corporation.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
// implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package config
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/osrg/gobgp/packet/bgp"
|
|
)
|
|
|
|
func mapkey(index int, name string) string {
|
|
if name != "" {
|
|
return name
|
|
}
|
|
return fmt.Sprintf("%v", index)
|
|
}
|
|
|
|
// typedef for typedef openconfig-types:std-regexp
|
|
type StdRegexp string
|
|
|
|
// typedef for typedef openconfig-types:percentage
|
|
type Percentage uint8
|
|
|
|
// typedef for typedef bgp-types:rr-cluster-id-type
|
|
type RrClusterIdType string
|
|
|
|
// typedef for identity bgp-types:remove-private-as-option
|
|
type RemovePrivateAsOption string
|
|
|
|
const (
|
|
REMOVE_PRIVATE_AS_OPTION_ALL RemovePrivateAsOption = "all"
|
|
REMOVE_PRIVATE_AS_OPTION_REPLACE RemovePrivateAsOption = "replace"
|
|
)
|
|
|
|
var RemovePrivateAsOptionToIntMap = map[RemovePrivateAsOption]int{
|
|
REMOVE_PRIVATE_AS_OPTION_ALL: 0,
|
|
REMOVE_PRIVATE_AS_OPTION_REPLACE: 1,
|
|
}
|
|
|
|
func (v RemovePrivateAsOption) ToInt() int {
|
|
i, ok := RemovePrivateAsOptionToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToRemovePrivateAsOptionMap = map[int]RemovePrivateAsOption{
|
|
0: REMOVE_PRIVATE_AS_OPTION_ALL,
|
|
1: REMOVE_PRIVATE_AS_OPTION_REPLACE,
|
|
}
|
|
|
|
func (v RemovePrivateAsOption) Validate() error {
|
|
if _, ok := RemovePrivateAsOptionToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid RemovePrivateAsOption: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for typedef bgp-types:bgp-community-regexp-type
|
|
type BgpCommunityRegexpType StdRegexp
|
|
|
|
// typedef for identity bgp-types:community-type
|
|
type CommunityType string
|
|
|
|
const (
|
|
COMMUNITY_TYPE_STANDARD CommunityType = "standard"
|
|
COMMUNITY_TYPE_EXTENDED CommunityType = "extended"
|
|
COMMUNITY_TYPE_BOTH CommunityType = "both"
|
|
COMMUNITY_TYPE_NONE CommunityType = "none"
|
|
)
|
|
|
|
var CommunityTypeToIntMap = map[CommunityType]int{
|
|
COMMUNITY_TYPE_STANDARD: 0,
|
|
COMMUNITY_TYPE_EXTENDED: 1,
|
|
COMMUNITY_TYPE_BOTH: 2,
|
|
COMMUNITY_TYPE_NONE: 3,
|
|
}
|
|
|
|
func (v CommunityType) ToInt() int {
|
|
i, ok := CommunityTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToCommunityTypeMap = map[int]CommunityType{
|
|
0: COMMUNITY_TYPE_STANDARD,
|
|
1: COMMUNITY_TYPE_EXTENDED,
|
|
2: COMMUNITY_TYPE_BOTH,
|
|
3: COMMUNITY_TYPE_NONE,
|
|
}
|
|
|
|
func (v CommunityType) Validate() error {
|
|
if _, ok := CommunityTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid CommunityType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for typedef bgp-types:bgp-ext-community-type
|
|
type BgpExtCommunityType string
|
|
|
|
// typedef for typedef bgp-types:bgp-std-community-type
|
|
type BgpStdCommunityType string
|
|
|
|
// typedef for identity bgp-types:peer-type
|
|
type PeerType string
|
|
|
|
const (
|
|
PEER_TYPE_INTERNAL PeerType = "internal"
|
|
PEER_TYPE_EXTERNAL PeerType = "external"
|
|
)
|
|
|
|
var PeerTypeToIntMap = map[PeerType]int{
|
|
PEER_TYPE_INTERNAL: 0,
|
|
PEER_TYPE_EXTERNAL: 1,
|
|
}
|
|
|
|
func (v PeerType) ToInt() int {
|
|
i, ok := PeerTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToPeerTypeMap = map[int]PeerType{
|
|
0: PEER_TYPE_INTERNAL,
|
|
1: PEER_TYPE_EXTERNAL,
|
|
}
|
|
|
|
func (v PeerType) Validate() error {
|
|
if _, ok := PeerTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid PeerType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp-types:bgp-session-direction
|
|
type BgpSessionDirection string
|
|
|
|
const (
|
|
BGP_SESSION_DIRECTION_INBOUND BgpSessionDirection = "inbound"
|
|
BGP_SESSION_DIRECTION_OUTBOUND BgpSessionDirection = "outbound"
|
|
)
|
|
|
|
var BgpSessionDirectionToIntMap = map[BgpSessionDirection]int{
|
|
BGP_SESSION_DIRECTION_INBOUND: 0,
|
|
BGP_SESSION_DIRECTION_OUTBOUND: 1,
|
|
}
|
|
|
|
func (v BgpSessionDirection) ToInt() int {
|
|
i, ok := BgpSessionDirectionToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToBgpSessionDirectionMap = map[int]BgpSessionDirection{
|
|
0: BGP_SESSION_DIRECTION_INBOUND,
|
|
1: BGP_SESSION_DIRECTION_OUTBOUND,
|
|
}
|
|
|
|
func (v BgpSessionDirection) Validate() error {
|
|
if _, ok := BgpSessionDirectionToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid BgpSessionDirection: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp-types:bgp-origin-attr-type
|
|
type BgpOriginAttrType string
|
|
|
|
const (
|
|
BGP_ORIGIN_ATTR_TYPE_IGP BgpOriginAttrType = "igp"
|
|
BGP_ORIGIN_ATTR_TYPE_EGP BgpOriginAttrType = "egp"
|
|
BGP_ORIGIN_ATTR_TYPE_INCOMPLETE BgpOriginAttrType = "incomplete"
|
|
)
|
|
|
|
var BgpOriginAttrTypeToIntMap = map[BgpOriginAttrType]int{
|
|
BGP_ORIGIN_ATTR_TYPE_IGP: 0,
|
|
BGP_ORIGIN_ATTR_TYPE_EGP: 1,
|
|
BGP_ORIGIN_ATTR_TYPE_INCOMPLETE: 2,
|
|
}
|
|
|
|
func (v BgpOriginAttrType) ToInt() int {
|
|
i, ok := BgpOriginAttrTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToBgpOriginAttrTypeMap = map[int]BgpOriginAttrType{
|
|
0: BGP_ORIGIN_ATTR_TYPE_IGP,
|
|
1: BGP_ORIGIN_ATTR_TYPE_EGP,
|
|
2: BGP_ORIGIN_ATTR_TYPE_INCOMPLETE,
|
|
}
|
|
|
|
func (v BgpOriginAttrType) Validate() error {
|
|
if _, ok := BgpOriginAttrTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid BgpOriginAttrType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp-types:afi-safi-type
|
|
type AfiSafiType string
|
|
|
|
const (
|
|
AFI_SAFI_TYPE_IPV4_UNICAST AfiSafiType = "ipv4-unicast"
|
|
AFI_SAFI_TYPE_IPV6_UNICAST AfiSafiType = "ipv6-unicast"
|
|
AFI_SAFI_TYPE_IPV4_LABELLED_UNICAST AfiSafiType = "ipv4-labelled-unicast"
|
|
AFI_SAFI_TYPE_IPV6_LABELLED_UNICAST AfiSafiType = "ipv6-labelled-unicast"
|
|
AFI_SAFI_TYPE_L3VPN_IPV4_UNICAST AfiSafiType = "l3vpn-ipv4-unicast"
|
|
AFI_SAFI_TYPE_L3VPN_IPV6_UNICAST AfiSafiType = "l3vpn-ipv6-unicast"
|
|
AFI_SAFI_TYPE_L3VPN_IPV4_MULTICAST AfiSafiType = "l3vpn-ipv4-multicast"
|
|
AFI_SAFI_TYPE_L3VPN_IPV6_MULTICAST AfiSafiType = "l3vpn-ipv6-multicast"
|
|
AFI_SAFI_TYPE_L2VPN_VPLS AfiSafiType = "l2vpn-vpls"
|
|
AFI_SAFI_TYPE_L2VPN_EVPN AfiSafiType = "l2vpn-evpn"
|
|
AFI_SAFI_TYPE_IPV4_MULTICAST AfiSafiType = "ipv4-multicast"
|
|
AFI_SAFI_TYPE_IPV6_MULTICAST AfiSafiType = "ipv6-multicast"
|
|
AFI_SAFI_TYPE_RTC AfiSafiType = "rtc"
|
|
AFI_SAFI_TYPE_IPV4_ENCAP AfiSafiType = "ipv4-encap"
|
|
AFI_SAFI_TYPE_IPV6_ENCAP AfiSafiType = "ipv6-encap"
|
|
AFI_SAFI_TYPE_IPV4_FLOWSPEC AfiSafiType = "ipv4-flowspec"
|
|
AFI_SAFI_TYPE_L3VPN_IPV4_FLOWSPEC AfiSafiType = "l3vpn-ipv4-flowspec"
|
|
AFI_SAFI_TYPE_IPV6_FLOWSPEC AfiSafiType = "ipv6-flowspec"
|
|
AFI_SAFI_TYPE_L3VPN_IPV6_FLOWSPEC AfiSafiType = "l3vpn-ipv6-flowspec"
|
|
AFI_SAFI_TYPE_L2VPN_FLOWSPEC AfiSafiType = "l2vpn-flowspec"
|
|
AFI_SAFI_TYPE_OPAQUE AfiSafiType = "opaque"
|
|
)
|
|
|
|
var AfiSafiTypeToIntMap = map[AfiSafiType]int{
|
|
AFI_SAFI_TYPE_IPV4_UNICAST: 0,
|
|
AFI_SAFI_TYPE_IPV6_UNICAST: 1,
|
|
AFI_SAFI_TYPE_IPV4_LABELLED_UNICAST: 2,
|
|
AFI_SAFI_TYPE_IPV6_LABELLED_UNICAST: 3,
|
|
AFI_SAFI_TYPE_L3VPN_IPV4_UNICAST: 4,
|
|
AFI_SAFI_TYPE_L3VPN_IPV6_UNICAST: 5,
|
|
AFI_SAFI_TYPE_L3VPN_IPV4_MULTICAST: 6,
|
|
AFI_SAFI_TYPE_L3VPN_IPV6_MULTICAST: 7,
|
|
AFI_SAFI_TYPE_L2VPN_VPLS: 8,
|
|
AFI_SAFI_TYPE_L2VPN_EVPN: 9,
|
|
AFI_SAFI_TYPE_IPV4_MULTICAST: 10,
|
|
AFI_SAFI_TYPE_IPV6_MULTICAST: 11,
|
|
AFI_SAFI_TYPE_RTC: 12,
|
|
AFI_SAFI_TYPE_IPV4_ENCAP: 13,
|
|
AFI_SAFI_TYPE_IPV6_ENCAP: 14,
|
|
AFI_SAFI_TYPE_IPV4_FLOWSPEC: 15,
|
|
AFI_SAFI_TYPE_L3VPN_IPV4_FLOWSPEC: 16,
|
|
AFI_SAFI_TYPE_IPV6_FLOWSPEC: 17,
|
|
AFI_SAFI_TYPE_L3VPN_IPV6_FLOWSPEC: 18,
|
|
AFI_SAFI_TYPE_L2VPN_FLOWSPEC: 19,
|
|
AFI_SAFI_TYPE_OPAQUE: 20,
|
|
}
|
|
|
|
func (v AfiSafiType) ToInt() int {
|
|
i, ok := AfiSafiTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToAfiSafiTypeMap = map[int]AfiSafiType{
|
|
0: AFI_SAFI_TYPE_IPV4_UNICAST,
|
|
1: AFI_SAFI_TYPE_IPV6_UNICAST,
|
|
2: AFI_SAFI_TYPE_IPV4_LABELLED_UNICAST,
|
|
3: AFI_SAFI_TYPE_IPV6_LABELLED_UNICAST,
|
|
4: AFI_SAFI_TYPE_L3VPN_IPV4_UNICAST,
|
|
5: AFI_SAFI_TYPE_L3VPN_IPV6_UNICAST,
|
|
6: AFI_SAFI_TYPE_L3VPN_IPV4_MULTICAST,
|
|
7: AFI_SAFI_TYPE_L3VPN_IPV6_MULTICAST,
|
|
8: AFI_SAFI_TYPE_L2VPN_VPLS,
|
|
9: AFI_SAFI_TYPE_L2VPN_EVPN,
|
|
10: AFI_SAFI_TYPE_IPV4_MULTICAST,
|
|
11: AFI_SAFI_TYPE_IPV6_MULTICAST,
|
|
12: AFI_SAFI_TYPE_RTC,
|
|
13: AFI_SAFI_TYPE_IPV4_ENCAP,
|
|
14: AFI_SAFI_TYPE_IPV6_ENCAP,
|
|
15: AFI_SAFI_TYPE_IPV4_FLOWSPEC,
|
|
16: AFI_SAFI_TYPE_L3VPN_IPV4_FLOWSPEC,
|
|
17: AFI_SAFI_TYPE_IPV6_FLOWSPEC,
|
|
18: AFI_SAFI_TYPE_L3VPN_IPV6_FLOWSPEC,
|
|
19: AFI_SAFI_TYPE_L2VPN_FLOWSPEC,
|
|
20: AFI_SAFI_TYPE_OPAQUE,
|
|
}
|
|
|
|
func (v AfiSafiType) Validate() error {
|
|
if _, ok := AfiSafiTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid AfiSafiType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp-types:bgp-capability
|
|
type BgpCapability string
|
|
|
|
const (
|
|
BGP_CAPABILITY_MPBGP BgpCapability = "mpbgp"
|
|
BGP_CAPABILITY_ROUTE_REFRESH BgpCapability = "route-refresh"
|
|
BGP_CAPABILITY_ASN32 BgpCapability = "asn32"
|
|
BGP_CAPABILITY_GRACEFUL_RESTART BgpCapability = "graceful-restart"
|
|
BGP_CAPABILITY_ADD_PATHS BgpCapability = "add-paths"
|
|
)
|
|
|
|
var BgpCapabilityToIntMap = map[BgpCapability]int{
|
|
BGP_CAPABILITY_MPBGP: 0,
|
|
BGP_CAPABILITY_ROUTE_REFRESH: 1,
|
|
BGP_CAPABILITY_ASN32: 2,
|
|
BGP_CAPABILITY_GRACEFUL_RESTART: 3,
|
|
BGP_CAPABILITY_ADD_PATHS: 4,
|
|
}
|
|
|
|
func (v BgpCapability) ToInt() int {
|
|
i, ok := BgpCapabilityToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToBgpCapabilityMap = map[int]BgpCapability{
|
|
0: BGP_CAPABILITY_MPBGP,
|
|
1: BGP_CAPABILITY_ROUTE_REFRESH,
|
|
2: BGP_CAPABILITY_ASN32,
|
|
3: BGP_CAPABILITY_GRACEFUL_RESTART,
|
|
4: BGP_CAPABILITY_ADD_PATHS,
|
|
}
|
|
|
|
func (v BgpCapability) Validate() error {
|
|
if _, ok := BgpCapabilityToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid BgpCapability: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp-types:bgp-well-known-std-community
|
|
type BgpWellKnownStdCommunity string
|
|
|
|
const (
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT BgpWellKnownStdCommunity = "no_export"
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NO_ADVERTISE BgpWellKnownStdCommunity = "no_advertise"
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT_SUBCONFED BgpWellKnownStdCommunity = "no_export_subconfed"
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NOPEER BgpWellKnownStdCommunity = "nopeer"
|
|
)
|
|
|
|
var BgpWellKnownStdCommunityToIntMap = map[BgpWellKnownStdCommunity]int{
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT: 0,
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NO_ADVERTISE: 1,
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT_SUBCONFED: 2,
|
|
BGP_WELL_KNOWN_STD_COMMUNITY_NOPEER: 3,
|
|
}
|
|
|
|
func (v BgpWellKnownStdCommunity) ToInt() int {
|
|
i, ok := BgpWellKnownStdCommunityToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToBgpWellKnownStdCommunityMap = map[int]BgpWellKnownStdCommunity{
|
|
0: BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT,
|
|
1: BGP_WELL_KNOWN_STD_COMMUNITY_NO_ADVERTISE,
|
|
2: BGP_WELL_KNOWN_STD_COMMUNITY_NO_EXPORT_SUBCONFED,
|
|
3: BGP_WELL_KNOWN_STD_COMMUNITY_NOPEER,
|
|
}
|
|
|
|
func (v BgpWellKnownStdCommunity) Validate() error {
|
|
if _, ok := BgpWellKnownStdCommunityToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid BgpWellKnownStdCommunity: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity ptypes:match-set-options-restricted-type
|
|
type MatchSetOptionsRestrictedType string
|
|
|
|
const (
|
|
MATCH_SET_OPTIONS_RESTRICTED_TYPE_ANY MatchSetOptionsRestrictedType = "any"
|
|
MATCH_SET_OPTIONS_RESTRICTED_TYPE_INVERT MatchSetOptionsRestrictedType = "invert"
|
|
)
|
|
|
|
var MatchSetOptionsRestrictedTypeToIntMap = map[MatchSetOptionsRestrictedType]int{
|
|
MATCH_SET_OPTIONS_RESTRICTED_TYPE_ANY: 0,
|
|
MATCH_SET_OPTIONS_RESTRICTED_TYPE_INVERT: 1,
|
|
}
|
|
|
|
func (v MatchSetOptionsRestrictedType) ToInt() int {
|
|
i, ok := MatchSetOptionsRestrictedTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToMatchSetOptionsRestrictedTypeMap = map[int]MatchSetOptionsRestrictedType{
|
|
0: MATCH_SET_OPTIONS_RESTRICTED_TYPE_ANY,
|
|
1: MATCH_SET_OPTIONS_RESTRICTED_TYPE_INVERT,
|
|
}
|
|
|
|
func (v MatchSetOptionsRestrictedType) Validate() error {
|
|
if _, ok := MatchSetOptionsRestrictedTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid MatchSetOptionsRestrictedType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (v MatchSetOptionsRestrictedType) Default() MatchSetOptionsRestrictedType {
|
|
return MATCH_SET_OPTIONS_RESTRICTED_TYPE_ANY
|
|
}
|
|
|
|
func (v MatchSetOptionsRestrictedType) DefaultAsNeeded() MatchSetOptionsRestrictedType {
|
|
if string(v) == "" {
|
|
return v.Default()
|
|
}
|
|
return v
|
|
}
|
|
|
|
// typedef for identity ptypes:match-set-options-type
|
|
type MatchSetOptionsType string
|
|
|
|
const (
|
|
MATCH_SET_OPTIONS_TYPE_ANY MatchSetOptionsType = "any"
|
|
MATCH_SET_OPTIONS_TYPE_ALL MatchSetOptionsType = "all"
|
|
MATCH_SET_OPTIONS_TYPE_INVERT MatchSetOptionsType = "invert"
|
|
)
|
|
|
|
var MatchSetOptionsTypeToIntMap = map[MatchSetOptionsType]int{
|
|
MATCH_SET_OPTIONS_TYPE_ANY: 0,
|
|
MATCH_SET_OPTIONS_TYPE_ALL: 1,
|
|
MATCH_SET_OPTIONS_TYPE_INVERT: 2,
|
|
}
|
|
|
|
func (v MatchSetOptionsType) ToInt() int {
|
|
i, ok := MatchSetOptionsTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToMatchSetOptionsTypeMap = map[int]MatchSetOptionsType{
|
|
0: MATCH_SET_OPTIONS_TYPE_ANY,
|
|
1: MATCH_SET_OPTIONS_TYPE_ALL,
|
|
2: MATCH_SET_OPTIONS_TYPE_INVERT,
|
|
}
|
|
|
|
func (v MatchSetOptionsType) Validate() error {
|
|
if _, ok := MatchSetOptionsTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid MatchSetOptionsType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (v MatchSetOptionsType) Default() MatchSetOptionsType {
|
|
return MATCH_SET_OPTIONS_TYPE_ANY
|
|
}
|
|
|
|
func (v MatchSetOptionsType) DefaultAsNeeded() MatchSetOptionsType {
|
|
if string(v) == "" {
|
|
return v.Default()
|
|
}
|
|
return v
|
|
}
|
|
|
|
// typedef for typedef ptypes:tag-type
|
|
type TagType string
|
|
|
|
// typedef for identity ptypes:install-protocol-type
|
|
type InstallProtocolType string
|
|
|
|
const (
|
|
INSTALL_PROTOCOL_TYPE_BGP InstallProtocolType = "bgp"
|
|
INSTALL_PROTOCOL_TYPE_ISIS InstallProtocolType = "isis"
|
|
INSTALL_PROTOCOL_TYPE_OSPF InstallProtocolType = "ospf"
|
|
INSTALL_PROTOCOL_TYPE_OSPF3 InstallProtocolType = "ospf3"
|
|
INSTALL_PROTOCOL_TYPE_STATIC InstallProtocolType = "static"
|
|
INSTALL_PROTOCOL_TYPE_DIRECTLY_CONNECTED InstallProtocolType = "directly-connected"
|
|
INSTALL_PROTOCOL_TYPE_LOCAL_AGGREGATE InstallProtocolType = "local-aggregate"
|
|
)
|
|
|
|
var InstallProtocolTypeToIntMap = map[InstallProtocolType]int{
|
|
INSTALL_PROTOCOL_TYPE_BGP: 0,
|
|
INSTALL_PROTOCOL_TYPE_ISIS: 1,
|
|
INSTALL_PROTOCOL_TYPE_OSPF: 2,
|
|
INSTALL_PROTOCOL_TYPE_OSPF3: 3,
|
|
INSTALL_PROTOCOL_TYPE_STATIC: 4,
|
|
INSTALL_PROTOCOL_TYPE_DIRECTLY_CONNECTED: 5,
|
|
INSTALL_PROTOCOL_TYPE_LOCAL_AGGREGATE: 6,
|
|
}
|
|
|
|
func (v InstallProtocolType) ToInt() int {
|
|
i, ok := InstallProtocolTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToInstallProtocolTypeMap = map[int]InstallProtocolType{
|
|
0: INSTALL_PROTOCOL_TYPE_BGP,
|
|
1: INSTALL_PROTOCOL_TYPE_ISIS,
|
|
2: INSTALL_PROTOCOL_TYPE_OSPF,
|
|
3: INSTALL_PROTOCOL_TYPE_OSPF3,
|
|
4: INSTALL_PROTOCOL_TYPE_STATIC,
|
|
5: INSTALL_PROTOCOL_TYPE_DIRECTLY_CONNECTED,
|
|
6: INSTALL_PROTOCOL_TYPE_LOCAL_AGGREGATE,
|
|
}
|
|
|
|
func (v InstallProtocolType) Validate() error {
|
|
if _, ok := InstallProtocolTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid InstallProtocolType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity ptypes:attribute-comparison
|
|
type AttributeComparison string
|
|
|
|
const (
|
|
ATTRIBUTE_COMPARISON_ATTRIBUTE_EQ AttributeComparison = "attribute-eq"
|
|
ATTRIBUTE_COMPARISON_ATTRIBUTE_GE AttributeComparison = "attribute-ge"
|
|
ATTRIBUTE_COMPARISON_ATTRIBUTE_LE AttributeComparison = "attribute-le"
|
|
ATTRIBUTE_COMPARISON_EQ AttributeComparison = "eq"
|
|
ATTRIBUTE_COMPARISON_GE AttributeComparison = "ge"
|
|
ATTRIBUTE_COMPARISON_LE AttributeComparison = "le"
|
|
)
|
|
|
|
var AttributeComparisonToIntMap = map[AttributeComparison]int{
|
|
ATTRIBUTE_COMPARISON_ATTRIBUTE_EQ: 0,
|
|
ATTRIBUTE_COMPARISON_ATTRIBUTE_GE: 1,
|
|
ATTRIBUTE_COMPARISON_ATTRIBUTE_LE: 2,
|
|
ATTRIBUTE_COMPARISON_EQ: 3,
|
|
ATTRIBUTE_COMPARISON_GE: 4,
|
|
ATTRIBUTE_COMPARISON_LE: 5,
|
|
}
|
|
|
|
func (v AttributeComparison) ToInt() int {
|
|
i, ok := AttributeComparisonToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToAttributeComparisonMap = map[int]AttributeComparison{
|
|
0: ATTRIBUTE_COMPARISON_ATTRIBUTE_EQ,
|
|
1: ATTRIBUTE_COMPARISON_ATTRIBUTE_GE,
|
|
2: ATTRIBUTE_COMPARISON_ATTRIBUTE_LE,
|
|
3: ATTRIBUTE_COMPARISON_EQ,
|
|
4: ATTRIBUTE_COMPARISON_GE,
|
|
5: ATTRIBUTE_COMPARISON_LE,
|
|
}
|
|
|
|
func (v AttributeComparison) Validate() error {
|
|
if _, ok := AttributeComparisonToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid AttributeComparison: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity rpol:route-disposition
|
|
type RouteDisposition string
|
|
|
|
const (
|
|
ROUTE_DISPOSITION_NONE RouteDisposition = "none"
|
|
ROUTE_DISPOSITION_ACCEPT_ROUTE RouteDisposition = "accept-route"
|
|
ROUTE_DISPOSITION_REJECT_ROUTE RouteDisposition = "reject-route"
|
|
)
|
|
|
|
var RouteDispositionToIntMap = map[RouteDisposition]int{
|
|
ROUTE_DISPOSITION_NONE: 0,
|
|
ROUTE_DISPOSITION_ACCEPT_ROUTE: 1,
|
|
ROUTE_DISPOSITION_REJECT_ROUTE: 2,
|
|
}
|
|
|
|
func (v RouteDisposition) ToInt() int {
|
|
i, ok := RouteDispositionToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToRouteDispositionMap = map[int]RouteDisposition{
|
|
0: ROUTE_DISPOSITION_NONE,
|
|
1: ROUTE_DISPOSITION_ACCEPT_ROUTE,
|
|
2: ROUTE_DISPOSITION_REJECT_ROUTE,
|
|
}
|
|
|
|
func (v RouteDisposition) Validate() error {
|
|
if _, ok := RouteDispositionToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid RouteDisposition: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity rpol:route-type
|
|
type RouteType string
|
|
|
|
const (
|
|
ROUTE_TYPE_NONE RouteType = "none"
|
|
ROUTE_TYPE_INTERNAL RouteType = "internal"
|
|
ROUTE_TYPE_EXTERNAL RouteType = "external"
|
|
ROUTE_TYPE_LOCAL RouteType = "local"
|
|
)
|
|
|
|
var RouteTypeToIntMap = map[RouteType]int{
|
|
ROUTE_TYPE_NONE: 0,
|
|
ROUTE_TYPE_INTERNAL: 1,
|
|
ROUTE_TYPE_EXTERNAL: 2,
|
|
ROUTE_TYPE_LOCAL: 3,
|
|
}
|
|
|
|
func (v RouteType) ToInt() int {
|
|
i, ok := RouteTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToRouteTypeMap = map[int]RouteType{
|
|
0: ROUTE_TYPE_NONE,
|
|
1: ROUTE_TYPE_INTERNAL,
|
|
2: ROUTE_TYPE_EXTERNAL,
|
|
3: ROUTE_TYPE_LOCAL,
|
|
}
|
|
|
|
func (v RouteType) Validate() error {
|
|
if _, ok := RouteTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid RouteType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity rpol:default-policy-type
|
|
type DefaultPolicyType string
|
|
|
|
const (
|
|
DEFAULT_POLICY_TYPE_ACCEPT_ROUTE DefaultPolicyType = "accept-route"
|
|
DEFAULT_POLICY_TYPE_REJECT_ROUTE DefaultPolicyType = "reject-route"
|
|
)
|
|
|
|
var DefaultPolicyTypeToIntMap = map[DefaultPolicyType]int{
|
|
DEFAULT_POLICY_TYPE_ACCEPT_ROUTE: 0,
|
|
DEFAULT_POLICY_TYPE_REJECT_ROUTE: 1,
|
|
}
|
|
|
|
func (v DefaultPolicyType) ToInt() int {
|
|
i, ok := DefaultPolicyTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToDefaultPolicyTypeMap = map[int]DefaultPolicyType{
|
|
0: DEFAULT_POLICY_TYPE_ACCEPT_ROUTE,
|
|
1: DEFAULT_POLICY_TYPE_REJECT_ROUTE,
|
|
}
|
|
|
|
func (v DefaultPolicyType) Validate() error {
|
|
if _, ok := DefaultPolicyTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid DefaultPolicyType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp:session-state
|
|
type SessionState string
|
|
|
|
const (
|
|
SESSION_STATE_IDLE SessionState = "idle"
|
|
SESSION_STATE_CONNECT SessionState = "connect"
|
|
SESSION_STATE_ACTIVE SessionState = "active"
|
|
SESSION_STATE_OPENSENT SessionState = "opensent"
|
|
SESSION_STATE_OPENCONFIRM SessionState = "openconfirm"
|
|
SESSION_STATE_ESTABLISHED SessionState = "established"
|
|
)
|
|
|
|
var SessionStateToIntMap = map[SessionState]int{
|
|
SESSION_STATE_IDLE: 0,
|
|
SESSION_STATE_CONNECT: 1,
|
|
SESSION_STATE_ACTIVE: 2,
|
|
SESSION_STATE_OPENSENT: 3,
|
|
SESSION_STATE_OPENCONFIRM: 4,
|
|
SESSION_STATE_ESTABLISHED: 5,
|
|
}
|
|
|
|
func (v SessionState) ToInt() int {
|
|
i, ok := SessionStateToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToSessionStateMap = map[int]SessionState{
|
|
0: SESSION_STATE_IDLE,
|
|
1: SESSION_STATE_CONNECT,
|
|
2: SESSION_STATE_ACTIVE,
|
|
3: SESSION_STATE_OPENSENT,
|
|
4: SESSION_STATE_OPENCONFIRM,
|
|
5: SESSION_STATE_ESTABLISHED,
|
|
}
|
|
|
|
func (v SessionState) Validate() error {
|
|
if _, ok := SessionStateToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid SessionState: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp:admin-state
|
|
type AdminState string
|
|
|
|
const (
|
|
ADMIN_STATE_UP AdminState = "up"
|
|
ADMIN_STATE_DOWN AdminState = "down"
|
|
ADMIN_STATE_PFX_CT AdminState = "pfx_ct"
|
|
)
|
|
|
|
var AdminStateToIntMap = map[AdminState]int{
|
|
ADMIN_STATE_UP: 0,
|
|
ADMIN_STATE_DOWN: 1,
|
|
ADMIN_STATE_PFX_CT: 2,
|
|
}
|
|
|
|
func (v AdminState) ToInt() int {
|
|
i, ok := AdminStateToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToAdminStateMap = map[int]AdminState{
|
|
0: ADMIN_STATE_UP,
|
|
1: ADMIN_STATE_DOWN,
|
|
2: ADMIN_STATE_PFX_CT,
|
|
}
|
|
|
|
func (v AdminState) Validate() error {
|
|
if _, ok := AdminStateToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid AdminState: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity bgp:mode
|
|
type Mode string
|
|
|
|
const (
|
|
MODE_HELPER_ONLY Mode = "helper-only"
|
|
MODE_BILATERAL Mode = "bilateral"
|
|
MODE_REMOTE_HELPER Mode = "remote-helper"
|
|
)
|
|
|
|
var ModeToIntMap = map[Mode]int{
|
|
MODE_HELPER_ONLY: 0,
|
|
MODE_BILATERAL: 1,
|
|
MODE_REMOTE_HELPER: 2,
|
|
}
|
|
|
|
func (v Mode) ToInt() int {
|
|
i, ok := ModeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToModeMap = map[int]Mode{
|
|
0: MODE_HELPER_ONLY,
|
|
1: MODE_BILATERAL,
|
|
2: MODE_REMOTE_HELPER,
|
|
}
|
|
|
|
func (v Mode) Validate() error {
|
|
if _, ok := ModeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid Mode: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for typedef bgp-pol:bgp-next-hop-type
|
|
type BgpNextHopType string
|
|
|
|
// typedef for typedef bgp-pol:bgp-as-path-prepend-repeat
|
|
type BgpAsPathPrependRepeat uint8
|
|
|
|
// typedef for typedef bgp-pol:bgp-set-med-type
|
|
type BgpSetMedType string
|
|
|
|
// typedef for identity bgp-pol:bgp-set-community-option-type
|
|
type BgpSetCommunityOptionType string
|
|
|
|
const (
|
|
BGP_SET_COMMUNITY_OPTION_TYPE_ADD BgpSetCommunityOptionType = "add"
|
|
BGP_SET_COMMUNITY_OPTION_TYPE_REMOVE BgpSetCommunityOptionType = "remove"
|
|
BGP_SET_COMMUNITY_OPTION_TYPE_REPLACE BgpSetCommunityOptionType = "replace"
|
|
)
|
|
|
|
var BgpSetCommunityOptionTypeToIntMap = map[BgpSetCommunityOptionType]int{
|
|
BGP_SET_COMMUNITY_OPTION_TYPE_ADD: 0,
|
|
BGP_SET_COMMUNITY_OPTION_TYPE_REMOVE: 1,
|
|
BGP_SET_COMMUNITY_OPTION_TYPE_REPLACE: 2,
|
|
}
|
|
|
|
func (v BgpSetCommunityOptionType) ToInt() int {
|
|
i, ok := BgpSetCommunityOptionTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToBgpSetCommunityOptionTypeMap = map[int]BgpSetCommunityOptionType{
|
|
0: BGP_SET_COMMUNITY_OPTION_TYPE_ADD,
|
|
1: BGP_SET_COMMUNITY_OPTION_TYPE_REMOVE,
|
|
2: BGP_SET_COMMUNITY_OPTION_TYPE_REPLACE,
|
|
}
|
|
|
|
func (v BgpSetCommunityOptionType) Validate() error {
|
|
if _, ok := BgpSetCommunityOptionTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid BgpSetCommunityOptionType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity gobgp:bmp-route-monitoring-policy-type
|
|
type BmpRouteMonitoringPolicyType string
|
|
|
|
const (
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_PRE_POLICY BmpRouteMonitoringPolicyType = "pre-policy"
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_POST_POLICY BmpRouteMonitoringPolicyType = "post-policy"
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_BOTH BmpRouteMonitoringPolicyType = "both"
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_LOCAL_RIB BmpRouteMonitoringPolicyType = "local-rib"
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_ALL BmpRouteMonitoringPolicyType = "all"
|
|
)
|
|
|
|
var BmpRouteMonitoringPolicyTypeToIntMap = map[BmpRouteMonitoringPolicyType]int{
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_PRE_POLICY: 0,
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_POST_POLICY: 1,
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_BOTH: 2,
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_LOCAL_RIB: 3,
|
|
BMP_ROUTE_MONITORING_POLICY_TYPE_ALL: 4,
|
|
}
|
|
|
|
func (v BmpRouteMonitoringPolicyType) ToInt() int {
|
|
i, ok := BmpRouteMonitoringPolicyTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToBmpRouteMonitoringPolicyTypeMap = map[int]BmpRouteMonitoringPolicyType{
|
|
0: BMP_ROUTE_MONITORING_POLICY_TYPE_PRE_POLICY,
|
|
1: BMP_ROUTE_MONITORING_POLICY_TYPE_POST_POLICY,
|
|
2: BMP_ROUTE_MONITORING_POLICY_TYPE_BOTH,
|
|
3: BMP_ROUTE_MONITORING_POLICY_TYPE_LOCAL_RIB,
|
|
4: BMP_ROUTE_MONITORING_POLICY_TYPE_ALL,
|
|
}
|
|
|
|
func (v BmpRouteMonitoringPolicyType) Validate() error {
|
|
if _, ok := BmpRouteMonitoringPolicyTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid BmpRouteMonitoringPolicyType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity gobgp:mrt-type
|
|
type MrtType string
|
|
|
|
const (
|
|
MRT_TYPE_UPDATES MrtType = "updates"
|
|
MRT_TYPE_TABLE MrtType = "table"
|
|
)
|
|
|
|
var MrtTypeToIntMap = map[MrtType]int{
|
|
MRT_TYPE_UPDATES: 0,
|
|
MRT_TYPE_TABLE: 1,
|
|
}
|
|
|
|
func (v MrtType) ToInt() int {
|
|
i, ok := MrtTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToMrtTypeMap = map[int]MrtType{
|
|
0: MRT_TYPE_UPDATES,
|
|
1: MRT_TYPE_TABLE,
|
|
}
|
|
|
|
func (v MrtType) Validate() error {
|
|
if _, ok := MrtTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid MrtType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// typedef for identity gobgp:rpki-validation-result-type
|
|
type RpkiValidationResultType string
|
|
|
|
const (
|
|
RPKI_VALIDATION_RESULT_TYPE_NONE RpkiValidationResultType = "none"
|
|
RPKI_VALIDATION_RESULT_TYPE_NOT_FOUND RpkiValidationResultType = "not-found"
|
|
RPKI_VALIDATION_RESULT_TYPE_VALID RpkiValidationResultType = "valid"
|
|
RPKI_VALIDATION_RESULT_TYPE_INVALID RpkiValidationResultType = "invalid"
|
|
)
|
|
|
|
var RpkiValidationResultTypeToIntMap = map[RpkiValidationResultType]int{
|
|
RPKI_VALIDATION_RESULT_TYPE_NONE: 0,
|
|
RPKI_VALIDATION_RESULT_TYPE_NOT_FOUND: 1,
|
|
RPKI_VALIDATION_RESULT_TYPE_VALID: 2,
|
|
RPKI_VALIDATION_RESULT_TYPE_INVALID: 3,
|
|
}
|
|
|
|
func (v RpkiValidationResultType) ToInt() int {
|
|
i, ok := RpkiValidationResultTypeToIntMap[v]
|
|
if !ok {
|
|
return -1
|
|
}
|
|
return i
|
|
}
|
|
|
|
var IntToRpkiValidationResultTypeMap = map[int]RpkiValidationResultType{
|
|
0: RPKI_VALIDATION_RESULT_TYPE_NONE,
|
|
1: RPKI_VALIDATION_RESULT_TYPE_NOT_FOUND,
|
|
2: RPKI_VALIDATION_RESULT_TYPE_VALID,
|
|
3: RPKI_VALIDATION_RESULT_TYPE_INVALID,
|
|
}
|
|
|
|
func (v RpkiValidationResultType) Validate() error {
|
|
if _, ok := RpkiValidationResultTypeToIntMap[v]; !ok {
|
|
return fmt.Errorf("invalid RpkiValidationResultType: %s", v)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type DynamicNeighborState struct {
|
|
// original -> gobgp:prefix
|
|
Prefix string `mapstructure:"prefix" json:"prefix,omitempty"`
|
|
// original -> gobgp:peer-group
|
|
PeerGroup string `mapstructure:"peer-group" json:"peer-group,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type DynamicNeighborConfig struct {
|
|
// original -> gobgp:prefix
|
|
Prefix string `mapstructure:"prefix" json:"prefix,omitempty"`
|
|
// original -> gobgp:peer-group
|
|
PeerGroup string `mapstructure:"peer-group" json:"peer-group,omitempty"`
|
|
}
|
|
|
|
func (lhs *DynamicNeighborConfig) Equal(rhs *DynamicNeighborConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Prefix != rhs.Prefix {
|
|
return false
|
|
}
|
|
if lhs.PeerGroup != rhs.PeerGroup {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:dynamic-neighbor
|
|
type DynamicNeighbor struct {
|
|
// original -> gobgp:prefix
|
|
// original -> gobgp:dynamic-neighbor-config
|
|
Config DynamicNeighborConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:dynamic-neighbor-state
|
|
State DynamicNeighborState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *DynamicNeighbor) Equal(rhs *DynamicNeighbor) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type CollectorState struct {
|
|
// original -> gobgp:url
|
|
Url string `mapstructure:"url" json:"url,omitempty"`
|
|
// original -> gobgp:db-name
|
|
DbName string `mapstructure:"db-name" json:"db-name,omitempty"`
|
|
// original -> gobgp:table-dump-interval
|
|
TableDumpInterval uint64 `mapstructure:"table-dump-interval" json:"table-dump-interval,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type CollectorConfig struct {
|
|
// original -> gobgp:url
|
|
Url string `mapstructure:"url" json:"url,omitempty"`
|
|
// original -> gobgp:db-name
|
|
DbName string `mapstructure:"db-name" json:"db-name,omitempty"`
|
|
// original -> gobgp:table-dump-interval
|
|
TableDumpInterval uint64 `mapstructure:"table-dump-interval" json:"table-dump-interval,omitempty"`
|
|
}
|
|
|
|
func (lhs *CollectorConfig) Equal(rhs *CollectorConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Url != rhs.Url {
|
|
return false
|
|
}
|
|
if lhs.DbName != rhs.DbName {
|
|
return false
|
|
}
|
|
if lhs.TableDumpInterval != rhs.TableDumpInterval {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:collector
|
|
type Collector struct {
|
|
// original -> gobgp:collector-config
|
|
Config CollectorConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:collector-state
|
|
State CollectorState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Collector) Equal(rhs *Collector) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type ZebraState struct {
|
|
// original -> gobgp:enabled
|
|
//gobgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> gobgp:url
|
|
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"`
|
|
// original -> gobgp:version
|
|
Version uint8 `mapstructure:"version" json:"version,omitempty"`
|
|
// original -> gobgp:nexthop-trigger-enable
|
|
//gobgp:nexthop-trigger-enable's original type is boolean
|
|
NexthopTriggerEnable bool `mapstructure:"nexthop-trigger-enable" json:"nexthop-trigger-enable,omitempty"`
|
|
// original -> gobgp:nexthop-trigger-delay
|
|
NexthopTriggerDelay uint8 `mapstructure:"nexthop-trigger-delay" json:"nexthop-trigger-delay,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type ZebraConfig struct {
|
|
// original -> gobgp:enabled
|
|
//gobgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> gobgp:url
|
|
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"`
|
|
// original -> gobgp:version
|
|
Version uint8 `mapstructure:"version" json:"version,omitempty"`
|
|
// original -> gobgp:nexthop-trigger-enable
|
|
//gobgp:nexthop-trigger-enable's original type is boolean
|
|
NexthopTriggerEnable bool `mapstructure:"nexthop-trigger-enable" json:"nexthop-trigger-enable,omitempty"`
|
|
// original -> gobgp:nexthop-trigger-delay
|
|
NexthopTriggerDelay uint8 `mapstructure:"nexthop-trigger-delay" json:"nexthop-trigger-delay,omitempty"`
|
|
}
|
|
|
|
func (lhs *ZebraConfig) Equal(rhs *ZebraConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
if lhs.Url != rhs.Url {
|
|
return false
|
|
}
|
|
if len(lhs.RedistributeRouteTypeList) != len(rhs.RedistributeRouteTypeList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.RedistributeRouteTypeList {
|
|
if l != rhs.RedistributeRouteTypeList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if lhs.Version != rhs.Version {
|
|
return false
|
|
}
|
|
if lhs.NexthopTriggerEnable != rhs.NexthopTriggerEnable {
|
|
return false
|
|
}
|
|
if lhs.NexthopTriggerDelay != rhs.NexthopTriggerDelay {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:zebra
|
|
type Zebra struct {
|
|
// original -> gobgp:zebra-config
|
|
Config ZebraConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:zebra-state
|
|
State ZebraState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Zebra) Equal(rhs *Zebra) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type MrtConfig struct {
|
|
// original -> gobgp:dump-type
|
|
DumpType MrtType `mapstructure:"dump-type" json:"dump-type,omitempty"`
|
|
// original -> gobgp:file-name
|
|
FileName string `mapstructure:"file-name" json:"file-name,omitempty"`
|
|
// original -> gobgp:table-name
|
|
TableName string `mapstructure:"table-name" json:"table-name,omitempty"`
|
|
// original -> gobgp:dump-interval
|
|
DumpInterval uint64 `mapstructure:"dump-interval" json:"dump-interval,omitempty"`
|
|
// original -> gobgp:rotation-interval
|
|
RotationInterval uint64 `mapstructure:"rotation-interval" json:"rotation-interval,omitempty"`
|
|
}
|
|
|
|
func (lhs *MrtConfig) Equal(rhs *MrtConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.DumpType != rhs.DumpType {
|
|
return false
|
|
}
|
|
if lhs.FileName != rhs.FileName {
|
|
return false
|
|
}
|
|
if lhs.TableName != rhs.TableName {
|
|
return false
|
|
}
|
|
if lhs.DumpInterval != rhs.DumpInterval {
|
|
return false
|
|
}
|
|
if lhs.RotationInterval != rhs.RotationInterval {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:mrt
|
|
type Mrt struct {
|
|
// original -> gobgp:file-name
|
|
// original -> gobgp:mrt-config
|
|
Config MrtConfig `mapstructure:"config" json:"config,omitempty"`
|
|
}
|
|
|
|
func (lhs *Mrt) Equal(rhs *Mrt) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type BmpServerState struct {
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type BmpServerConfig struct {
|
|
// original -> gobgp:address
|
|
//gobgp:address's original type is inet:ip-address
|
|
Address string `mapstructure:"address" json:"address,omitempty"`
|
|
// original -> gobgp:port
|
|
Port uint32 `mapstructure:"port" json:"port,omitempty"`
|
|
// original -> gobgp:route-monitoring-policy
|
|
RouteMonitoringPolicy BmpRouteMonitoringPolicyType `mapstructure:"route-monitoring-policy" json:"route-monitoring-policy,omitempty"`
|
|
// original -> gobgp:statistics-timeout
|
|
StatisticsTimeout uint16 `mapstructure:"statistics-timeout" json:"statistics-timeout,omitempty"`
|
|
// original -> gobgp:route-mirroring-enabled
|
|
//gobgp:route-mirroring-enabled's original type is boolean
|
|
RouteMirroringEnabled bool `mapstructure:"route-mirroring-enabled" json:"route-mirroring-enabled,omitempty"`
|
|
}
|
|
|
|
func (lhs *BmpServerConfig) Equal(rhs *BmpServerConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Address != rhs.Address {
|
|
return false
|
|
}
|
|
if lhs.Port != rhs.Port {
|
|
return false
|
|
}
|
|
if lhs.RouteMonitoringPolicy != rhs.RouteMonitoringPolicy {
|
|
return false
|
|
}
|
|
if lhs.StatisticsTimeout != rhs.StatisticsTimeout {
|
|
return false
|
|
}
|
|
if lhs.RouteMirroringEnabled != rhs.RouteMirroringEnabled {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:bmp-server
|
|
type BmpServer struct {
|
|
// original -> gobgp:address
|
|
// original -> gobgp:bmp-server-config
|
|
Config BmpServerConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:bmp-server-state
|
|
State BmpServerState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *BmpServer) Equal(rhs *BmpServer) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:rpki-received
|
|
type RpkiReceived struct {
|
|
// original -> gobgp:serial-notify
|
|
SerialNotify int64 `mapstructure:"serial-notify" json:"serial-notify,omitempty"`
|
|
// original -> gobgp:cache-reset
|
|
CacheReset int64 `mapstructure:"cache-reset" json:"cache-reset,omitempty"`
|
|
// original -> gobgp:cache-response
|
|
CacheResponse int64 `mapstructure:"cache-response" json:"cache-response,omitempty"`
|
|
// original -> gobgp:ipv4-prefix
|
|
Ipv4Prefix int64 `mapstructure:"ipv4-prefix" json:"ipv4-prefix,omitempty"`
|
|
// original -> gobgp:ipv6-prefix
|
|
Ipv6Prefix int64 `mapstructure:"ipv6-prefix" json:"ipv6-prefix,omitempty"`
|
|
// original -> gobgp:end-of-data
|
|
EndOfData int64 `mapstructure:"end-of-data" json:"end-of-data,omitempty"`
|
|
// original -> gobgp:error
|
|
Error int64 `mapstructure:"error" json:"error,omitempty"`
|
|
}
|
|
|
|
func (lhs *RpkiReceived) Equal(rhs *RpkiReceived) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.SerialNotify != rhs.SerialNotify {
|
|
return false
|
|
}
|
|
if lhs.CacheReset != rhs.CacheReset {
|
|
return false
|
|
}
|
|
if lhs.CacheResponse != rhs.CacheResponse {
|
|
return false
|
|
}
|
|
if lhs.Ipv4Prefix != rhs.Ipv4Prefix {
|
|
return false
|
|
}
|
|
if lhs.Ipv6Prefix != rhs.Ipv6Prefix {
|
|
return false
|
|
}
|
|
if lhs.EndOfData != rhs.EndOfData {
|
|
return false
|
|
}
|
|
if lhs.Error != rhs.Error {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:rpki-sent
|
|
type RpkiSent struct {
|
|
// original -> gobgp:serial-query
|
|
SerialQuery int64 `mapstructure:"serial-query" json:"serial-query,omitempty"`
|
|
// original -> gobgp:reset-query
|
|
ResetQuery int64 `mapstructure:"reset-query" json:"reset-query,omitempty"`
|
|
// original -> gobgp:error
|
|
Error int64 `mapstructure:"error" json:"error,omitempty"`
|
|
}
|
|
|
|
func (lhs *RpkiSent) Equal(rhs *RpkiSent) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.SerialQuery != rhs.SerialQuery {
|
|
return false
|
|
}
|
|
if lhs.ResetQuery != rhs.ResetQuery {
|
|
return false
|
|
}
|
|
if lhs.Error != rhs.Error {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:rpki-messages
|
|
type RpkiMessages struct {
|
|
// original -> gobgp:rpki-sent
|
|
RpkiSent RpkiSent `mapstructure:"rpki-sent" json:"rpki-sent,omitempty"`
|
|
// original -> gobgp:rpki-received
|
|
RpkiReceived RpkiReceived `mapstructure:"rpki-received" json:"rpki-received,omitempty"`
|
|
}
|
|
|
|
func (lhs *RpkiMessages) Equal(rhs *RpkiMessages) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.RpkiSent.Equal(&(rhs.RpkiSent)) {
|
|
return false
|
|
}
|
|
if !lhs.RpkiReceived.Equal(&(rhs.RpkiReceived)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type RpkiServerState struct {
|
|
// original -> gobgp:up
|
|
//gobgp:up's original type is boolean
|
|
Up bool `mapstructure:"up" json:"up,omitempty"`
|
|
// original -> gobgp:serial-number
|
|
SerialNumber uint32 `mapstructure:"serial-number" json:"serial-number,omitempty"`
|
|
// original -> gobgp:records-v4
|
|
RecordsV4 uint32 `mapstructure:"records-v4" json:"records-v4,omitempty"`
|
|
// original -> gobgp:records-v6
|
|
RecordsV6 uint32 `mapstructure:"records-v6" json:"records-v6,omitempty"`
|
|
// original -> gobgp:prefixes-v4
|
|
PrefixesV4 uint32 `mapstructure:"prefixes-v4" json:"prefixes-v4,omitempty"`
|
|
// original -> gobgp:prefixes-v6
|
|
PrefixesV6 uint32 `mapstructure:"prefixes-v6" json:"prefixes-v6,omitempty"`
|
|
// original -> gobgp:uptime
|
|
Uptime int64 `mapstructure:"uptime" json:"uptime,omitempty"`
|
|
// original -> gobgp:downtime
|
|
Downtime int64 `mapstructure:"downtime" json:"downtime,omitempty"`
|
|
// original -> gobgp:last-pdu-recv-time
|
|
LastPduRecvTime int64 `mapstructure:"last-pdu-recv-time" json:"last-pdu-recv-time,omitempty"`
|
|
// original -> gobgp:rpki-messages
|
|
RpkiMessages RpkiMessages `mapstructure:"rpki-messages" json:"rpki-messages,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type RpkiServerConfig struct {
|
|
// original -> gobgp:address
|
|
//gobgp:address's original type is inet:ip-address
|
|
Address string `mapstructure:"address" json:"address,omitempty"`
|
|
// original -> gobgp:port
|
|
Port uint32 `mapstructure:"port" json:"port,omitempty"`
|
|
// original -> gobgp:refresh-time
|
|
RefreshTime int64 `mapstructure:"refresh-time" json:"refresh-time,omitempty"`
|
|
// original -> gobgp:hold-time
|
|
HoldTime int64 `mapstructure:"hold-time" json:"hold-time,omitempty"`
|
|
// original -> gobgp:record-lifetime
|
|
RecordLifetime int64 `mapstructure:"record-lifetime" json:"record-lifetime,omitempty"`
|
|
// original -> gobgp:preference
|
|
Preference uint8 `mapstructure:"preference" json:"preference,omitempty"`
|
|
}
|
|
|
|
func (lhs *RpkiServerConfig) Equal(rhs *RpkiServerConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Address != rhs.Address {
|
|
return false
|
|
}
|
|
if lhs.Port != rhs.Port {
|
|
return false
|
|
}
|
|
if lhs.RefreshTime != rhs.RefreshTime {
|
|
return false
|
|
}
|
|
if lhs.HoldTime != rhs.HoldTime {
|
|
return false
|
|
}
|
|
if lhs.RecordLifetime != rhs.RecordLifetime {
|
|
return false
|
|
}
|
|
if lhs.Preference != rhs.Preference {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:rpki-server
|
|
type RpkiServer struct {
|
|
// original -> gobgp:address
|
|
// original -> gobgp:rpki-server-config
|
|
Config RpkiServerConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:rpki-server-state
|
|
State RpkiServerState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *RpkiServer) Equal(rhs *RpkiServer) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type PeerGroupState struct {
|
|
// original -> bgp:peer-as
|
|
//bgp:peer-as's original type is inet:as-number
|
|
PeerAs uint32 `mapstructure:"peer-as" json:"peer-as,omitempty"`
|
|
// original -> bgp:local-as
|
|
//bgp:local-as's original type is inet:as-number
|
|
LocalAs uint32 `mapstructure:"local-as" json:"local-as,omitempty"`
|
|
// original -> bgp:peer-type
|
|
PeerType PeerType `mapstructure:"peer-type" json:"peer-type,omitempty"`
|
|
// original -> bgp:auth-password
|
|
AuthPassword string `mapstructure:"auth-password" json:"auth-password,omitempty"`
|
|
// original -> bgp:remove-private-as
|
|
RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as" json:"remove-private-as,omitempty"`
|
|
// original -> bgp:route-flap-damping
|
|
//bgp:route-flap-damping's original type is boolean
|
|
RouteFlapDamping bool `mapstructure:"route-flap-damping" json:"route-flap-damping,omitempty"`
|
|
// original -> bgp:send-community
|
|
SendCommunity CommunityType `mapstructure:"send-community" json:"send-community,omitempty"`
|
|
// original -> bgp:description
|
|
Description string `mapstructure:"description" json:"description,omitempty"`
|
|
// original -> bgp:peer-group-name
|
|
PeerGroupName string `mapstructure:"peer-group-name" json:"peer-group-name,omitempty"`
|
|
// original -> bgp-op:total-paths
|
|
TotalPaths uint32 `mapstructure:"total-paths" json:"total-paths,omitempty"`
|
|
// original -> bgp-op:total-prefixes
|
|
TotalPrefixes uint32 `mapstructure:"total-prefixes" json:"total-prefixes,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type PeerGroupConfig struct {
|
|
// original -> bgp:peer-as
|
|
//bgp:peer-as's original type is inet:as-number
|
|
PeerAs uint32 `mapstructure:"peer-as" json:"peer-as,omitempty"`
|
|
// original -> bgp:local-as
|
|
//bgp:local-as's original type is inet:as-number
|
|
LocalAs uint32 `mapstructure:"local-as" json:"local-as,omitempty"`
|
|
// original -> bgp:peer-type
|
|
PeerType PeerType `mapstructure:"peer-type" json:"peer-type,omitempty"`
|
|
// original -> bgp:auth-password
|
|
AuthPassword string `mapstructure:"auth-password" json:"auth-password,omitempty"`
|
|
// original -> bgp:remove-private-as
|
|
RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as" json:"remove-private-as,omitempty"`
|
|
// original -> bgp:route-flap-damping
|
|
//bgp:route-flap-damping's original type is boolean
|
|
RouteFlapDamping bool `mapstructure:"route-flap-damping" json:"route-flap-damping,omitempty"`
|
|
// original -> bgp:send-community
|
|
SendCommunity CommunityType `mapstructure:"send-community" json:"send-community,omitempty"`
|
|
// original -> bgp:description
|
|
Description string `mapstructure:"description" json:"description,omitempty"`
|
|
// original -> bgp:peer-group-name
|
|
PeerGroupName string `mapstructure:"peer-group-name" json:"peer-group-name,omitempty"`
|
|
}
|
|
|
|
func (lhs *PeerGroupConfig) Equal(rhs *PeerGroupConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.PeerAs != rhs.PeerAs {
|
|
return false
|
|
}
|
|
if lhs.LocalAs != rhs.LocalAs {
|
|
return false
|
|
}
|
|
if lhs.PeerType != rhs.PeerType {
|
|
return false
|
|
}
|
|
if lhs.AuthPassword != rhs.AuthPassword {
|
|
return false
|
|
}
|
|
if lhs.RemovePrivateAs != rhs.RemovePrivateAs {
|
|
return false
|
|
}
|
|
if lhs.RouteFlapDamping != rhs.RouteFlapDamping {
|
|
return false
|
|
}
|
|
if lhs.SendCommunity != rhs.SendCommunity {
|
|
return false
|
|
}
|
|
if lhs.Description != rhs.Description {
|
|
return false
|
|
}
|
|
if lhs.PeerGroupName != rhs.PeerGroupName {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:peer-group
|
|
type PeerGroup struct {
|
|
// original -> bgp:peer-group-name
|
|
// original -> bgp:peer-group-config
|
|
Config PeerGroupConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:peer-group-state
|
|
State PeerGroupState `mapstructure:"state" json:"state,omitempty"`
|
|
// original -> bgp:timers
|
|
Timers Timers `mapstructure:"timers" json:"timers,omitempty"`
|
|
// original -> bgp:transport
|
|
Transport Transport `mapstructure:"transport" json:"transport,omitempty"`
|
|
// original -> bgp:error-handling
|
|
ErrorHandling ErrorHandling `mapstructure:"error-handling" json:"error-handling,omitempty"`
|
|
// original -> bgp:logging-options
|
|
LoggingOptions LoggingOptions `mapstructure:"logging-options" json:"logging-options,omitempty"`
|
|
// original -> bgp:ebgp-multihop
|
|
EbgpMultihop EbgpMultihop `mapstructure:"ebgp-multihop" json:"ebgp-multihop,omitempty"`
|
|
// original -> bgp:route-reflector
|
|
RouteReflector RouteReflector `mapstructure:"route-reflector" json:"route-reflector,omitempty"`
|
|
// original -> bgp:as-path-options
|
|
AsPathOptions AsPathOptions `mapstructure:"as-path-options" json:"as-path-options,omitempty"`
|
|
// original -> bgp:add-paths
|
|
AddPaths AddPaths `mapstructure:"add-paths" json:"add-paths,omitempty"`
|
|
// original -> bgp:afi-safis
|
|
AfiSafis []AfiSafi `mapstructure:"afi-safis" json:"afi-safis,omitempty"`
|
|
// original -> bgp:graceful-restart
|
|
GracefulRestart GracefulRestart `mapstructure:"graceful-restart" json:"graceful-restart,omitempty"`
|
|
// original -> rpol:apply-policy
|
|
ApplyPolicy ApplyPolicy `mapstructure:"apply-policy" json:"apply-policy,omitempty"`
|
|
// original -> bgp-mp:use-multiple-paths
|
|
UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths" json:"use-multiple-paths,omitempty"`
|
|
// original -> gobgp:route-server
|
|
RouteServer RouteServer `mapstructure:"route-server" json:"route-server,omitempty"`
|
|
// original -> gobgp:ttl-security
|
|
TtlSecurity TtlSecurity `mapstructure:"ttl-security" json:"ttl-security,omitempty"`
|
|
}
|
|
|
|
func (lhs *PeerGroup) Equal(rhs *PeerGroup) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
if !lhs.Timers.Equal(&(rhs.Timers)) {
|
|
return false
|
|
}
|
|
if !lhs.Transport.Equal(&(rhs.Transport)) {
|
|
return false
|
|
}
|
|
if !lhs.ErrorHandling.Equal(&(rhs.ErrorHandling)) {
|
|
return false
|
|
}
|
|
if !lhs.LoggingOptions.Equal(&(rhs.LoggingOptions)) {
|
|
return false
|
|
}
|
|
if !lhs.EbgpMultihop.Equal(&(rhs.EbgpMultihop)) {
|
|
return false
|
|
}
|
|
if !lhs.RouteReflector.Equal(&(rhs.RouteReflector)) {
|
|
return false
|
|
}
|
|
if !lhs.AsPathOptions.Equal(&(rhs.AsPathOptions)) {
|
|
return false
|
|
}
|
|
if !lhs.AddPaths.Equal(&(rhs.AddPaths)) {
|
|
return false
|
|
}
|
|
if len(lhs.AfiSafis) != len(rhs.AfiSafis) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*AfiSafi)
|
|
for i, l := range lhs.AfiSafis {
|
|
lmap[mapkey(i, string(l.Config.AfiSafiName))] = &lhs.AfiSafis[i]
|
|
}
|
|
for i, r := range rhs.AfiSafis {
|
|
if l, y := lmap[mapkey(i, string(r.Config.AfiSafiName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if !lhs.GracefulRestart.Equal(&(rhs.GracefulRestart)) {
|
|
return false
|
|
}
|
|
if !lhs.ApplyPolicy.Equal(&(rhs.ApplyPolicy)) {
|
|
return false
|
|
}
|
|
if !lhs.UseMultiplePaths.Equal(&(rhs.UseMultiplePaths)) {
|
|
return false
|
|
}
|
|
if !lhs.RouteServer.Equal(&(rhs.RouteServer)) {
|
|
return false
|
|
}
|
|
if !lhs.TtlSecurity.Equal(&(rhs.TtlSecurity)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type TtlSecurityState struct {
|
|
// original -> gobgp:enabled
|
|
//gobgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> gobgp:ttl-min
|
|
TtlMin uint8 `mapstructure:"ttl-min" json:"ttl-min,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type TtlSecurityConfig struct {
|
|
// original -> gobgp:enabled
|
|
//gobgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> gobgp:ttl-min
|
|
TtlMin uint8 `mapstructure:"ttl-min" json:"ttl-min,omitempty"`
|
|
}
|
|
|
|
func (lhs *TtlSecurityConfig) Equal(rhs *TtlSecurityConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
if lhs.TtlMin != rhs.TtlMin {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:ttl-security
|
|
type TtlSecurity struct {
|
|
// original -> gobgp:ttl-security-config
|
|
Config TtlSecurityConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:ttl-security-state
|
|
State TtlSecurityState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *TtlSecurity) Equal(rhs *TtlSecurity) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type RouteServerState struct {
|
|
// original -> gobgp:route-server-client
|
|
//gobgp:route-server-client's original type is boolean
|
|
RouteServerClient bool `mapstructure:"route-server-client" json:"route-server-client,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type RouteServerConfig struct {
|
|
// original -> gobgp:route-server-client
|
|
//gobgp:route-server-client's original type is boolean
|
|
RouteServerClient bool `mapstructure:"route-server-client" json:"route-server-client,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteServerConfig) Equal(rhs *RouteServerConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.RouteServerClient != rhs.RouteServerClient {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:route-server
|
|
type RouteServer struct {
|
|
// original -> gobgp:route-server-config
|
|
Config RouteServerConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:route-server-state
|
|
State RouteServerState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteServer) Equal(rhs *RouteServer) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-op:prefixes
|
|
type Prefixes struct {
|
|
// original -> bgp-op:received
|
|
Received uint32 `mapstructure:"received" json:"received,omitempty"`
|
|
// original -> bgp-op:sent
|
|
Sent uint32 `mapstructure:"sent" json:"sent,omitempty"`
|
|
// original -> bgp-op:installed
|
|
Installed uint32 `mapstructure:"installed" json:"installed,omitempty"`
|
|
}
|
|
|
|
func (lhs *Prefixes) Equal(rhs *Prefixes) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Received != rhs.Received {
|
|
return false
|
|
}
|
|
if lhs.Sent != rhs.Sent {
|
|
return false
|
|
}
|
|
if lhs.Installed != rhs.Installed {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type AddPathsState struct {
|
|
// original -> bgp:receive
|
|
//bgp:receive's original type is boolean
|
|
Receive bool `mapstructure:"receive" json:"receive,omitempty"`
|
|
// original -> bgp:send-max
|
|
SendMax uint8 `mapstructure:"send-max" json:"send-max,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type AddPathsConfig struct {
|
|
// original -> bgp:receive
|
|
//bgp:receive's original type is boolean
|
|
Receive bool `mapstructure:"receive" json:"receive,omitempty"`
|
|
// original -> bgp:send-max
|
|
SendMax uint8 `mapstructure:"send-max" json:"send-max,omitempty"`
|
|
}
|
|
|
|
func (lhs *AddPathsConfig) Equal(rhs *AddPathsConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Receive != rhs.Receive {
|
|
return false
|
|
}
|
|
if lhs.SendMax != rhs.SendMax {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:add-paths
|
|
type AddPaths struct {
|
|
// original -> bgp:add-paths-config
|
|
Config AddPathsConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:add-paths-state
|
|
State AddPathsState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *AddPaths) Equal(rhs *AddPaths) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type AsPathOptionsState struct {
|
|
// original -> bgp:allow-own-as
|
|
AllowOwnAs uint8 `mapstructure:"allow-own-as" json:"allow-own-as,omitempty"`
|
|
// original -> bgp:replace-peer-as
|
|
//bgp:replace-peer-as's original type is boolean
|
|
ReplacePeerAs bool `mapstructure:"replace-peer-as" json:"replace-peer-as,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type AsPathOptionsConfig struct {
|
|
// original -> bgp:allow-own-as
|
|
AllowOwnAs uint8 `mapstructure:"allow-own-as" json:"allow-own-as,omitempty"`
|
|
// original -> bgp:replace-peer-as
|
|
//bgp:replace-peer-as's original type is boolean
|
|
ReplacePeerAs bool `mapstructure:"replace-peer-as" json:"replace-peer-as,omitempty"`
|
|
}
|
|
|
|
func (lhs *AsPathOptionsConfig) Equal(rhs *AsPathOptionsConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.AllowOwnAs != rhs.AllowOwnAs {
|
|
return false
|
|
}
|
|
if lhs.ReplacePeerAs != rhs.ReplacePeerAs {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:as-path-options
|
|
type AsPathOptions struct {
|
|
// original -> bgp:as-path-options-config
|
|
Config AsPathOptionsConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:as-path-options-state
|
|
State AsPathOptionsState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *AsPathOptions) Equal(rhs *AsPathOptions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type RouteReflectorState struct {
|
|
// original -> bgp:route-reflector-cluster-id
|
|
RouteReflectorClusterId RrClusterIdType `mapstructure:"route-reflector-cluster-id" json:"route-reflector-cluster-id,omitempty"`
|
|
// original -> bgp:route-reflector-client
|
|
//bgp:route-reflector-client's original type is boolean
|
|
RouteReflectorClient bool `mapstructure:"route-reflector-client" json:"route-reflector-client,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type RouteReflectorConfig struct {
|
|
// original -> bgp:route-reflector-cluster-id
|
|
RouteReflectorClusterId RrClusterIdType `mapstructure:"route-reflector-cluster-id" json:"route-reflector-cluster-id,omitempty"`
|
|
// original -> bgp:route-reflector-client
|
|
//bgp:route-reflector-client's original type is boolean
|
|
RouteReflectorClient bool `mapstructure:"route-reflector-client" json:"route-reflector-client,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteReflectorConfig) Equal(rhs *RouteReflectorConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.RouteReflectorClusterId != rhs.RouteReflectorClusterId {
|
|
return false
|
|
}
|
|
if lhs.RouteReflectorClient != rhs.RouteReflectorClient {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:route-reflector
|
|
type RouteReflector struct {
|
|
// original -> bgp:route-reflector-config
|
|
Config RouteReflectorConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:route-reflector-state
|
|
State RouteReflectorState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteReflector) Equal(rhs *RouteReflector) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type EbgpMultihopState struct {
|
|
// original -> bgp:enabled
|
|
//bgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp:multihop-ttl
|
|
MultihopTtl uint8 `mapstructure:"multihop-ttl" json:"multihop-ttl,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type EbgpMultihopConfig struct {
|
|
// original -> bgp:enabled
|
|
//bgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp:multihop-ttl
|
|
MultihopTtl uint8 `mapstructure:"multihop-ttl" json:"multihop-ttl,omitempty"`
|
|
}
|
|
|
|
func (lhs *EbgpMultihopConfig) Equal(rhs *EbgpMultihopConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
if lhs.MultihopTtl != rhs.MultihopTtl {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:ebgp-multihop
|
|
type EbgpMultihop struct {
|
|
// original -> bgp:ebgp-multihop-config
|
|
Config EbgpMultihopConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:ebgp-multihop-state
|
|
State EbgpMultihopState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *EbgpMultihop) Equal(rhs *EbgpMultihop) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//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 `mapstructure:"log-neighbor-state-changes" json:"log-neighbor-state-changes,omitempty"`
|
|
}
|
|
|
|
//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 `mapstructure:"log-neighbor-state-changes" json:"log-neighbor-state-changes,omitempty"`
|
|
}
|
|
|
|
func (lhs *LoggingOptionsConfig) Equal(rhs *LoggingOptionsConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.LogNeighborStateChanges != rhs.LogNeighborStateChanges {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:logging-options
|
|
type LoggingOptions struct {
|
|
// original -> bgp:logging-options-config
|
|
Config LoggingOptionsConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:logging-options-state
|
|
State LoggingOptionsState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *LoggingOptions) Equal(rhs *LoggingOptions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type ErrorHandlingState struct {
|
|
// original -> bgp:treat-as-withdraw
|
|
//bgp:treat-as-withdraw's original type is boolean
|
|
TreatAsWithdraw bool `mapstructure:"treat-as-withdraw" json:"treat-as-withdraw,omitempty"`
|
|
// original -> bgp-op:erroneous-update-messages
|
|
ErroneousUpdateMessages uint32 `mapstructure:"erroneous-update-messages" json:"erroneous-update-messages,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type ErrorHandlingConfig struct {
|
|
// original -> bgp:treat-as-withdraw
|
|
//bgp:treat-as-withdraw's original type is boolean
|
|
TreatAsWithdraw bool `mapstructure:"treat-as-withdraw" json:"treat-as-withdraw,omitempty"`
|
|
}
|
|
|
|
func (lhs *ErrorHandlingConfig) Equal(rhs *ErrorHandlingConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.TreatAsWithdraw != rhs.TreatAsWithdraw {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:error-handling
|
|
type ErrorHandling struct {
|
|
// original -> bgp:error-handling-config
|
|
Config ErrorHandlingConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:error-handling-state
|
|
State ErrorHandlingState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *ErrorHandling) Equal(rhs *ErrorHandling) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type TransportState struct {
|
|
// original -> bgp:tcp-mss
|
|
TcpMss uint16 `mapstructure:"tcp-mss" json:"tcp-mss,omitempty"`
|
|
// original -> bgp:mtu-discovery
|
|
//bgp:mtu-discovery's original type is boolean
|
|
MtuDiscovery bool `mapstructure:"mtu-discovery" json:"mtu-discovery,omitempty"`
|
|
// original -> bgp:passive-mode
|
|
//bgp:passive-mode's original type is boolean
|
|
PassiveMode bool `mapstructure:"passive-mode" json:"passive-mode,omitempty"`
|
|
// original -> bgp:local-address
|
|
//bgp:local-address's original type is union
|
|
LocalAddress string `mapstructure:"local-address" json:"local-address,omitempty"`
|
|
// original -> bgp-op:local-port
|
|
//bgp-op:local-port's original type is inet:port-number
|
|
LocalPort uint16 `mapstructure:"local-port" json:"local-port,omitempty"`
|
|
// original -> bgp-op:remote-address
|
|
//bgp-op:remote-address's original type is inet:ip-address
|
|
RemoteAddress string `mapstructure:"remote-address" json:"remote-address,omitempty"`
|
|
// original -> bgp-op:remote-port
|
|
//bgp-op:remote-port's original type is inet:port-number
|
|
RemotePort uint16 `mapstructure:"remote-port" json:"remote-port,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type TransportConfig struct {
|
|
// original -> bgp:tcp-mss
|
|
TcpMss uint16 `mapstructure:"tcp-mss" json:"tcp-mss,omitempty"`
|
|
// original -> bgp:mtu-discovery
|
|
//bgp:mtu-discovery's original type is boolean
|
|
MtuDiscovery bool `mapstructure:"mtu-discovery" json:"mtu-discovery,omitempty"`
|
|
// original -> bgp:passive-mode
|
|
//bgp:passive-mode's original type is boolean
|
|
PassiveMode bool `mapstructure:"passive-mode" json:"passive-mode,omitempty"`
|
|
// original -> bgp:local-address
|
|
//bgp:local-address's original type is union
|
|
LocalAddress string `mapstructure:"local-address" json:"local-address,omitempty"`
|
|
// original -> gobgp:remote-port
|
|
//gobgp:remote-port's original type is inet:port-number
|
|
RemotePort uint16 `mapstructure:"remote-port" json:"remote-port,omitempty"`
|
|
// original -> gobgp:ttl
|
|
Ttl uint8 `mapstructure:"ttl" json:"ttl,omitempty"`
|
|
}
|
|
|
|
func (lhs *TransportConfig) Equal(rhs *TransportConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.TcpMss != rhs.TcpMss {
|
|
return false
|
|
}
|
|
if lhs.MtuDiscovery != rhs.MtuDiscovery {
|
|
return false
|
|
}
|
|
if lhs.PassiveMode != rhs.PassiveMode {
|
|
return false
|
|
}
|
|
if lhs.LocalAddress != rhs.LocalAddress {
|
|
return false
|
|
}
|
|
if lhs.RemotePort != rhs.RemotePort {
|
|
return false
|
|
}
|
|
if lhs.Ttl != rhs.Ttl {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:transport
|
|
type Transport struct {
|
|
// original -> bgp:transport-config
|
|
Config TransportConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:transport-state
|
|
State TransportState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Transport) Equal(rhs *Transport) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type TimersState struct {
|
|
// original -> bgp:connect-retry
|
|
//bgp:connect-retry's original type is decimal64
|
|
ConnectRetry float64 `mapstructure:"connect-retry" json:"connect-retry,omitempty"`
|
|
// original -> bgp:hold-time
|
|
//bgp:hold-time's original type is decimal64
|
|
HoldTime float64 `mapstructure:"hold-time" json:"hold-time,omitempty"`
|
|
// original -> bgp:keepalive-interval
|
|
//bgp:keepalive-interval's original type is decimal64
|
|
KeepaliveInterval float64 `mapstructure:"keepalive-interval" json:"keepalive-interval,omitempty"`
|
|
// original -> bgp:minimum-advertisement-interval
|
|
//bgp:minimum-advertisement-interval's original type is decimal64
|
|
MinimumAdvertisementInterval float64 `mapstructure:"minimum-advertisement-interval" json:"minimum-advertisement-interval,omitempty"`
|
|
// original -> bgp-op:uptime
|
|
//bgp-op:uptime's original type is yang:timeticks
|
|
Uptime int64 `mapstructure:"uptime" json:"uptime,omitempty"`
|
|
// original -> bgp-op:negotiated-hold-time
|
|
//bgp-op:negotiated-hold-time's original type is decimal64
|
|
NegotiatedHoldTime float64 `mapstructure:"negotiated-hold-time" json:"negotiated-hold-time,omitempty"`
|
|
// original -> gobgp:idle-hold-time-after-reset
|
|
//gobgp:idle-hold-time-after-reset's original type is decimal64
|
|
IdleHoldTimeAfterReset float64 `mapstructure:"idle-hold-time-after-reset" json:"idle-hold-time-after-reset,omitempty"`
|
|
// original -> gobgp:downtime
|
|
//gobgp:downtime's original type is yang:timeticks
|
|
Downtime int64 `mapstructure:"downtime" json:"downtime,omitempty"`
|
|
// original -> gobgp:update-recv-time
|
|
UpdateRecvTime int64 `mapstructure:"update-recv-time" json:"update-recv-time,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type TimersConfig struct {
|
|
// original -> bgp:connect-retry
|
|
//bgp:connect-retry's original type is decimal64
|
|
ConnectRetry float64 `mapstructure:"connect-retry" json:"connect-retry,omitempty"`
|
|
// original -> bgp:hold-time
|
|
//bgp:hold-time's original type is decimal64
|
|
HoldTime float64 `mapstructure:"hold-time" json:"hold-time,omitempty"`
|
|
// original -> bgp:keepalive-interval
|
|
//bgp:keepalive-interval's original type is decimal64
|
|
KeepaliveInterval float64 `mapstructure:"keepalive-interval" json:"keepalive-interval,omitempty"`
|
|
// original -> bgp:minimum-advertisement-interval
|
|
//bgp:minimum-advertisement-interval's original type is decimal64
|
|
MinimumAdvertisementInterval float64 `mapstructure:"minimum-advertisement-interval" json:"minimum-advertisement-interval,omitempty"`
|
|
// original -> gobgp:idle-hold-time-after-reset
|
|
//gobgp:idle-hold-time-after-reset's original type is decimal64
|
|
IdleHoldTimeAfterReset float64 `mapstructure:"idle-hold-time-after-reset" json:"idle-hold-time-after-reset,omitempty"`
|
|
}
|
|
|
|
func (lhs *TimersConfig) Equal(rhs *TimersConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.ConnectRetry != rhs.ConnectRetry {
|
|
return false
|
|
}
|
|
if lhs.HoldTime != rhs.HoldTime {
|
|
return false
|
|
}
|
|
if lhs.KeepaliveInterval != rhs.KeepaliveInterval {
|
|
return false
|
|
}
|
|
if lhs.MinimumAdvertisementInterval != rhs.MinimumAdvertisementInterval {
|
|
return false
|
|
}
|
|
if lhs.IdleHoldTimeAfterReset != rhs.IdleHoldTimeAfterReset {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:timers
|
|
type Timers struct {
|
|
// original -> bgp:timers-config
|
|
Config TimersConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:timers-state
|
|
State TimersState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Timers) Equal(rhs *Timers) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:adj-table
|
|
type AdjTable struct {
|
|
// original -> gobgp:ADVERTISED
|
|
Advertised uint32 `mapstructure:"advertised" json:"advertised,omitempty"`
|
|
// original -> gobgp:FILTERED
|
|
Filtered uint32 `mapstructure:"filtered" json:"filtered,omitempty"`
|
|
// original -> gobgp:RECEIVED
|
|
Received uint32 `mapstructure:"received" json:"received,omitempty"`
|
|
// original -> gobgp:ACCEPTED
|
|
Accepted uint32 `mapstructure:"accepted" json:"accepted,omitempty"`
|
|
}
|
|
|
|
func (lhs *AdjTable) Equal(rhs *AdjTable) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Advertised != rhs.Advertised {
|
|
return false
|
|
}
|
|
if lhs.Filtered != rhs.Filtered {
|
|
return false
|
|
}
|
|
if lhs.Received != rhs.Received {
|
|
return false
|
|
}
|
|
if lhs.Accepted != rhs.Accepted {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:queues
|
|
type Queues struct {
|
|
// original -> bgp-op:input
|
|
Input uint32 `mapstructure:"input" json:"input,omitempty"`
|
|
// original -> bgp-op:output
|
|
Output uint32 `mapstructure:"output" json:"output,omitempty"`
|
|
}
|
|
|
|
func (lhs *Queues) Equal(rhs *Queues) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Input != rhs.Input {
|
|
return false
|
|
}
|
|
if lhs.Output != rhs.Output {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:received
|
|
type Received struct {
|
|
// original -> bgp-op:UPDATE
|
|
Update uint64 `mapstructure:"update" json:"update,omitempty"`
|
|
// original -> bgp-op:NOTIFICATION
|
|
Notification uint64 `mapstructure:"notification" json:"notification,omitempty"`
|
|
// original -> gobgp:OPEN
|
|
Open uint64 `mapstructure:"open" json:"open,omitempty"`
|
|
// original -> gobgp:REFRESH
|
|
Refresh uint64 `mapstructure:"refresh" json:"refresh,omitempty"`
|
|
// original -> gobgp:KEEPALIVE
|
|
Keepalive uint64 `mapstructure:"keepalive" json:"keepalive,omitempty"`
|
|
// original -> gobgp:DYNAMIC-CAP
|
|
DynamicCap uint64 `mapstructure:"dynamic-cap" json:"dynamic-cap,omitempty"`
|
|
// original -> gobgp:WITHDRAW-UPDATE
|
|
WithdrawUpdate uint32 `mapstructure:"withdraw-update" json:"withdraw-update,omitempty"`
|
|
// original -> gobgp:WITHDRAW-PREFIX
|
|
WithdrawPrefix uint32 `mapstructure:"withdraw-prefix" json:"withdraw-prefix,omitempty"`
|
|
// original -> gobgp:DISCARDED
|
|
Discarded uint64 `mapstructure:"discarded" json:"discarded,omitempty"`
|
|
// original -> gobgp:TOTAL
|
|
Total uint64 `mapstructure:"total" json:"total,omitempty"`
|
|
}
|
|
|
|
func (lhs *Received) Equal(rhs *Received) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Update != rhs.Update {
|
|
return false
|
|
}
|
|
if lhs.Notification != rhs.Notification {
|
|
return false
|
|
}
|
|
if lhs.Open != rhs.Open {
|
|
return false
|
|
}
|
|
if lhs.Refresh != rhs.Refresh {
|
|
return false
|
|
}
|
|
if lhs.Keepalive != rhs.Keepalive {
|
|
return false
|
|
}
|
|
if lhs.DynamicCap != rhs.DynamicCap {
|
|
return false
|
|
}
|
|
if lhs.WithdrawUpdate != rhs.WithdrawUpdate {
|
|
return false
|
|
}
|
|
if lhs.WithdrawPrefix != rhs.WithdrawPrefix {
|
|
return false
|
|
}
|
|
if lhs.Discarded != rhs.Discarded {
|
|
return false
|
|
}
|
|
if lhs.Total != rhs.Total {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:sent
|
|
type Sent struct {
|
|
// original -> bgp-op:UPDATE
|
|
Update uint64 `mapstructure:"update" json:"update,omitempty"`
|
|
// original -> bgp-op:NOTIFICATION
|
|
Notification uint64 `mapstructure:"notification" json:"notification,omitempty"`
|
|
// original -> gobgp:OPEN
|
|
Open uint64 `mapstructure:"open" json:"open,omitempty"`
|
|
// original -> gobgp:REFRESH
|
|
Refresh uint64 `mapstructure:"refresh" json:"refresh,omitempty"`
|
|
// original -> gobgp:KEEPALIVE
|
|
Keepalive uint64 `mapstructure:"keepalive" json:"keepalive,omitempty"`
|
|
// original -> gobgp:DYNAMIC-CAP
|
|
DynamicCap uint64 `mapstructure:"dynamic-cap" json:"dynamic-cap,omitempty"`
|
|
// original -> gobgp:WITHDRAW-UPDATE
|
|
WithdrawUpdate uint32 `mapstructure:"withdraw-update" json:"withdraw-update,omitempty"`
|
|
// original -> gobgp:WITHDRAW-PREFIX
|
|
WithdrawPrefix uint32 `mapstructure:"withdraw-prefix" json:"withdraw-prefix,omitempty"`
|
|
// original -> gobgp:DISCARDED
|
|
Discarded uint64 `mapstructure:"discarded" json:"discarded,omitempty"`
|
|
// original -> gobgp:TOTAL
|
|
Total uint64 `mapstructure:"total" json:"total,omitempty"`
|
|
}
|
|
|
|
func (lhs *Sent) Equal(rhs *Sent) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Update != rhs.Update {
|
|
return false
|
|
}
|
|
if lhs.Notification != rhs.Notification {
|
|
return false
|
|
}
|
|
if lhs.Open != rhs.Open {
|
|
return false
|
|
}
|
|
if lhs.Refresh != rhs.Refresh {
|
|
return false
|
|
}
|
|
if lhs.Keepalive != rhs.Keepalive {
|
|
return false
|
|
}
|
|
if lhs.DynamicCap != rhs.DynamicCap {
|
|
return false
|
|
}
|
|
if lhs.WithdrawUpdate != rhs.WithdrawUpdate {
|
|
return false
|
|
}
|
|
if lhs.WithdrawPrefix != rhs.WithdrawPrefix {
|
|
return false
|
|
}
|
|
if lhs.Discarded != rhs.Discarded {
|
|
return false
|
|
}
|
|
if lhs.Total != rhs.Total {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:messages
|
|
type Messages struct {
|
|
// original -> bgp:sent
|
|
Sent Sent `mapstructure:"sent" json:"sent,omitempty"`
|
|
// original -> bgp:received
|
|
Received Received `mapstructure:"received" json:"received,omitempty"`
|
|
}
|
|
|
|
func (lhs *Messages) Equal(rhs *Messages) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Sent.Equal(&(rhs.Sent)) {
|
|
return false
|
|
}
|
|
if !lhs.Received.Equal(&(rhs.Received)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type NeighborState struct {
|
|
// original -> bgp:peer-as
|
|
//bgp:peer-as's original type is inet:as-number
|
|
PeerAs uint32 `mapstructure:"peer-as" json:"peer-as,omitempty"`
|
|
// original -> bgp:local-as
|
|
//bgp:local-as's original type is inet:as-number
|
|
LocalAs uint32 `mapstructure:"local-as" json:"local-as,omitempty"`
|
|
// original -> bgp:peer-type
|
|
PeerType PeerType `mapstructure:"peer-type" json:"peer-type,omitempty"`
|
|
// original -> bgp:auth-password
|
|
AuthPassword string `mapstructure:"auth-password" json:"auth-password,omitempty"`
|
|
// original -> bgp:remove-private-as
|
|
RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as" json:"remove-private-as,omitempty"`
|
|
// original -> bgp:route-flap-damping
|
|
//bgp:route-flap-damping's original type is boolean
|
|
RouteFlapDamping bool `mapstructure:"route-flap-damping" json:"route-flap-damping,omitempty"`
|
|
// original -> bgp:send-community
|
|
SendCommunity CommunityType `mapstructure:"send-community" json:"send-community,omitempty"`
|
|
// original -> bgp:description
|
|
Description string `mapstructure:"description" json:"description,omitempty"`
|
|
// original -> bgp:peer-group
|
|
PeerGroup string `mapstructure:"peer-group" json:"peer-group,omitempty"`
|
|
// original -> bgp:neighbor-address
|
|
//bgp:neighbor-address's original type is inet:ip-address
|
|
NeighborAddress string `mapstructure:"neighbor-address" json:"neighbor-address,omitempty"`
|
|
// original -> bgp-op:session-state
|
|
SessionState SessionState `mapstructure:"session-state" json:"session-state,omitempty"`
|
|
// original -> bgp-op:supported-capabilities
|
|
SupportedCapabilitiesList []BgpCapability `mapstructure:"supported-capabilities-list" json:"supported-capabilities-list,omitempty"`
|
|
// original -> bgp:messages
|
|
Messages Messages `mapstructure:"messages" json:"messages,omitempty"`
|
|
// original -> bgp:queues
|
|
Queues Queues `mapstructure:"queues" json:"queues,omitempty"`
|
|
// original -> gobgp:adj-table
|
|
AdjTable AdjTable `mapstructure:"adj-table" json:"adj-table,omitempty"`
|
|
// original -> gobgp:remote-capability
|
|
// original type is list of bgp-capability
|
|
RemoteCapabilityList []bgp.ParameterCapabilityInterface `mapstructure:"remote-capability-list" json:"remote-capability-list,omitempty"`
|
|
// original -> gobgp:local-capability
|
|
// original type is list of bgp-capability
|
|
LocalCapabilityList []bgp.ParameterCapabilityInterface `mapstructure:"local-capability-list" json:"local-capability-list,omitempty"`
|
|
// original -> gobgp:received-open-message
|
|
//gobgp:received-open-message's original type is bgp-open-message
|
|
ReceivedOpenMessage *bgp.BGPMessage `mapstructure:"received-open-message" json:"received-open-message,omitempty"`
|
|
// original -> gobgp:admin-down
|
|
//gobgp:admin-down's original type is boolean
|
|
AdminDown bool `mapstructure:"admin-down" json:"admin-down,omitempty"`
|
|
// original -> gobgp:admin-state
|
|
AdminState AdminState `mapstructure:"admin-state" json:"admin-state,omitempty"`
|
|
// original -> gobgp:established-count
|
|
EstablishedCount uint32 `mapstructure:"established-count" json:"established-count,omitempty"`
|
|
// original -> gobgp:flops
|
|
Flops uint32 `mapstructure:"flops" json:"flops,omitempty"`
|
|
// original -> gobgp:neighbor-interface
|
|
NeighborInterface string `mapstructure:"neighbor-interface" json:"neighbor-interface,omitempty"`
|
|
// original -> gobgp:vrf
|
|
Vrf string `mapstructure:"vrf" json:"vrf,omitempty"`
|
|
// original -> gobgp:remote-router-id
|
|
RemoteRouterId string `mapstructure:"remote-router-id" json:"remote-router-id,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type NeighborConfig struct {
|
|
// original -> bgp:peer-as
|
|
//bgp:peer-as's original type is inet:as-number
|
|
PeerAs uint32 `mapstructure:"peer-as" json:"peer-as,omitempty"`
|
|
// original -> bgp:local-as
|
|
//bgp:local-as's original type is inet:as-number
|
|
LocalAs uint32 `mapstructure:"local-as" json:"local-as,omitempty"`
|
|
// original -> bgp:peer-type
|
|
PeerType PeerType `mapstructure:"peer-type" json:"peer-type,omitempty"`
|
|
// original -> bgp:auth-password
|
|
AuthPassword string `mapstructure:"auth-password" json:"auth-password,omitempty"`
|
|
// original -> bgp:remove-private-as
|
|
RemovePrivateAs RemovePrivateAsOption `mapstructure:"remove-private-as" json:"remove-private-as,omitempty"`
|
|
// original -> bgp:route-flap-damping
|
|
//bgp:route-flap-damping's original type is boolean
|
|
RouteFlapDamping bool `mapstructure:"route-flap-damping" json:"route-flap-damping,omitempty"`
|
|
// original -> bgp:send-community
|
|
SendCommunity CommunityType `mapstructure:"send-community" json:"send-community,omitempty"`
|
|
// original -> bgp:description
|
|
Description string `mapstructure:"description" json:"description,omitempty"`
|
|
// original -> bgp:peer-group
|
|
PeerGroup string `mapstructure:"peer-group" json:"peer-group,omitempty"`
|
|
// original -> bgp:neighbor-address
|
|
//bgp:neighbor-address's original type is inet:ip-address
|
|
NeighborAddress string `mapstructure:"neighbor-address" json:"neighbor-address,omitempty"`
|
|
// original -> gobgp:admin-down
|
|
//gobgp:admin-down's original type is boolean
|
|
AdminDown bool `mapstructure:"admin-down" json:"admin-down,omitempty"`
|
|
// original -> gobgp:neighbor-interface
|
|
NeighborInterface string `mapstructure:"neighbor-interface" json:"neighbor-interface,omitempty"`
|
|
// original -> gobgp:vrf
|
|
Vrf string `mapstructure:"vrf" json:"vrf,omitempty"`
|
|
}
|
|
|
|
func (lhs *NeighborConfig) Equal(rhs *NeighborConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.PeerAs != rhs.PeerAs {
|
|
return false
|
|
}
|
|
if lhs.LocalAs != rhs.LocalAs {
|
|
return false
|
|
}
|
|
if lhs.PeerType != rhs.PeerType {
|
|
return false
|
|
}
|
|
if lhs.AuthPassword != rhs.AuthPassword {
|
|
return false
|
|
}
|
|
if lhs.RemovePrivateAs != rhs.RemovePrivateAs {
|
|
return false
|
|
}
|
|
if lhs.RouteFlapDamping != rhs.RouteFlapDamping {
|
|
return false
|
|
}
|
|
if lhs.SendCommunity != rhs.SendCommunity {
|
|
return false
|
|
}
|
|
if lhs.Description != rhs.Description {
|
|
return false
|
|
}
|
|
if lhs.PeerGroup != rhs.PeerGroup {
|
|
return false
|
|
}
|
|
if lhs.NeighborAddress != rhs.NeighborAddress {
|
|
return false
|
|
}
|
|
if lhs.AdminDown != rhs.AdminDown {
|
|
return false
|
|
}
|
|
if lhs.NeighborInterface != rhs.NeighborInterface {
|
|
return false
|
|
}
|
|
if lhs.Vrf != rhs.Vrf {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:neighbor
|
|
type Neighbor struct {
|
|
// original -> bgp:neighbor-address
|
|
// original -> bgp:neighbor-config
|
|
Config NeighborConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:neighbor-state
|
|
State NeighborState `mapstructure:"state" json:"state,omitempty"`
|
|
// original -> bgp:timers
|
|
Timers Timers `mapstructure:"timers" json:"timers,omitempty"`
|
|
// original -> bgp:transport
|
|
Transport Transport `mapstructure:"transport" json:"transport,omitempty"`
|
|
// original -> bgp:error-handling
|
|
ErrorHandling ErrorHandling `mapstructure:"error-handling" json:"error-handling,omitempty"`
|
|
// original -> bgp:logging-options
|
|
LoggingOptions LoggingOptions `mapstructure:"logging-options" json:"logging-options,omitempty"`
|
|
// original -> bgp:ebgp-multihop
|
|
EbgpMultihop EbgpMultihop `mapstructure:"ebgp-multihop" json:"ebgp-multihop,omitempty"`
|
|
// original -> bgp:route-reflector
|
|
RouteReflector RouteReflector `mapstructure:"route-reflector" json:"route-reflector,omitempty"`
|
|
// original -> bgp:as-path-options
|
|
AsPathOptions AsPathOptions `mapstructure:"as-path-options" json:"as-path-options,omitempty"`
|
|
// original -> bgp:add-paths
|
|
AddPaths AddPaths `mapstructure:"add-paths" json:"add-paths,omitempty"`
|
|
// original -> bgp:afi-safis
|
|
AfiSafis []AfiSafi `mapstructure:"afi-safis" json:"afi-safis,omitempty"`
|
|
// original -> bgp:graceful-restart
|
|
GracefulRestart GracefulRestart `mapstructure:"graceful-restart" json:"graceful-restart,omitempty"`
|
|
// original -> rpol:apply-policy
|
|
ApplyPolicy ApplyPolicy `mapstructure:"apply-policy" json:"apply-policy,omitempty"`
|
|
// original -> bgp-mp:use-multiple-paths
|
|
UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths" json:"use-multiple-paths,omitempty"`
|
|
// original -> gobgp:route-server
|
|
RouteServer RouteServer `mapstructure:"route-server" json:"route-server,omitempty"`
|
|
// original -> gobgp:ttl-security
|
|
TtlSecurity TtlSecurity `mapstructure:"ttl-security" json:"ttl-security,omitempty"`
|
|
}
|
|
|
|
func (lhs *Neighbor) Equal(rhs *Neighbor) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
if !lhs.Timers.Equal(&(rhs.Timers)) {
|
|
return false
|
|
}
|
|
if !lhs.Transport.Equal(&(rhs.Transport)) {
|
|
return false
|
|
}
|
|
if !lhs.ErrorHandling.Equal(&(rhs.ErrorHandling)) {
|
|
return false
|
|
}
|
|
if !lhs.LoggingOptions.Equal(&(rhs.LoggingOptions)) {
|
|
return false
|
|
}
|
|
if !lhs.EbgpMultihop.Equal(&(rhs.EbgpMultihop)) {
|
|
return false
|
|
}
|
|
if !lhs.RouteReflector.Equal(&(rhs.RouteReflector)) {
|
|
return false
|
|
}
|
|
if !lhs.AsPathOptions.Equal(&(rhs.AsPathOptions)) {
|
|
return false
|
|
}
|
|
if !lhs.AddPaths.Equal(&(rhs.AddPaths)) {
|
|
return false
|
|
}
|
|
if len(lhs.AfiSafis) != len(rhs.AfiSafis) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*AfiSafi)
|
|
for i, l := range lhs.AfiSafis {
|
|
lmap[mapkey(i, string(l.Config.AfiSafiName))] = &lhs.AfiSafis[i]
|
|
}
|
|
for i, r := range rhs.AfiSafis {
|
|
if l, y := lmap[mapkey(i, string(r.Config.AfiSafiName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if !lhs.GracefulRestart.Equal(&(rhs.GracefulRestart)) {
|
|
return false
|
|
}
|
|
if !lhs.ApplyPolicy.Equal(&(rhs.ApplyPolicy)) {
|
|
return false
|
|
}
|
|
if !lhs.UseMultiplePaths.Equal(&(rhs.UseMultiplePaths)) {
|
|
return false
|
|
}
|
|
if !lhs.RouteServer.Equal(&(rhs.RouteServer)) {
|
|
return false
|
|
}
|
|
if !lhs.TtlSecurity.Equal(&(rhs.TtlSecurity)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type LongLivedGracefulRestartState struct {
|
|
// original -> gobgp:enabled
|
|
//gobgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> gobgp:received
|
|
//gobgp:received's original type is boolean
|
|
Received bool `mapstructure:"received" json:"received,omitempty"`
|
|
// original -> gobgp:advertised
|
|
//gobgp:advertised's original type is boolean
|
|
Advertised bool `mapstructure:"advertised" json:"advertised,omitempty"`
|
|
// original -> gobgp:peer-restart-time
|
|
PeerRestartTime uint32 `mapstructure:"peer-restart-time" json:"peer-restart-time,omitempty"`
|
|
// original -> gobgp:peer-restart-timer-expired
|
|
//gobgp:peer-restart-timer-expired's original type is boolean
|
|
PeerRestartTimerExpired bool `mapstructure:"peer-restart-timer-expired" json:"peer-restart-timer-expired,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type LongLivedGracefulRestartConfig struct {
|
|
// original -> gobgp:enabled
|
|
//gobgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> gobgp:restart-time
|
|
RestartTime uint32 `mapstructure:"restart-time" json:"restart-time,omitempty"`
|
|
}
|
|
|
|
func (lhs *LongLivedGracefulRestartConfig) Equal(rhs *LongLivedGracefulRestartConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
if lhs.RestartTime != rhs.RestartTime {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:long-lived-graceful-restart
|
|
type LongLivedGracefulRestart struct {
|
|
// original -> gobgp:long-lived-graceful-restart-config
|
|
Config LongLivedGracefulRestartConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:long-lived-graceful-restart-state
|
|
State LongLivedGracefulRestartState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *LongLivedGracefulRestart) Equal(rhs *LongLivedGracefulRestart) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:state
|
|
type RouteTargetMembershipState struct {
|
|
// original -> gobgp:deferral-time
|
|
DeferralTime uint16 `mapstructure:"deferral-time" json:"deferral-time,omitempty"`
|
|
}
|
|
|
|
//struct for container gobgp:config
|
|
type RouteTargetMembershipConfig struct {
|
|
// original -> gobgp:deferral-time
|
|
DeferralTime uint16 `mapstructure:"deferral-time" json:"deferral-time,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteTargetMembershipConfig) Equal(rhs *RouteTargetMembershipConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.DeferralTime != rhs.DeferralTime {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:route-target-membership
|
|
type RouteTargetMembership struct {
|
|
// original -> gobgp:route-target-membership-config
|
|
Config RouteTargetMembershipConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> gobgp:route-target-membership-state
|
|
State RouteTargetMembershipState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteTargetMembership) Equal(rhs *RouteTargetMembership) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:l2vpn-evpn
|
|
type L2vpnEvpn struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *L2vpnEvpn) Equal(rhs *L2vpnEvpn) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:l2vpn-vpls
|
|
type L2vpnVpls struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *L2vpnVpls) Equal(rhs *L2vpnVpls) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:l3vpn-ipv6-multicast
|
|
type L3vpnIpv6Multicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *L3vpnIpv6Multicast) Equal(rhs *L3vpnIpv6Multicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:l3vpn-ipv4-multicast
|
|
type L3vpnIpv4Multicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *L3vpnIpv4Multicast) Equal(rhs *L3vpnIpv4Multicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:l3vpn-ipv6-unicast
|
|
type L3vpnIpv6Unicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *L3vpnIpv6Unicast) Equal(rhs *L3vpnIpv6Unicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:l3vpn-ipv4-unicast
|
|
type L3vpnIpv4Unicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *L3vpnIpv4Unicast) Equal(rhs *L3vpnIpv4Unicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:ipv6-labelled-unicast
|
|
type Ipv6LabelledUnicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ipv6LabelledUnicast) Equal(rhs *Ipv6LabelledUnicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:ipv4-labelled-unicast
|
|
type Ipv4LabelledUnicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ipv4LabelledUnicast) Equal(rhs *Ipv4LabelledUnicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//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 `mapstructure:"send-default-route" json:"send-default-route,omitempty"`
|
|
}
|
|
|
|
//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 `mapstructure:"send-default-route" json:"send-default-route,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ipv6UnicastConfig) Equal(rhs *Ipv6UnicastConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.SendDefaultRoute != rhs.SendDefaultRoute {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:ipv6-unicast
|
|
type Ipv6Unicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
// original -> bgp-mp:ipv6-unicast-config
|
|
Config Ipv6UnicastConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:ipv6-unicast-state
|
|
State Ipv6UnicastState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ipv6Unicast) Equal(rhs *Ipv6Unicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//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 `mapstructure:"send-default-route" json:"send-default-route,omitempty"`
|
|
}
|
|
|
|
//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 `mapstructure:"send-default-route" json:"send-default-route,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ipv4UnicastConfig) Equal(rhs *Ipv4UnicastConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.SendDefaultRoute != rhs.SendDefaultRoute {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:state
|
|
type PrefixLimitState struct {
|
|
// original -> bgp-mp:max-prefixes
|
|
MaxPrefixes uint32 `mapstructure:"max-prefixes" json:"max-prefixes,omitempty"`
|
|
// original -> bgp-mp:shutdown-threshold-pct
|
|
ShutdownThresholdPct Percentage `mapstructure:"shutdown-threshold-pct" json:"shutdown-threshold-pct,omitempty"`
|
|
// original -> bgp-mp:restart-timer
|
|
//bgp-mp:restart-timer's original type is decimal64
|
|
RestartTimer float64 `mapstructure:"restart-timer" json:"restart-timer,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp-mp:config
|
|
type PrefixLimitConfig struct {
|
|
// original -> bgp-mp:max-prefixes
|
|
MaxPrefixes uint32 `mapstructure:"max-prefixes" json:"max-prefixes,omitempty"`
|
|
// original -> bgp-mp:shutdown-threshold-pct
|
|
ShutdownThresholdPct Percentage `mapstructure:"shutdown-threshold-pct" json:"shutdown-threshold-pct,omitempty"`
|
|
// original -> bgp-mp:restart-timer
|
|
//bgp-mp:restart-timer's original type is decimal64
|
|
RestartTimer float64 `mapstructure:"restart-timer" json:"restart-timer,omitempty"`
|
|
}
|
|
|
|
func (lhs *PrefixLimitConfig) Equal(rhs *PrefixLimitConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.MaxPrefixes != rhs.MaxPrefixes {
|
|
return false
|
|
}
|
|
if lhs.ShutdownThresholdPct != rhs.ShutdownThresholdPct {
|
|
return false
|
|
}
|
|
if lhs.RestartTimer != rhs.RestartTimer {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:prefix-limit
|
|
type PrefixLimit struct {
|
|
// original -> bgp-mp:prefix-limit-config
|
|
Config PrefixLimitConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:prefix-limit-state
|
|
State PrefixLimitState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *PrefixLimit) Equal(rhs *PrefixLimit) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:ipv4-unicast
|
|
type Ipv4Unicast struct {
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
// original -> bgp-mp:ipv4-unicast-config
|
|
Config Ipv4UnicastConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:ipv4-unicast-state
|
|
State Ipv4UnicastState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ipv4Unicast) Equal(rhs *Ipv4Unicast) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:state
|
|
type ApplyPolicyState struct {
|
|
// original -> rpol:import-policy
|
|
ImportPolicyList []string `mapstructure:"import-policy-list" json:"import-policy-list,omitempty"`
|
|
// original -> rpol:default-import-policy
|
|
DefaultImportPolicy DefaultPolicyType `mapstructure:"default-import-policy" json:"default-import-policy,omitempty"`
|
|
// original -> rpol:export-policy
|
|
ExportPolicyList []string `mapstructure:"export-policy-list" json:"export-policy-list,omitempty"`
|
|
// original -> rpol:default-export-policy
|
|
DefaultExportPolicy DefaultPolicyType `mapstructure:"default-export-policy" json:"default-export-policy,omitempty"`
|
|
// original -> gobgp:in-policy
|
|
InPolicyList []string `mapstructure:"in-policy-list" json:"in-policy-list,omitempty"`
|
|
// original -> gobgp:default-in-policy
|
|
DefaultInPolicy DefaultPolicyType `mapstructure:"default-in-policy" json:"default-in-policy,omitempty"`
|
|
}
|
|
|
|
//struct for container rpol:config
|
|
type ApplyPolicyConfig struct {
|
|
// original -> rpol:import-policy
|
|
ImportPolicyList []string `mapstructure:"import-policy-list" json:"import-policy-list,omitempty"`
|
|
// original -> rpol:default-import-policy
|
|
DefaultImportPolicy DefaultPolicyType `mapstructure:"default-import-policy" json:"default-import-policy,omitempty"`
|
|
// original -> rpol:export-policy
|
|
ExportPolicyList []string `mapstructure:"export-policy-list" json:"export-policy-list,omitempty"`
|
|
// original -> rpol:default-export-policy
|
|
DefaultExportPolicy DefaultPolicyType `mapstructure:"default-export-policy" json:"default-export-policy,omitempty"`
|
|
// original -> gobgp:in-policy
|
|
InPolicyList []string `mapstructure:"in-policy-list" json:"in-policy-list,omitempty"`
|
|
// original -> gobgp:default-in-policy
|
|
DefaultInPolicy DefaultPolicyType `mapstructure:"default-in-policy" json:"default-in-policy,omitempty"`
|
|
}
|
|
|
|
func (lhs *ApplyPolicyConfig) Equal(rhs *ApplyPolicyConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if len(lhs.ImportPolicyList) != len(rhs.ImportPolicyList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.ImportPolicyList {
|
|
if l != rhs.ImportPolicyList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if lhs.DefaultImportPolicy != rhs.DefaultImportPolicy {
|
|
return false
|
|
}
|
|
if len(lhs.ExportPolicyList) != len(rhs.ExportPolicyList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.ExportPolicyList {
|
|
if l != rhs.ExportPolicyList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if lhs.DefaultExportPolicy != rhs.DefaultExportPolicy {
|
|
return false
|
|
}
|
|
if len(lhs.InPolicyList) != len(rhs.InPolicyList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.InPolicyList {
|
|
if l != rhs.InPolicyList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if lhs.DefaultInPolicy != rhs.DefaultInPolicy {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:apply-policy
|
|
type ApplyPolicy struct {
|
|
// original -> rpol:apply-policy-config
|
|
Config ApplyPolicyConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> rpol:apply-policy-state
|
|
State ApplyPolicyState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *ApplyPolicy) Equal(rhs *ApplyPolicy) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:state
|
|
type AfiSafiState struct {
|
|
// original -> bgp-mp:afi-safi-name
|
|
AfiSafiName AfiSafiType `mapstructure:"afi-safi-name" json:"afi-safi-name,omitempty"`
|
|
// original -> bgp-mp:enabled
|
|
//bgp-mp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp-op:total-paths
|
|
TotalPaths uint32 `mapstructure:"total-paths" json:"total-paths,omitempty"`
|
|
// original -> bgp-op:total-prefixes
|
|
TotalPrefixes uint32 `mapstructure:"total-prefixes" json:"total-prefixes,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp-mp:config
|
|
type AfiSafiConfig struct {
|
|
// original -> bgp-mp:afi-safi-name
|
|
AfiSafiName AfiSafiType `mapstructure:"afi-safi-name" json:"afi-safi-name,omitempty"`
|
|
// original -> bgp-mp:enabled
|
|
//bgp-mp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
}
|
|
|
|
func (lhs *AfiSafiConfig) Equal(rhs *AfiSafiConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.AfiSafiName != rhs.AfiSafiName {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:state
|
|
type MpGracefulRestartState struct {
|
|
// original -> bgp-mp:enabled
|
|
//bgp-mp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp-op:received
|
|
//bgp-op:received's original type is boolean
|
|
Received bool `mapstructure:"received" json:"received,omitempty"`
|
|
// original -> bgp-op:advertised
|
|
//bgp-op:advertised's original type is boolean
|
|
Advertised bool `mapstructure:"advertised" json:"advertised,omitempty"`
|
|
// original -> gobgp:end-of-rib-received
|
|
//gobgp:end-of-rib-received's original type is boolean
|
|
EndOfRibReceived bool `mapstructure:"end-of-rib-received" json:"end-of-rib-received,omitempty"`
|
|
// original -> gobgp:end-of-rib-sent
|
|
//gobgp:end-of-rib-sent's original type is boolean
|
|
EndOfRibSent bool `mapstructure:"end-of-rib-sent" json:"end-of-rib-sent,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp-mp:config
|
|
type MpGracefulRestartConfig struct {
|
|
// original -> bgp-mp:enabled
|
|
//bgp-mp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
}
|
|
|
|
func (lhs *MpGracefulRestartConfig) Equal(rhs *MpGracefulRestartConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:graceful-restart
|
|
type MpGracefulRestart struct {
|
|
// original -> bgp-mp:mp-graceful-restart-config
|
|
Config MpGracefulRestartConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:mp-graceful-restart-state
|
|
State MpGracefulRestartState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *MpGracefulRestart) Equal(rhs *MpGracefulRestart) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:afi-safi
|
|
type AfiSafi struct {
|
|
// original -> bgp-mp:afi-safi-name
|
|
// original -> bgp-mp:mp-graceful-restart
|
|
MpGracefulRestart MpGracefulRestart `mapstructure:"mp-graceful-restart" json:"mp-graceful-restart,omitempty"`
|
|
// original -> bgp-mp:afi-safi-config
|
|
Config AfiSafiConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:afi-safi-state
|
|
State AfiSafiState `mapstructure:"state" json:"state,omitempty"`
|
|
// original -> rpol:apply-policy
|
|
ApplyPolicy ApplyPolicy `mapstructure:"apply-policy" json:"apply-policy,omitempty"`
|
|
// original -> bgp-mp:ipv4-unicast
|
|
Ipv4Unicast Ipv4Unicast `mapstructure:"ipv4-unicast" json:"ipv4-unicast,omitempty"`
|
|
// original -> bgp-mp:ipv6-unicast
|
|
Ipv6Unicast Ipv6Unicast `mapstructure:"ipv6-unicast" json:"ipv6-unicast,omitempty"`
|
|
// original -> bgp-mp:ipv4-labelled-unicast
|
|
Ipv4LabelledUnicast Ipv4LabelledUnicast `mapstructure:"ipv4-labelled-unicast" json:"ipv4-labelled-unicast,omitempty"`
|
|
// original -> bgp-mp:ipv6-labelled-unicast
|
|
Ipv6LabelledUnicast Ipv6LabelledUnicast `mapstructure:"ipv6-labelled-unicast" json:"ipv6-labelled-unicast,omitempty"`
|
|
// original -> bgp-mp:l3vpn-ipv4-unicast
|
|
L3vpnIpv4Unicast L3vpnIpv4Unicast `mapstructure:"l3vpn-ipv4-unicast" json:"l3vpn-ipv4-unicast,omitempty"`
|
|
// original -> bgp-mp:l3vpn-ipv6-unicast
|
|
L3vpnIpv6Unicast L3vpnIpv6Unicast `mapstructure:"l3vpn-ipv6-unicast" json:"l3vpn-ipv6-unicast,omitempty"`
|
|
// original -> bgp-mp:l3vpn-ipv4-multicast
|
|
L3vpnIpv4Multicast L3vpnIpv4Multicast `mapstructure:"l3vpn-ipv4-multicast" json:"l3vpn-ipv4-multicast,omitempty"`
|
|
// original -> bgp-mp:l3vpn-ipv6-multicast
|
|
L3vpnIpv6Multicast L3vpnIpv6Multicast `mapstructure:"l3vpn-ipv6-multicast" json:"l3vpn-ipv6-multicast,omitempty"`
|
|
// original -> bgp-mp:l2vpn-vpls
|
|
L2vpnVpls L2vpnVpls `mapstructure:"l2vpn-vpls" json:"l2vpn-vpls,omitempty"`
|
|
// original -> bgp-mp:l2vpn-evpn
|
|
L2vpnEvpn L2vpnEvpn `mapstructure:"l2vpn-evpn" json:"l2vpn-evpn,omitempty"`
|
|
// original -> bgp-mp:route-selection-options
|
|
RouteSelectionOptions RouteSelectionOptions `mapstructure:"route-selection-options" json:"route-selection-options,omitempty"`
|
|
// original -> bgp-mp:use-multiple-paths
|
|
UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths" json:"use-multiple-paths,omitempty"`
|
|
// original -> bgp-mp:prefix-limit
|
|
PrefixLimit PrefixLimit `mapstructure:"prefix-limit" json:"prefix-limit,omitempty"`
|
|
// original -> gobgp:route-target-membership
|
|
RouteTargetMembership RouteTargetMembership `mapstructure:"route-target-membership" json:"route-target-membership,omitempty"`
|
|
// original -> gobgp:long-lived-graceful-restart
|
|
LongLivedGracefulRestart LongLivedGracefulRestart `mapstructure:"long-lived-graceful-restart" json:"long-lived-graceful-restart,omitempty"`
|
|
}
|
|
|
|
func (lhs *AfiSafi) Equal(rhs *AfiSafi) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.MpGracefulRestart.Equal(&(rhs.MpGracefulRestart)) {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
if !lhs.ApplyPolicy.Equal(&(rhs.ApplyPolicy)) {
|
|
return false
|
|
}
|
|
if !lhs.Ipv4Unicast.Equal(&(rhs.Ipv4Unicast)) {
|
|
return false
|
|
}
|
|
if !lhs.Ipv6Unicast.Equal(&(rhs.Ipv6Unicast)) {
|
|
return false
|
|
}
|
|
if !lhs.Ipv4LabelledUnicast.Equal(&(rhs.Ipv4LabelledUnicast)) {
|
|
return false
|
|
}
|
|
if !lhs.Ipv6LabelledUnicast.Equal(&(rhs.Ipv6LabelledUnicast)) {
|
|
return false
|
|
}
|
|
if !lhs.L3vpnIpv4Unicast.Equal(&(rhs.L3vpnIpv4Unicast)) {
|
|
return false
|
|
}
|
|
if !lhs.L3vpnIpv6Unicast.Equal(&(rhs.L3vpnIpv6Unicast)) {
|
|
return false
|
|
}
|
|
if !lhs.L3vpnIpv4Multicast.Equal(&(rhs.L3vpnIpv4Multicast)) {
|
|
return false
|
|
}
|
|
if !lhs.L3vpnIpv6Multicast.Equal(&(rhs.L3vpnIpv6Multicast)) {
|
|
return false
|
|
}
|
|
if !lhs.L2vpnVpls.Equal(&(rhs.L2vpnVpls)) {
|
|
return false
|
|
}
|
|
if !lhs.L2vpnEvpn.Equal(&(rhs.L2vpnEvpn)) {
|
|
return false
|
|
}
|
|
if !lhs.RouteSelectionOptions.Equal(&(rhs.RouteSelectionOptions)) {
|
|
return false
|
|
}
|
|
if !lhs.UseMultiplePaths.Equal(&(rhs.UseMultiplePaths)) {
|
|
return false
|
|
}
|
|
if !lhs.PrefixLimit.Equal(&(rhs.PrefixLimit)) {
|
|
return false
|
|
}
|
|
if !lhs.RouteTargetMembership.Equal(&(rhs.RouteTargetMembership)) {
|
|
return false
|
|
}
|
|
if !lhs.LongLivedGracefulRestart.Equal(&(rhs.LongLivedGracefulRestart)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type GracefulRestartState struct {
|
|
// original -> bgp:enabled
|
|
//bgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp:restart-time
|
|
RestartTime uint16 `mapstructure:"restart-time" json:"restart-time,omitempty"`
|
|
// original -> bgp:stale-routes-time
|
|
//bgp:stale-routes-time's original type is decimal64
|
|
StaleRoutesTime float64 `mapstructure:"stale-routes-time" json:"stale-routes-time,omitempty"`
|
|
// original -> bgp:helper-only
|
|
//bgp:helper-only's original type is boolean
|
|
HelperOnly bool `mapstructure:"helper-only" json:"helper-only,omitempty"`
|
|
// original -> bgp-op:peer-restart-time
|
|
PeerRestartTime uint16 `mapstructure:"peer-restart-time" json:"peer-restart-time,omitempty"`
|
|
// original -> bgp-op:peer-restarting
|
|
//bgp-op:peer-restarting's original type is boolean
|
|
PeerRestarting bool `mapstructure:"peer-restarting" json:"peer-restarting,omitempty"`
|
|
// original -> bgp-op:local-restarting
|
|
//bgp-op:local-restarting's original type is boolean
|
|
LocalRestarting bool `mapstructure:"local-restarting" json:"local-restarting,omitempty"`
|
|
// original -> bgp-op:mode
|
|
Mode Mode `mapstructure:"mode" json:"mode,omitempty"`
|
|
// original -> gobgp:deferral-time
|
|
DeferralTime uint16 `mapstructure:"deferral-time" json:"deferral-time,omitempty"`
|
|
// original -> gobgp:notification-enabled
|
|
//gobgp:notification-enabled's original type is boolean
|
|
NotificationEnabled bool `mapstructure:"notification-enabled" json:"notification-enabled,omitempty"`
|
|
// original -> gobgp:long-lived-enabled
|
|
//gobgp:long-lived-enabled's original type is boolean
|
|
LongLivedEnabled bool `mapstructure:"long-lived-enabled" json:"long-lived-enabled,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type GracefulRestartConfig struct {
|
|
// original -> bgp:enabled
|
|
//bgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp:restart-time
|
|
RestartTime uint16 `mapstructure:"restart-time" json:"restart-time,omitempty"`
|
|
// original -> bgp:stale-routes-time
|
|
//bgp:stale-routes-time's original type is decimal64
|
|
StaleRoutesTime float64 `mapstructure:"stale-routes-time" json:"stale-routes-time,omitempty"`
|
|
// original -> bgp:helper-only
|
|
//bgp:helper-only's original type is boolean
|
|
HelperOnly bool `mapstructure:"helper-only" json:"helper-only,omitempty"`
|
|
// original -> gobgp:deferral-time
|
|
DeferralTime uint16 `mapstructure:"deferral-time" json:"deferral-time,omitempty"`
|
|
// original -> gobgp:notification-enabled
|
|
//gobgp:notification-enabled's original type is boolean
|
|
NotificationEnabled bool `mapstructure:"notification-enabled" json:"notification-enabled,omitempty"`
|
|
// original -> gobgp:long-lived-enabled
|
|
//gobgp:long-lived-enabled's original type is boolean
|
|
LongLivedEnabled bool `mapstructure:"long-lived-enabled" json:"long-lived-enabled,omitempty"`
|
|
}
|
|
|
|
func (lhs *GracefulRestartConfig) Equal(rhs *GracefulRestartConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
if lhs.RestartTime != rhs.RestartTime {
|
|
return false
|
|
}
|
|
if lhs.StaleRoutesTime != rhs.StaleRoutesTime {
|
|
return false
|
|
}
|
|
if lhs.HelperOnly != rhs.HelperOnly {
|
|
return false
|
|
}
|
|
if lhs.DeferralTime != rhs.DeferralTime {
|
|
return false
|
|
}
|
|
if lhs.NotificationEnabled != rhs.NotificationEnabled {
|
|
return false
|
|
}
|
|
if lhs.LongLivedEnabled != rhs.LongLivedEnabled {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:graceful-restart
|
|
type GracefulRestart struct {
|
|
// original -> bgp:graceful-restart-config
|
|
Config GracefulRestartConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:graceful-restart-state
|
|
State GracefulRestartState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *GracefulRestart) Equal(rhs *GracefulRestart) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:state
|
|
type IbgpState struct {
|
|
// original -> bgp-mp:maximum-paths
|
|
MaximumPaths uint32 `mapstructure:"maximum-paths" json:"maximum-paths,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp-mp:config
|
|
type IbgpConfig struct {
|
|
// original -> bgp-mp:maximum-paths
|
|
MaximumPaths uint32 `mapstructure:"maximum-paths" json:"maximum-paths,omitempty"`
|
|
}
|
|
|
|
func (lhs *IbgpConfig) Equal(rhs *IbgpConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.MaximumPaths != rhs.MaximumPaths {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:ibgp
|
|
type Ibgp struct {
|
|
// original -> bgp-mp:ibgp-config
|
|
Config IbgpConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:ibgp-state
|
|
State IbgpState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ibgp) Equal(rhs *Ibgp) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//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 `mapstructure:"allow-multiple-as" json:"allow-multiple-as,omitempty"`
|
|
// original -> bgp-mp:maximum-paths
|
|
MaximumPaths uint32 `mapstructure:"maximum-paths" json:"maximum-paths,omitempty"`
|
|
}
|
|
|
|
//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 `mapstructure:"allow-multiple-as" json:"allow-multiple-as,omitempty"`
|
|
// original -> bgp-mp:maximum-paths
|
|
MaximumPaths uint32 `mapstructure:"maximum-paths" json:"maximum-paths,omitempty"`
|
|
}
|
|
|
|
func (lhs *EbgpConfig) Equal(rhs *EbgpConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.AllowMultipleAs != rhs.AllowMultipleAs {
|
|
return false
|
|
}
|
|
if lhs.MaximumPaths != rhs.MaximumPaths {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:ebgp
|
|
type Ebgp struct {
|
|
// original -> bgp-mp:ebgp-config
|
|
Config EbgpConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:ebgp-state
|
|
State EbgpState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Ebgp) Equal(rhs *Ebgp) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:state
|
|
type UseMultiplePathsState struct {
|
|
// original -> bgp-mp:enabled
|
|
//bgp-mp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp-mp:config
|
|
type UseMultiplePathsConfig struct {
|
|
// original -> bgp-mp:enabled
|
|
//bgp-mp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
}
|
|
|
|
func (lhs *UseMultiplePathsConfig) Equal(rhs *UseMultiplePathsConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:use-multiple-paths
|
|
type UseMultiplePaths struct {
|
|
// original -> bgp-mp:use-multiple-paths-config
|
|
Config UseMultiplePathsConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:use-multiple-paths-state
|
|
State UseMultiplePathsState `mapstructure:"state" json:"state,omitempty"`
|
|
// original -> bgp-mp:ebgp
|
|
Ebgp Ebgp `mapstructure:"ebgp" json:"ebgp,omitempty"`
|
|
// original -> bgp-mp:ibgp
|
|
Ibgp Ibgp `mapstructure:"ibgp" json:"ibgp,omitempty"`
|
|
}
|
|
|
|
func (lhs *UseMultiplePaths) Equal(rhs *UseMultiplePaths) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
if !lhs.Ebgp.Equal(&(rhs.Ebgp)) {
|
|
return false
|
|
}
|
|
if !lhs.Ibgp.Equal(&(rhs.Ibgp)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type ConfederationState struct {
|
|
// original -> bgp:enabled
|
|
//bgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp:identifier
|
|
//bgp:identifier's original type is inet:as-number
|
|
Identifier uint32 `mapstructure:"identifier" json:"identifier,omitempty"`
|
|
// original -> bgp:member-as
|
|
// original type is list of inet:as-number
|
|
MemberAsList []uint32 `mapstructure:"member-as-list" json:"member-as-list,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type ConfederationConfig struct {
|
|
// original -> bgp:enabled
|
|
//bgp:enabled's original type is boolean
|
|
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
|
|
// original -> bgp:identifier
|
|
//bgp:identifier's original type is inet:as-number
|
|
Identifier uint32 `mapstructure:"identifier" json:"identifier,omitempty"`
|
|
// original -> bgp:member-as
|
|
// original type is list of inet:as-number
|
|
MemberAsList []uint32 `mapstructure:"member-as-list" json:"member-as-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *ConfederationConfig) Equal(rhs *ConfederationConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Enabled != rhs.Enabled {
|
|
return false
|
|
}
|
|
if lhs.Identifier != rhs.Identifier {
|
|
return false
|
|
}
|
|
if len(lhs.MemberAsList) != len(rhs.MemberAsList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.MemberAsList {
|
|
if l != rhs.MemberAsList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:confederation
|
|
type Confederation struct {
|
|
// original -> bgp:confederation-config
|
|
Config ConfederationConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:confederation-state
|
|
State ConfederationState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *Confederation) Equal(rhs *Confederation) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type DefaultRouteDistanceState struct {
|
|
// original -> bgp:external-route-distance
|
|
ExternalRouteDistance uint8 `mapstructure:"external-route-distance" json:"external-route-distance,omitempty"`
|
|
// original -> bgp:internal-route-distance
|
|
InternalRouteDistance uint8 `mapstructure:"internal-route-distance" json:"internal-route-distance,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type DefaultRouteDistanceConfig struct {
|
|
// original -> bgp:external-route-distance
|
|
ExternalRouteDistance uint8 `mapstructure:"external-route-distance" json:"external-route-distance,omitempty"`
|
|
// original -> bgp:internal-route-distance
|
|
InternalRouteDistance uint8 `mapstructure:"internal-route-distance" json:"internal-route-distance,omitempty"`
|
|
}
|
|
|
|
func (lhs *DefaultRouteDistanceConfig) Equal(rhs *DefaultRouteDistanceConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.ExternalRouteDistance != rhs.ExternalRouteDistance {
|
|
return false
|
|
}
|
|
if lhs.InternalRouteDistance != rhs.InternalRouteDistance {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:default-route-distance
|
|
type DefaultRouteDistance struct {
|
|
// original -> bgp:default-route-distance-config
|
|
Config DefaultRouteDistanceConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:default-route-distance-state
|
|
State DefaultRouteDistanceState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *DefaultRouteDistance) Equal(rhs *DefaultRouteDistance) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//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 `mapstructure:"always-compare-med" json:"always-compare-med,omitempty"`
|
|
// original -> bgp-mp:ignore-as-path-length
|
|
//bgp-mp:ignore-as-path-length's original type is boolean
|
|
IgnoreAsPathLength bool `mapstructure:"ignore-as-path-length" json:"ignore-as-path-length,omitempty"`
|
|
// original -> bgp-mp:external-compare-router-id
|
|
//bgp-mp:external-compare-router-id's original type is boolean
|
|
ExternalCompareRouterId bool `mapstructure:"external-compare-router-id" json:"external-compare-router-id,omitempty"`
|
|
// original -> bgp-mp:advertise-inactive-routes
|
|
//bgp-mp:advertise-inactive-routes's original type is boolean
|
|
AdvertiseInactiveRoutes bool `mapstructure:"advertise-inactive-routes" json:"advertise-inactive-routes,omitempty"`
|
|
// original -> bgp-mp:enable-aigp
|
|
//bgp-mp:enable-aigp's original type is boolean
|
|
EnableAigp bool `mapstructure:"enable-aigp" json:"enable-aigp,omitempty"`
|
|
// original -> bgp-mp:ignore-next-hop-igp-metric
|
|
//bgp-mp:ignore-next-hop-igp-metric's original type is boolean
|
|
IgnoreNextHopIgpMetric bool `mapstructure:"ignore-next-hop-igp-metric" json:"ignore-next-hop-igp-metric,omitempty"`
|
|
}
|
|
|
|
//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 `mapstructure:"always-compare-med" json:"always-compare-med,omitempty"`
|
|
// original -> bgp-mp:ignore-as-path-length
|
|
//bgp-mp:ignore-as-path-length's original type is boolean
|
|
IgnoreAsPathLength bool `mapstructure:"ignore-as-path-length" json:"ignore-as-path-length,omitempty"`
|
|
// original -> bgp-mp:external-compare-router-id
|
|
//bgp-mp:external-compare-router-id's original type is boolean
|
|
ExternalCompareRouterId bool `mapstructure:"external-compare-router-id" json:"external-compare-router-id,omitempty"`
|
|
// original -> bgp-mp:advertise-inactive-routes
|
|
//bgp-mp:advertise-inactive-routes's original type is boolean
|
|
AdvertiseInactiveRoutes bool `mapstructure:"advertise-inactive-routes" json:"advertise-inactive-routes,omitempty"`
|
|
// original -> bgp-mp:enable-aigp
|
|
//bgp-mp:enable-aigp's original type is boolean
|
|
EnableAigp bool `mapstructure:"enable-aigp" json:"enable-aigp,omitempty"`
|
|
// original -> bgp-mp:ignore-next-hop-igp-metric
|
|
//bgp-mp:ignore-next-hop-igp-metric's original type is boolean
|
|
IgnoreNextHopIgpMetric bool `mapstructure:"ignore-next-hop-igp-metric" json:"ignore-next-hop-igp-metric,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteSelectionOptionsConfig) Equal(rhs *RouteSelectionOptionsConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.AlwaysCompareMed != rhs.AlwaysCompareMed {
|
|
return false
|
|
}
|
|
if lhs.IgnoreAsPathLength != rhs.IgnoreAsPathLength {
|
|
return false
|
|
}
|
|
if lhs.ExternalCompareRouterId != rhs.ExternalCompareRouterId {
|
|
return false
|
|
}
|
|
if lhs.AdvertiseInactiveRoutes != rhs.AdvertiseInactiveRoutes {
|
|
return false
|
|
}
|
|
if lhs.EnableAigp != rhs.EnableAigp {
|
|
return false
|
|
}
|
|
if lhs.IgnoreNextHopIgpMetric != rhs.IgnoreNextHopIgpMetric {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-mp:route-selection-options
|
|
type RouteSelectionOptions struct {
|
|
// original -> bgp-mp:route-selection-options-config
|
|
Config RouteSelectionOptionsConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp-mp:route-selection-options-state
|
|
State RouteSelectionOptionsState `mapstructure:"state" json:"state,omitempty"`
|
|
}
|
|
|
|
func (lhs *RouteSelectionOptions) Equal(rhs *RouteSelectionOptions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:state
|
|
type GlobalState struct {
|
|
// original -> bgp:as
|
|
//bgp:as's original type is inet:as-number
|
|
As uint32 `mapstructure:"as" json:"as,omitempty"`
|
|
// original -> bgp:router-id
|
|
//bgp:router-id's original type is inet:ipv4-address
|
|
RouterId string `mapstructure:"router-id" json:"router-id,omitempty"`
|
|
// original -> bgp-op:total-paths
|
|
TotalPaths uint32 `mapstructure:"total-paths" json:"total-paths,omitempty"`
|
|
// original -> bgp-op:total-prefixes
|
|
TotalPrefixes uint32 `mapstructure:"total-prefixes" json:"total-prefixes,omitempty"`
|
|
// original -> gobgp:port
|
|
Port int32 `mapstructure:"port" json:"port,omitempty"`
|
|
// original -> gobgp:local-address
|
|
LocalAddressList []string `mapstructure:"local-address-list" json:"local-address-list,omitempty"`
|
|
}
|
|
|
|
//struct for container bgp:config
|
|
type GlobalConfig struct {
|
|
// original -> bgp:as
|
|
//bgp:as's original type is inet:as-number
|
|
As uint32 `mapstructure:"as" json:"as,omitempty"`
|
|
// original -> bgp:router-id
|
|
//bgp:router-id's original type is inet:ipv4-address
|
|
RouterId string `mapstructure:"router-id" json:"router-id,omitempty"`
|
|
// original -> gobgp:port
|
|
Port int32 `mapstructure:"port" json:"port,omitempty"`
|
|
// original -> gobgp:local-address
|
|
LocalAddressList []string `mapstructure:"local-address-list" json:"local-address-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *GlobalConfig) Equal(rhs *GlobalConfig) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.As != rhs.As {
|
|
return false
|
|
}
|
|
if lhs.RouterId != rhs.RouterId {
|
|
return false
|
|
}
|
|
if lhs.Port != rhs.Port {
|
|
return false
|
|
}
|
|
if len(lhs.LocalAddressList) != len(rhs.LocalAddressList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.LocalAddressList {
|
|
if l != rhs.LocalAddressList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:global
|
|
type Global struct {
|
|
// original -> bgp:global-config
|
|
Config GlobalConfig `mapstructure:"config" json:"config,omitempty"`
|
|
// original -> bgp:global-state
|
|
State GlobalState `mapstructure:"state" json:"state,omitempty"`
|
|
// original -> bgp-mp:route-selection-options
|
|
RouteSelectionOptions RouteSelectionOptions `mapstructure:"route-selection-options" json:"route-selection-options,omitempty"`
|
|
// original -> bgp:default-route-distance
|
|
DefaultRouteDistance DefaultRouteDistance `mapstructure:"default-route-distance" json:"default-route-distance,omitempty"`
|
|
// original -> bgp:confederation
|
|
Confederation Confederation `mapstructure:"confederation" json:"confederation,omitempty"`
|
|
// original -> bgp-mp:use-multiple-paths
|
|
UseMultiplePaths UseMultiplePaths `mapstructure:"use-multiple-paths" json:"use-multiple-paths,omitempty"`
|
|
// original -> bgp:graceful-restart
|
|
GracefulRestart GracefulRestart `mapstructure:"graceful-restart" json:"graceful-restart,omitempty"`
|
|
// original -> bgp:afi-safis
|
|
AfiSafis []AfiSafi `mapstructure:"afi-safis" json:"afi-safis,omitempty"`
|
|
// original -> rpol:apply-policy
|
|
ApplyPolicy ApplyPolicy `mapstructure:"apply-policy" json:"apply-policy,omitempty"`
|
|
}
|
|
|
|
func (lhs *Global) Equal(rhs *Global) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Config.Equal(&(rhs.Config)) {
|
|
return false
|
|
}
|
|
if !lhs.RouteSelectionOptions.Equal(&(rhs.RouteSelectionOptions)) {
|
|
return false
|
|
}
|
|
if !lhs.DefaultRouteDistance.Equal(&(rhs.DefaultRouteDistance)) {
|
|
return false
|
|
}
|
|
if !lhs.Confederation.Equal(&(rhs.Confederation)) {
|
|
return false
|
|
}
|
|
if !lhs.UseMultiplePaths.Equal(&(rhs.UseMultiplePaths)) {
|
|
return false
|
|
}
|
|
if !lhs.GracefulRestart.Equal(&(rhs.GracefulRestart)) {
|
|
return false
|
|
}
|
|
if len(lhs.AfiSafis) != len(rhs.AfiSafis) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*AfiSafi)
|
|
for i, l := range lhs.AfiSafis {
|
|
lmap[mapkey(i, string(l.Config.AfiSafiName))] = &lhs.AfiSafis[i]
|
|
}
|
|
for i, r := range rhs.AfiSafis {
|
|
if l, y := lmap[mapkey(i, string(r.Config.AfiSafiName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if !lhs.ApplyPolicy.Equal(&(rhs.ApplyPolicy)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp:bgp
|
|
type Bgp struct {
|
|
// original -> bgp:global
|
|
Global Global `mapstructure:"global" json:"global,omitempty"`
|
|
// original -> bgp:neighbors
|
|
Neighbors []Neighbor `mapstructure:"neighbors" json:"neighbors,omitempty"`
|
|
// original -> bgp:peer-groups
|
|
PeerGroups []PeerGroup `mapstructure:"peer-groups" json:"peer-groups,omitempty"`
|
|
// original -> gobgp:rpki-servers
|
|
RpkiServers []RpkiServer `mapstructure:"rpki-servers" json:"rpki-servers,omitempty"`
|
|
// original -> gobgp:bmp-servers
|
|
BmpServers []BmpServer `mapstructure:"bmp-servers" json:"bmp-servers,omitempty"`
|
|
// original -> gobgp:mrt-dump
|
|
MrtDump []Mrt `mapstructure:"mrt-dump" json:"mrt-dump,omitempty"`
|
|
// original -> gobgp:zebra
|
|
Zebra Zebra `mapstructure:"zebra" json:"zebra,omitempty"`
|
|
// original -> gobgp:collector
|
|
Collector Collector `mapstructure:"collector" json:"collector,omitempty"`
|
|
// original -> gobgp:dynamic-neighbors
|
|
DynamicNeighbors []DynamicNeighbor `mapstructure:"dynamic-neighbors" json:"dynamic-neighbors,omitempty"`
|
|
}
|
|
|
|
func (lhs *Bgp) Equal(rhs *Bgp) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.Global.Equal(&(rhs.Global)) {
|
|
return false
|
|
}
|
|
if len(lhs.Neighbors) != len(rhs.Neighbors) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*Neighbor)
|
|
for i, l := range lhs.Neighbors {
|
|
lmap[mapkey(i, string(l.Config.NeighborAddress))] = &lhs.Neighbors[i]
|
|
}
|
|
for i, r := range rhs.Neighbors {
|
|
if l, y := lmap[mapkey(i, string(r.Config.NeighborAddress))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.PeerGroups) != len(rhs.PeerGroups) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*PeerGroup)
|
|
for i, l := range lhs.PeerGroups {
|
|
lmap[mapkey(i, string(l.Config.PeerGroupName))] = &lhs.PeerGroups[i]
|
|
}
|
|
for i, r := range rhs.PeerGroups {
|
|
if l, y := lmap[mapkey(i, string(r.Config.PeerGroupName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.RpkiServers) != len(rhs.RpkiServers) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*RpkiServer)
|
|
for i, l := range lhs.RpkiServers {
|
|
lmap[mapkey(i, string(l.Config.Address))] = &lhs.RpkiServers[i]
|
|
}
|
|
for i, r := range rhs.RpkiServers {
|
|
if l, y := lmap[mapkey(i, string(r.Config.Address))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.BmpServers) != len(rhs.BmpServers) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*BmpServer)
|
|
for i, l := range lhs.BmpServers {
|
|
lmap[mapkey(i, string(l.Config.Address))] = &lhs.BmpServers[i]
|
|
}
|
|
for i, r := range rhs.BmpServers {
|
|
if l, y := lmap[mapkey(i, string(r.Config.Address))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.MrtDump) != len(rhs.MrtDump) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*Mrt)
|
|
for i, l := range lhs.MrtDump {
|
|
lmap[mapkey(i, string(l.Config.FileName))] = &lhs.MrtDump[i]
|
|
}
|
|
for i, r := range rhs.MrtDump {
|
|
if l, y := lmap[mapkey(i, string(r.Config.FileName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if !lhs.Zebra.Equal(&(rhs.Zebra)) {
|
|
return false
|
|
}
|
|
if !lhs.Collector.Equal(&(rhs.Collector)) {
|
|
return false
|
|
}
|
|
if len(lhs.DynamicNeighbors) != len(rhs.DynamicNeighbors) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*DynamicNeighbor)
|
|
for i, l := range lhs.DynamicNeighbors {
|
|
lmap[mapkey(i, string(l.Config.Prefix))] = &lhs.DynamicNeighbors[i]
|
|
}
|
|
for i, r := range rhs.DynamicNeighbors {
|
|
if l, y := lmap[mapkey(i, string(r.Config.Prefix))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:set-large-community-method
|
|
type SetLargeCommunityMethod struct {
|
|
// original -> gobgp:communities
|
|
CommunitiesList []string `mapstructure:"communities-list" json:"communities-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *SetLargeCommunityMethod) Equal(rhs *SetLargeCommunityMethod) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if len(lhs.CommunitiesList) != len(rhs.CommunitiesList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.CommunitiesList {
|
|
if l != rhs.CommunitiesList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:set-large-community
|
|
type SetLargeCommunity struct {
|
|
// original -> gobgp:set-large-community-method
|
|
SetLargeCommunityMethod SetLargeCommunityMethod `mapstructure:"set-large-community-method" json:"set-large-community-method,omitempty"`
|
|
// original -> gobgp:options
|
|
Options BgpSetCommunityOptionType `mapstructure:"options" json:"options,omitempty"`
|
|
}
|
|
|
|
func (lhs *SetLargeCommunity) Equal(rhs *SetLargeCommunity) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.SetLargeCommunityMethod.Equal(&(rhs.SetLargeCommunityMethod)) {
|
|
return false
|
|
}
|
|
if lhs.Options != rhs.Options {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:set-ext-community-method
|
|
type SetExtCommunityMethod struct {
|
|
// original -> bgp-pol:communities
|
|
// original type is list of union
|
|
CommunitiesList []string `mapstructure:"communities-list" json:"communities-list,omitempty"`
|
|
// original -> bgp-pol:ext-community-set-ref
|
|
ExtCommunitySetRef string `mapstructure:"ext-community-set-ref" json:"ext-community-set-ref,omitempty"`
|
|
}
|
|
|
|
func (lhs *SetExtCommunityMethod) Equal(rhs *SetExtCommunityMethod) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if len(lhs.CommunitiesList) != len(rhs.CommunitiesList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.CommunitiesList {
|
|
if l != rhs.CommunitiesList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if lhs.ExtCommunitySetRef != rhs.ExtCommunitySetRef {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:set-ext-community
|
|
type SetExtCommunity struct {
|
|
// original -> bgp-pol:set-ext-community-method
|
|
SetExtCommunityMethod SetExtCommunityMethod `mapstructure:"set-ext-community-method" json:"set-ext-community-method,omitempty"`
|
|
// original -> bgp-pol:options
|
|
//bgp-pol:options's original type is bgp-set-community-option-type
|
|
Options string `mapstructure:"options" json:"options,omitempty"`
|
|
}
|
|
|
|
func (lhs *SetExtCommunity) Equal(rhs *SetExtCommunity) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.SetExtCommunityMethod.Equal(&(rhs.SetExtCommunityMethod)) {
|
|
return false
|
|
}
|
|
if lhs.Options != rhs.Options {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:set-community-method
|
|
type SetCommunityMethod struct {
|
|
// original -> bgp-pol:communities
|
|
// original type is list of union
|
|
CommunitiesList []string `mapstructure:"communities-list" json:"communities-list,omitempty"`
|
|
// original -> bgp-pol:community-set-ref
|
|
CommunitySetRef string `mapstructure:"community-set-ref" json:"community-set-ref,omitempty"`
|
|
}
|
|
|
|
func (lhs *SetCommunityMethod) Equal(rhs *SetCommunityMethod) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if len(lhs.CommunitiesList) != len(rhs.CommunitiesList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.CommunitiesList {
|
|
if l != rhs.CommunitiesList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if lhs.CommunitySetRef != rhs.CommunitySetRef {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:set-community
|
|
type SetCommunity struct {
|
|
// original -> bgp-pol:set-community-method
|
|
SetCommunityMethod SetCommunityMethod `mapstructure:"set-community-method" json:"set-community-method,omitempty"`
|
|
// original -> bgp-pol:options
|
|
//bgp-pol:options's original type is bgp-set-community-option-type
|
|
Options string `mapstructure:"options" json:"options,omitempty"`
|
|
}
|
|
|
|
func (lhs *SetCommunity) Equal(rhs *SetCommunity) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.SetCommunityMethod.Equal(&(rhs.SetCommunityMethod)) {
|
|
return false
|
|
}
|
|
if lhs.Options != rhs.Options {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:set-as-path-prepend
|
|
type SetAsPathPrepend struct {
|
|
// original -> bgp-pol:repeat-n
|
|
RepeatN uint8 `mapstructure:"repeat-n" json:"repeat-n,omitempty"`
|
|
// original -> gobgp:as
|
|
//gobgp:as's original type is union
|
|
As string `mapstructure:"as" json:"as,omitempty"`
|
|
}
|
|
|
|
func (lhs *SetAsPathPrepend) Equal(rhs *SetAsPathPrepend) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.RepeatN != rhs.RepeatN {
|
|
return false
|
|
}
|
|
if lhs.As != rhs.As {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:bgp-actions
|
|
type BgpActions struct {
|
|
// original -> bgp-pol:set-as-path-prepend
|
|
SetAsPathPrepend SetAsPathPrepend `mapstructure:"set-as-path-prepend" json:"set-as-path-prepend,omitempty"`
|
|
// original -> bgp-pol:set-community
|
|
SetCommunity SetCommunity `mapstructure:"set-community" json:"set-community,omitempty"`
|
|
// original -> bgp-pol:set-ext-community
|
|
SetExtCommunity SetExtCommunity `mapstructure:"set-ext-community" json:"set-ext-community,omitempty"`
|
|
// original -> bgp-pol:set-route-origin
|
|
SetRouteOrigin BgpOriginAttrType `mapstructure:"set-route-origin" json:"set-route-origin,omitempty"`
|
|
// original -> bgp-pol:set-local-pref
|
|
SetLocalPref uint32 `mapstructure:"set-local-pref" json:"set-local-pref,omitempty"`
|
|
// original -> bgp-pol:set-next-hop
|
|
SetNextHop BgpNextHopType `mapstructure:"set-next-hop" json:"set-next-hop,omitempty"`
|
|
// original -> bgp-pol:set-med
|
|
SetMed BgpSetMedType `mapstructure:"set-med" json:"set-med,omitempty"`
|
|
// original -> gobgp:set-large-community
|
|
SetLargeCommunity SetLargeCommunity `mapstructure:"set-large-community" json:"set-large-community,omitempty"`
|
|
}
|
|
|
|
func (lhs *BgpActions) Equal(rhs *BgpActions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.SetAsPathPrepend.Equal(&(rhs.SetAsPathPrepend)) {
|
|
return false
|
|
}
|
|
if !lhs.SetCommunity.Equal(&(rhs.SetCommunity)) {
|
|
return false
|
|
}
|
|
if !lhs.SetExtCommunity.Equal(&(rhs.SetExtCommunity)) {
|
|
return false
|
|
}
|
|
if lhs.SetRouteOrigin != rhs.SetRouteOrigin {
|
|
return false
|
|
}
|
|
if lhs.SetLocalPref != rhs.SetLocalPref {
|
|
return false
|
|
}
|
|
if lhs.SetNextHop != rhs.SetNextHop {
|
|
return false
|
|
}
|
|
if lhs.SetMed != rhs.SetMed {
|
|
return false
|
|
}
|
|
if !lhs.SetLargeCommunity.Equal(&(rhs.SetLargeCommunity)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:igp-actions
|
|
type IgpActions struct {
|
|
// original -> rpol:set-tag
|
|
SetTag TagType `mapstructure:"set-tag" json:"set-tag,omitempty"`
|
|
}
|
|
|
|
func (lhs *IgpActions) Equal(rhs *IgpActions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.SetTag != rhs.SetTag {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:actions
|
|
type Actions struct {
|
|
// original -> rpol:route-disposition
|
|
RouteDisposition RouteDisposition `mapstructure:"route-disposition" json:"route-disposition,omitempty"`
|
|
// original -> rpol:igp-actions
|
|
IgpActions IgpActions `mapstructure:"igp-actions" json:"igp-actions,omitempty"`
|
|
// original -> bgp-pol:bgp-actions
|
|
BgpActions BgpActions `mapstructure:"bgp-actions" json:"bgp-actions,omitempty"`
|
|
}
|
|
|
|
func (lhs *Actions) Equal(rhs *Actions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.RouteDisposition != rhs.RouteDisposition {
|
|
return false
|
|
}
|
|
if !lhs.IgpActions.Equal(&(rhs.IgpActions)) {
|
|
return false
|
|
}
|
|
if !lhs.BgpActions.Equal(&(rhs.BgpActions)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:match-large-community-set
|
|
type MatchLargeCommunitySet struct {
|
|
// original -> gobgp:large-community-set
|
|
LargeCommunitySet string `mapstructure:"large-community-set" json:"large-community-set,omitempty"`
|
|
// original -> rpol:match-set-options
|
|
MatchSetOptions MatchSetOptionsType `mapstructure:"match-set-options" json:"match-set-options,omitempty"`
|
|
}
|
|
|
|
func (lhs *MatchLargeCommunitySet) Equal(rhs *MatchLargeCommunitySet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.LargeCommunitySet != rhs.LargeCommunitySet {
|
|
return false
|
|
}
|
|
if lhs.MatchSetOptions != rhs.MatchSetOptions {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:as-path-length
|
|
type AsPathLength struct {
|
|
// original -> ptypes:operator
|
|
Operator AttributeComparison `mapstructure:"operator" json:"operator,omitempty"`
|
|
// original -> ptypes:value
|
|
Value uint32 `mapstructure:"value" json:"value,omitempty"`
|
|
}
|
|
|
|
func (lhs *AsPathLength) Equal(rhs *AsPathLength) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Operator != rhs.Operator {
|
|
return false
|
|
}
|
|
if lhs.Value != rhs.Value {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:community-count
|
|
type CommunityCount struct {
|
|
// original -> ptypes:operator
|
|
Operator AttributeComparison `mapstructure:"operator" json:"operator,omitempty"`
|
|
// original -> ptypes:value
|
|
Value uint32 `mapstructure:"value" json:"value,omitempty"`
|
|
}
|
|
|
|
func (lhs *CommunityCount) Equal(rhs *CommunityCount) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Operator != rhs.Operator {
|
|
return false
|
|
}
|
|
if lhs.Value != rhs.Value {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:match-as-path-set
|
|
type MatchAsPathSet struct {
|
|
// original -> bgp-pol:as-path-set
|
|
AsPathSet string `mapstructure:"as-path-set" json:"as-path-set,omitempty"`
|
|
// original -> rpol:match-set-options
|
|
MatchSetOptions MatchSetOptionsType `mapstructure:"match-set-options" json:"match-set-options,omitempty"`
|
|
}
|
|
|
|
func (lhs *MatchAsPathSet) Equal(rhs *MatchAsPathSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.AsPathSet != rhs.AsPathSet {
|
|
return false
|
|
}
|
|
if lhs.MatchSetOptions != rhs.MatchSetOptions {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:match-ext-community-set
|
|
type MatchExtCommunitySet struct {
|
|
// original -> bgp-pol:ext-community-set
|
|
ExtCommunitySet string `mapstructure:"ext-community-set" json:"ext-community-set,omitempty"`
|
|
// original -> rpol:match-set-options
|
|
MatchSetOptions MatchSetOptionsType `mapstructure:"match-set-options" json:"match-set-options,omitempty"`
|
|
}
|
|
|
|
func (lhs *MatchExtCommunitySet) Equal(rhs *MatchExtCommunitySet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.ExtCommunitySet != rhs.ExtCommunitySet {
|
|
return false
|
|
}
|
|
if lhs.MatchSetOptions != rhs.MatchSetOptions {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:match-community-set
|
|
type MatchCommunitySet struct {
|
|
// original -> bgp-pol:community-set
|
|
CommunitySet string `mapstructure:"community-set" json:"community-set,omitempty"`
|
|
// original -> rpol:match-set-options
|
|
MatchSetOptions MatchSetOptionsType `mapstructure:"match-set-options" json:"match-set-options,omitempty"`
|
|
}
|
|
|
|
func (lhs *MatchCommunitySet) Equal(rhs *MatchCommunitySet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.CommunitySet != rhs.CommunitySet {
|
|
return false
|
|
}
|
|
if lhs.MatchSetOptions != rhs.MatchSetOptions {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:bgp-conditions
|
|
type BgpConditions struct {
|
|
// original -> bgp-pol:match-community-set
|
|
MatchCommunitySet MatchCommunitySet `mapstructure:"match-community-set" json:"match-community-set,omitempty"`
|
|
// original -> bgp-pol:match-ext-community-set
|
|
MatchExtCommunitySet MatchExtCommunitySet `mapstructure:"match-ext-community-set" json:"match-ext-community-set,omitempty"`
|
|
// original -> bgp-pol:match-as-path-set
|
|
MatchAsPathSet MatchAsPathSet `mapstructure:"match-as-path-set" json:"match-as-path-set,omitempty"`
|
|
// original -> bgp-pol:med-eq
|
|
MedEq uint32 `mapstructure:"med-eq" json:"med-eq,omitempty"`
|
|
// original -> bgp-pol:origin-eq
|
|
OriginEq BgpOriginAttrType `mapstructure:"origin-eq" json:"origin-eq,omitempty"`
|
|
// original -> bgp-pol:next-hop-in
|
|
// original type is list of inet:ip-address
|
|
NextHopInList []string `mapstructure:"next-hop-in-list" json:"next-hop-in-list,omitempty"`
|
|
// original -> bgp-pol:afi-safi-in
|
|
AfiSafiInList []AfiSafiType `mapstructure:"afi-safi-in-list" json:"afi-safi-in-list,omitempty"`
|
|
// original -> bgp-pol:local-pref-eq
|
|
LocalPrefEq uint32 `mapstructure:"local-pref-eq" json:"local-pref-eq,omitempty"`
|
|
// original -> bgp-pol:community-count
|
|
CommunityCount CommunityCount `mapstructure:"community-count" json:"community-count,omitempty"`
|
|
// original -> bgp-pol:as-path-length
|
|
AsPathLength AsPathLength `mapstructure:"as-path-length" json:"as-path-length,omitempty"`
|
|
// original -> bgp-pol:route-type
|
|
RouteType RouteType `mapstructure:"route-type" json:"route-type,omitempty"`
|
|
// original -> gobgp:rpki-validation-result
|
|
RpkiValidationResult RpkiValidationResultType `mapstructure:"rpki-validation-result" json:"rpki-validation-result,omitempty"`
|
|
// original -> gobgp:match-large-community-set
|
|
MatchLargeCommunitySet MatchLargeCommunitySet `mapstructure:"match-large-community-set" json:"match-large-community-set,omitempty"`
|
|
}
|
|
|
|
func (lhs *BgpConditions) Equal(rhs *BgpConditions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.MatchCommunitySet.Equal(&(rhs.MatchCommunitySet)) {
|
|
return false
|
|
}
|
|
if !lhs.MatchExtCommunitySet.Equal(&(rhs.MatchExtCommunitySet)) {
|
|
return false
|
|
}
|
|
if !lhs.MatchAsPathSet.Equal(&(rhs.MatchAsPathSet)) {
|
|
return false
|
|
}
|
|
if lhs.MedEq != rhs.MedEq {
|
|
return false
|
|
}
|
|
if lhs.OriginEq != rhs.OriginEq {
|
|
return false
|
|
}
|
|
if len(lhs.NextHopInList) != len(rhs.NextHopInList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.NextHopInList {
|
|
if l != rhs.NextHopInList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if len(lhs.AfiSafiInList) != len(rhs.AfiSafiInList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.AfiSafiInList {
|
|
if l != rhs.AfiSafiInList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
if lhs.LocalPrefEq != rhs.LocalPrefEq {
|
|
return false
|
|
}
|
|
if !lhs.CommunityCount.Equal(&(rhs.CommunityCount)) {
|
|
return false
|
|
}
|
|
if !lhs.AsPathLength.Equal(&(rhs.AsPathLength)) {
|
|
return false
|
|
}
|
|
if lhs.RouteType != rhs.RouteType {
|
|
return false
|
|
}
|
|
if lhs.RpkiValidationResult != rhs.RpkiValidationResult {
|
|
return false
|
|
}
|
|
if !lhs.MatchLargeCommunitySet.Equal(&(rhs.MatchLargeCommunitySet)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:igp-conditions
|
|
type IgpConditions struct {
|
|
}
|
|
|
|
func (lhs *IgpConditions) Equal(rhs *IgpConditions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:match-tag-set
|
|
type MatchTagSet struct {
|
|
// original -> rpol:tag-set
|
|
TagSet string `mapstructure:"tag-set" json:"tag-set,omitempty"`
|
|
// original -> rpol:match-set-options
|
|
MatchSetOptions MatchSetOptionsRestrictedType `mapstructure:"match-set-options" json:"match-set-options,omitempty"`
|
|
}
|
|
|
|
func (lhs *MatchTagSet) Equal(rhs *MatchTagSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.TagSet != rhs.TagSet {
|
|
return false
|
|
}
|
|
if lhs.MatchSetOptions != rhs.MatchSetOptions {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:match-neighbor-set
|
|
type MatchNeighborSet struct {
|
|
// original -> rpol:neighbor-set
|
|
NeighborSet string `mapstructure:"neighbor-set" json:"neighbor-set,omitempty"`
|
|
// original -> rpol:match-set-options
|
|
MatchSetOptions MatchSetOptionsRestrictedType `mapstructure:"match-set-options" json:"match-set-options,omitempty"`
|
|
}
|
|
|
|
func (lhs *MatchNeighborSet) Equal(rhs *MatchNeighborSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.NeighborSet != rhs.NeighborSet {
|
|
return false
|
|
}
|
|
if lhs.MatchSetOptions != rhs.MatchSetOptions {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:match-prefix-set
|
|
type MatchPrefixSet struct {
|
|
// original -> rpol:prefix-set
|
|
PrefixSet string `mapstructure:"prefix-set" json:"prefix-set,omitempty"`
|
|
// original -> rpol:match-set-options
|
|
MatchSetOptions MatchSetOptionsRestrictedType `mapstructure:"match-set-options" json:"match-set-options,omitempty"`
|
|
}
|
|
|
|
func (lhs *MatchPrefixSet) Equal(rhs *MatchPrefixSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.PrefixSet != rhs.PrefixSet {
|
|
return false
|
|
}
|
|
if lhs.MatchSetOptions != rhs.MatchSetOptions {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:conditions
|
|
type Conditions struct {
|
|
// original -> rpol:call-policy
|
|
CallPolicy string `mapstructure:"call-policy" json:"call-policy,omitempty"`
|
|
// original -> rpol:match-prefix-set
|
|
MatchPrefixSet MatchPrefixSet `mapstructure:"match-prefix-set" json:"match-prefix-set,omitempty"`
|
|
// original -> rpol:match-neighbor-set
|
|
MatchNeighborSet MatchNeighborSet `mapstructure:"match-neighbor-set" json:"match-neighbor-set,omitempty"`
|
|
// original -> rpol:match-tag-set
|
|
MatchTagSet MatchTagSet `mapstructure:"match-tag-set" json:"match-tag-set,omitempty"`
|
|
// original -> rpol:install-protocol-eq
|
|
InstallProtocolEq InstallProtocolType `mapstructure:"install-protocol-eq" json:"install-protocol-eq,omitempty"`
|
|
// original -> rpol:igp-conditions
|
|
IgpConditions IgpConditions `mapstructure:"igp-conditions" json:"igp-conditions,omitempty"`
|
|
// original -> bgp-pol:bgp-conditions
|
|
BgpConditions BgpConditions `mapstructure:"bgp-conditions" json:"bgp-conditions,omitempty"`
|
|
}
|
|
|
|
func (lhs *Conditions) Equal(rhs *Conditions) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.CallPolicy != rhs.CallPolicy {
|
|
return false
|
|
}
|
|
if !lhs.MatchPrefixSet.Equal(&(rhs.MatchPrefixSet)) {
|
|
return false
|
|
}
|
|
if !lhs.MatchNeighborSet.Equal(&(rhs.MatchNeighborSet)) {
|
|
return false
|
|
}
|
|
if !lhs.MatchTagSet.Equal(&(rhs.MatchTagSet)) {
|
|
return false
|
|
}
|
|
if lhs.InstallProtocolEq != rhs.InstallProtocolEq {
|
|
return false
|
|
}
|
|
if !lhs.IgpConditions.Equal(&(rhs.IgpConditions)) {
|
|
return false
|
|
}
|
|
if !lhs.BgpConditions.Equal(&(rhs.BgpConditions)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:statement
|
|
type Statement struct {
|
|
// original -> rpol:name
|
|
Name string `mapstructure:"name" json:"name,omitempty"`
|
|
// original -> rpol:conditions
|
|
Conditions Conditions `mapstructure:"conditions" json:"conditions,omitempty"`
|
|
// original -> rpol:actions
|
|
Actions Actions `mapstructure:"actions" json:"actions,omitempty"`
|
|
}
|
|
|
|
func (lhs *Statement) Equal(rhs *Statement) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Name != rhs.Name {
|
|
return false
|
|
}
|
|
if !lhs.Conditions.Equal(&(rhs.Conditions)) {
|
|
return false
|
|
}
|
|
if !lhs.Actions.Equal(&(rhs.Actions)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:policy-definition
|
|
type PolicyDefinition struct {
|
|
// original -> rpol:name
|
|
Name string `mapstructure:"name" json:"name,omitempty"`
|
|
// original -> rpol:statements
|
|
Statements []Statement `mapstructure:"statements" json:"statements,omitempty"`
|
|
}
|
|
|
|
func (lhs *PolicyDefinition) Equal(rhs *PolicyDefinition) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Name != rhs.Name {
|
|
return false
|
|
}
|
|
if len(lhs.Statements) != len(rhs.Statements) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*Statement)
|
|
for i, l := range lhs.Statements {
|
|
lmap[mapkey(i, string(l.Name))] = &lhs.Statements[i]
|
|
}
|
|
for i, r := range rhs.Statements {
|
|
if l, y := lmap[mapkey(i, string(r.Name))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container gobgp:large-community-set
|
|
type LargeCommunitySet struct {
|
|
// original -> gobgp:large-community-set-name
|
|
LargeCommunitySetName string `mapstructure:"large-community-set-name" json:"large-community-set-name,omitempty"`
|
|
// original -> gobgp:large-community
|
|
LargeCommunityList []string `mapstructure:"large-community-list" json:"large-community-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *LargeCommunitySet) Equal(rhs *LargeCommunitySet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.LargeCommunitySetName != rhs.LargeCommunitySetName {
|
|
return false
|
|
}
|
|
if len(lhs.LargeCommunityList) != len(rhs.LargeCommunityList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.LargeCommunityList {
|
|
if l != rhs.LargeCommunityList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:as-path-set
|
|
type AsPathSet struct {
|
|
// original -> bgp-pol:as-path-set-name
|
|
AsPathSetName string `mapstructure:"as-path-set-name" json:"as-path-set-name,omitempty"`
|
|
// original -> gobgp:as-path
|
|
AsPathList []string `mapstructure:"as-path-list" json:"as-path-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *AsPathSet) Equal(rhs *AsPathSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.AsPathSetName != rhs.AsPathSetName {
|
|
return false
|
|
}
|
|
if len(lhs.AsPathList) != len(rhs.AsPathList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.AsPathList {
|
|
if l != rhs.AsPathList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:ext-community-set
|
|
type ExtCommunitySet struct {
|
|
// original -> bgp-pol:ext-community-set-name
|
|
ExtCommunitySetName string `mapstructure:"ext-community-set-name" json:"ext-community-set-name,omitempty"`
|
|
// original -> gobgp:ext-community
|
|
ExtCommunityList []string `mapstructure:"ext-community-list" json:"ext-community-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *ExtCommunitySet) Equal(rhs *ExtCommunitySet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.ExtCommunitySetName != rhs.ExtCommunitySetName {
|
|
return false
|
|
}
|
|
if len(lhs.ExtCommunityList) != len(rhs.ExtCommunityList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.ExtCommunityList {
|
|
if l != rhs.ExtCommunityList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:community-set
|
|
type CommunitySet struct {
|
|
// original -> bgp-pol:community-set-name
|
|
CommunitySetName string `mapstructure:"community-set-name" json:"community-set-name,omitempty"`
|
|
// original -> gobgp:community
|
|
CommunityList []string `mapstructure:"community-list" json:"community-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *CommunitySet) Equal(rhs *CommunitySet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.CommunitySetName != rhs.CommunitySetName {
|
|
return false
|
|
}
|
|
if len(lhs.CommunityList) != len(rhs.CommunityList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.CommunityList {
|
|
if l != rhs.CommunityList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container bgp-pol:bgp-defined-sets
|
|
type BgpDefinedSets struct {
|
|
// original -> bgp-pol:community-sets
|
|
CommunitySets []CommunitySet `mapstructure:"community-sets" json:"community-sets,omitempty"`
|
|
// original -> bgp-pol:ext-community-sets
|
|
ExtCommunitySets []ExtCommunitySet `mapstructure:"ext-community-sets" json:"ext-community-sets,omitempty"`
|
|
// original -> bgp-pol:as-path-sets
|
|
AsPathSets []AsPathSet `mapstructure:"as-path-sets" json:"as-path-sets,omitempty"`
|
|
// original -> gobgp:large-community-sets
|
|
LargeCommunitySets []LargeCommunitySet `mapstructure:"large-community-sets" json:"large-community-sets,omitempty"`
|
|
}
|
|
|
|
func (lhs *BgpDefinedSets) Equal(rhs *BgpDefinedSets) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if len(lhs.CommunitySets) != len(rhs.CommunitySets) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*CommunitySet)
|
|
for i, l := range lhs.CommunitySets {
|
|
lmap[mapkey(i, string(l.CommunitySetName))] = &lhs.CommunitySets[i]
|
|
}
|
|
for i, r := range rhs.CommunitySets {
|
|
if l, y := lmap[mapkey(i, string(r.CommunitySetName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.ExtCommunitySets) != len(rhs.ExtCommunitySets) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*ExtCommunitySet)
|
|
for i, l := range lhs.ExtCommunitySets {
|
|
lmap[mapkey(i, string(l.ExtCommunitySetName))] = &lhs.ExtCommunitySets[i]
|
|
}
|
|
for i, r := range rhs.ExtCommunitySets {
|
|
if l, y := lmap[mapkey(i, string(r.ExtCommunitySetName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.AsPathSets) != len(rhs.AsPathSets) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*AsPathSet)
|
|
for i, l := range lhs.AsPathSets {
|
|
lmap[mapkey(i, string(l.AsPathSetName))] = &lhs.AsPathSets[i]
|
|
}
|
|
for i, r := range rhs.AsPathSets {
|
|
if l, y := lmap[mapkey(i, string(r.AsPathSetName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.LargeCommunitySets) != len(rhs.LargeCommunitySets) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*LargeCommunitySet)
|
|
for i, l := range lhs.LargeCommunitySets {
|
|
lmap[mapkey(i, string(l.LargeCommunitySetName))] = &lhs.LargeCommunitySets[i]
|
|
}
|
|
for i, r := range rhs.LargeCommunitySets {
|
|
if l, y := lmap[mapkey(i, string(r.LargeCommunitySetName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:tag
|
|
type Tag struct {
|
|
// original -> rpol:value
|
|
Value TagType `mapstructure:"value" json:"value,omitempty"`
|
|
}
|
|
|
|
func (lhs *Tag) Equal(rhs *Tag) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.Value != rhs.Value {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:tag-set
|
|
type TagSet struct {
|
|
// original -> rpol:tag-set-name
|
|
TagSetName string `mapstructure:"tag-set-name" json:"tag-set-name,omitempty"`
|
|
// original -> rpol:tag
|
|
TagList []Tag `mapstructure:"tag-list" json:"tag-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *TagSet) Equal(rhs *TagSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.TagSetName != rhs.TagSetName {
|
|
return false
|
|
}
|
|
if len(lhs.TagList) != len(rhs.TagList) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*Tag)
|
|
for i, l := range lhs.TagList {
|
|
lmap[mapkey(i, string(l.Value))] = &lhs.TagList[i]
|
|
}
|
|
for i, r := range rhs.TagList {
|
|
if l, y := lmap[mapkey(i, string(r.Value))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:neighbor-set
|
|
type NeighborSet struct {
|
|
// original -> rpol:neighbor-set-name
|
|
NeighborSetName string `mapstructure:"neighbor-set-name" json:"neighbor-set-name,omitempty"`
|
|
// original -> gobgp:neighbor-info
|
|
// original type is list of inet:ip-address
|
|
NeighborInfoList []string `mapstructure:"neighbor-info-list" json:"neighbor-info-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *NeighborSet) Equal(rhs *NeighborSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.NeighborSetName != rhs.NeighborSetName {
|
|
return false
|
|
}
|
|
if len(lhs.NeighborInfoList) != len(rhs.NeighborInfoList) {
|
|
return false
|
|
}
|
|
for idx, l := range lhs.NeighborInfoList {
|
|
if l != rhs.NeighborInfoList[idx] {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:prefix
|
|
type Prefix struct {
|
|
// original -> rpol:ip-prefix
|
|
//rpol:ip-prefix's original type is inet:ip-prefix
|
|
IpPrefix string `mapstructure:"ip-prefix" json:"ip-prefix,omitempty"`
|
|
// original -> rpol:masklength-range
|
|
MasklengthRange string `mapstructure:"masklength-range" json:"masklength-range,omitempty"`
|
|
}
|
|
|
|
func (lhs *Prefix) Equal(rhs *Prefix) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.IpPrefix != rhs.IpPrefix {
|
|
return false
|
|
}
|
|
if lhs.MasklengthRange != rhs.MasklengthRange {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:prefix-set
|
|
type PrefixSet struct {
|
|
// original -> rpol:prefix-set-name
|
|
PrefixSetName string `mapstructure:"prefix-set-name" json:"prefix-set-name,omitempty"`
|
|
// original -> rpol:prefix
|
|
PrefixList []Prefix `mapstructure:"prefix-list" json:"prefix-list,omitempty"`
|
|
}
|
|
|
|
func (lhs *PrefixSet) Equal(rhs *PrefixSet) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if lhs.PrefixSetName != rhs.PrefixSetName {
|
|
return false
|
|
}
|
|
if len(lhs.PrefixList) != len(rhs.PrefixList) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*Prefix)
|
|
for i, l := range lhs.PrefixList {
|
|
lmap[mapkey(i, string(l.IpPrefix+l.MasklengthRange))] = &lhs.PrefixList[i]
|
|
}
|
|
for i, r := range rhs.PrefixList {
|
|
if l, y := lmap[mapkey(i, string(r.IpPrefix+r.MasklengthRange))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:defined-sets
|
|
type DefinedSets struct {
|
|
// original -> rpol:prefix-sets
|
|
PrefixSets []PrefixSet `mapstructure:"prefix-sets" json:"prefix-sets,omitempty"`
|
|
// original -> rpol:neighbor-sets
|
|
NeighborSets []NeighborSet `mapstructure:"neighbor-sets" json:"neighbor-sets,omitempty"`
|
|
// original -> rpol:tag-sets
|
|
TagSets []TagSet `mapstructure:"tag-sets" json:"tag-sets,omitempty"`
|
|
// original -> bgp-pol:bgp-defined-sets
|
|
BgpDefinedSets BgpDefinedSets `mapstructure:"bgp-defined-sets" json:"bgp-defined-sets,omitempty"`
|
|
}
|
|
|
|
func (lhs *DefinedSets) Equal(rhs *DefinedSets) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if len(lhs.PrefixSets) != len(rhs.PrefixSets) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*PrefixSet)
|
|
for i, l := range lhs.PrefixSets {
|
|
lmap[mapkey(i, string(l.PrefixSetName))] = &lhs.PrefixSets[i]
|
|
}
|
|
for i, r := range rhs.PrefixSets {
|
|
if l, y := lmap[mapkey(i, string(r.PrefixSetName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.NeighborSets) != len(rhs.NeighborSets) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*NeighborSet)
|
|
for i, l := range lhs.NeighborSets {
|
|
lmap[mapkey(i, string(l.NeighborSetName))] = &lhs.NeighborSets[i]
|
|
}
|
|
for i, r := range rhs.NeighborSets {
|
|
if l, y := lmap[mapkey(i, string(r.NeighborSetName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if len(lhs.TagSets) != len(rhs.TagSets) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*TagSet)
|
|
for i, l := range lhs.TagSets {
|
|
lmap[mapkey(i, string(l.TagSetName))] = &lhs.TagSets[i]
|
|
}
|
|
for i, r := range rhs.TagSets {
|
|
if l, y := lmap[mapkey(i, string(r.TagSetName))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
if !lhs.BgpDefinedSets.Equal(&(rhs.BgpDefinedSets)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
//struct for container rpol:routing-policy
|
|
type RoutingPolicy struct {
|
|
// original -> rpol:defined-sets
|
|
DefinedSets DefinedSets `mapstructure:"defined-sets" json:"defined-sets,omitempty"`
|
|
// original -> rpol:policy-definitions
|
|
PolicyDefinitions []PolicyDefinition `mapstructure:"policy-definitions" json:"policy-definitions,omitempty"`
|
|
}
|
|
|
|
func (lhs *RoutingPolicy) Equal(rhs *RoutingPolicy) bool {
|
|
if lhs == nil || rhs == nil {
|
|
return false
|
|
}
|
|
if !lhs.DefinedSets.Equal(&(rhs.DefinedSets)) {
|
|
return false
|
|
}
|
|
if len(lhs.PolicyDefinitions) != len(rhs.PolicyDefinitions) {
|
|
return false
|
|
}
|
|
{
|
|
lmap := make(map[string]*PolicyDefinition)
|
|
for i, l := range lhs.PolicyDefinitions {
|
|
lmap[mapkey(i, string(l.Name))] = &lhs.PolicyDefinitions[i]
|
|
}
|
|
for i, r := range rhs.PolicyDefinitions {
|
|
if l, y := lmap[mapkey(i, string(r.Name))]; !y {
|
|
return false
|
|
} else if !r.Equal(l) {
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
return true
|
|
}
|