bgp

package
Version: v3.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2023 License: Apache-2.0 Imports: 14 Imported by: 7

Documentation

Index

Constants

View Source
const (
	AFI_IP     = 1
	AFI_IP6    = 2
	AFI_L2VPN  = 25
	AFI_LS     = 16388
	AFI_OPAQUE = 16397
)
View Source
const (
	SAFI_UNICAST                  = 1
	SAFI_MULTICAST                = 2
	SAFI_MPLS_LABEL               = 4
	SAFI_ENCAPSULATION            = 7
	SAFI_VPLS                     = 65
	SAFI_EVPN                     = 70
	SAFI_LS                       = 71
	SAFI_SRPOLICY                 = 73
	SAFI_MUP                      = 85
	SAFI_MPLS_VPN                 = 128
	SAFI_MPLS_VPN_MULTICAST       = 129
	SAFI_ROUTE_TARGET_CONSTRAINTS = 132
	SAFI_FLOW_SPEC_UNICAST        = 133
	SAFI_FLOW_SPEC_VPN            = 134
	SAFI_KEY_VALUE                = 241
)
View Source
const (
	BGP_ORIGIN_ATTR_TYPE_IGP        uint8 = 0
	BGP_ORIGIN_ATTR_TYPE_EGP        uint8 = 1
	BGP_ORIGIN_ATTR_TYPE_INCOMPLETE uint8 = 2
)
View Source
const (
	BGP_ASPATH_ATTR_TYPE_SET        = 1
	BGP_ASPATH_ATTR_TYPE_SEQ        = 2
	BGP_ASPATH_ATTR_TYPE_CONFED_SEQ = 3
	BGP_ASPATH_ATTR_TYPE_CONFED_SET = 4
)
View Source
const (
	BGP_ATTR_NHLEN_IPV6_GLOBAL        = 16
	BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL = 32
)
View Source
const (
	BGP_MSG_OPEN
	BGP_MSG_UPDATE
	BGP_MSG_NOTIFICATION
	BGP_MSG_KEEPALIVE
	BGP_MSG_ROUTE_REFRESH
)
View Source
const (
	BGP_RD_TWO_OCTET_AS = iota
	BGP_RD_IPV4_ADDRESS
	BGP_RD_FOUR_OCTET_AS
)
View Source
const (
	EVPN_ROUTE_TYPE_ETHERNET_AUTO_DISCOVERY = 1
	EVPN_ROUTE_TYPE_MAC_IP_ADVERTISEMENT    = 2
	EVPN_INCLUSIVE_MULTICAST_ETHERNET_TAG   = 3
	EVPN_ETHERNET_SEGMENT_ROUTE             = 4
	EVPN_IP_PREFIX                          = 5
	EVPN_I_PMSI                             = 9
)
View Source
const (
	LS_PROTOCOL_UNKNOWN = iota
	LS_PROTOCOL_ISIS_L1
	LS_PROTOCOL_ISIS_L2
	LS_PROTOCOL_OSPF_V2
	LS_PROTOCOL_DIRECT
	LS_PROTOCOL_STATIC
	LS_PROTOCOL_OSPF_V3
	LS_PROTOCOL_BGP
)
View Source
const (
	LS_TLV_UNKNOWN LsTLVType = iota

	LS_TLV_LOCAL_NODE_DESC     = 256
	LS_TLV_REMOTE_NODE_DESC    = 257
	LS_TLV_LINK_ID             = 258
	LS_TLV_IPV4_INTERFACE_ADDR = 259
	LS_TLV_IPV4_NEIGHBOR_ADDR  = 260
	LS_TLV_IPV6_INTERFACE_ADDR = 261
	LS_TLV_IPV6_NEIGHBOR_ADDR  = 262
	LS_TLV_MULTI_TOPO_ID       = 263
	LS_TLV_OSPF_ROUTE_TYPE     = 264
	LS_TLV_IP_REACH_INFO       = 265

	LS_TLV_AS                       = 512
	LS_TLV_BGP_LS_ID                = 513
	LS_TLV_OSPF_AREA                = 514
	LS_TLV_IGP_ROUTER_ID            = 515
	LS_TLV_BGP_ROUTER_ID            = 516 // RFC9086
	LS_TLV_BGP_CONFEDERATION_MEMBER = 517 // RFC9086

	LS_TLV_NODE_FLAG_BITS        = 1024
	LS_TLV_OPAQUE_NODE_ATTR      = 1025
	LS_TLV_NODE_NAME             = 1026
	LS_TLV_ISIS_AREA             = 1027
	LS_TLV_IPV4_LOCAL_ROUTER_ID  = 1028
	LS_TLV_IPV6_LOCAL_ROUTER_ID  = 1029
	LS_TLV_IPV4_REMOTE_ROUTER_ID = 1030
	LS_TLV_IPV6_REMOTE_ROUTER_ID = 1031

	LS_TLV_SR_CAPABILITIES = 1034 // draft-ietf-idr-bgp-ls-segment-routing-ext
	LS_TLV_SR_ALGORITHM    = 1035 // draft-ietf-idr-bgp-ls-segment-routing-ext
	LS_TLV_SR_LOCAL_BLOCK  = 1036 // draft-ietf-idr-bgp-ls-segment-routing-ext
	LS_TLV_SRMS_PREFERENCE = 1037 // draft-ietf-idr-bgp-ls-segment-routing-ext, TODO

	LS_TLV_ADMIN_GROUP              = 1088
	LS_TLV_MAX_LINK_BANDWIDTH       = 1089
	LS_TLV_MAX_RESERVABLE_BANDWIDTH = 1090
	LS_TLV_UNRESERVED_BANDWIDTH     = 1091
	LS_TLV_TE_DEFAULT_METRIC        = 1092
	LS_TLV_LINK_PROTECTION_TYPE     = 1093 // TODO
	LS_TLV_MPLS_PROTOCOL_MASK       = 1094 // TODO
	LS_TLV_IGP_METRIC               = 1095
	LS_TLV_SRLG                     = 1096
	LS_TLV_OPAQUE_LINK_ATTR         = 1097
	LS_TLV_LINK_NAME                = 1098
	LS_TLV_ADJACENCY_SID            = 1099 // draft-ietf-idr-bgp-ls-segment-routing-ext
	LS_TLV_LAN_ADJACENCY_SID        = 1100 // draft-ietf-idr-bgp-ls-segment-routing-ext, TODO
	LS_TLV_PEER_NODE_SID            = 1101 // RFC9086
	LS_TLV_PEER_ADJACENCY_SID       = 1102 // RFC9086
	LS_TLV_PEER_SET_SID             = 1103 // RFC9086

	LS_TLV_RTM_CAPABILITY = 1105 // RFC8169, TODO

	LS_TLV_IGP_FLAGS              = 1152
	LS_TLV_IGP_ROUTE_TAG          = 1153 // TODO
	LS_TLV_EXTENDED_ROUTE_TAG     = 1154 // TODO
	LS_TLV_PREFIX_METRIC          = 1155 // TODO
	LS_TLV_OSPF_FORWARDING_ADDR   = 1156 // TODO
	LS_TLV_OPAQUE_PREFIX_ATTR     = 1157
	LS_TLV_PREFIX_SID             = 1158 // draft-ietf-idr-bgp-ls-segment-routing-ext
	LS_TLV_RANGE                  = 1159 // draft-ietf-idr-bgp-ls-segment-routing-ext, TODO
	LS_TLV_SID_LABEL_TLV          = 1161 // draft-ietf-idr-bgp-ls-segment-routing-ext
	LS_TLV_PREFIX_ATTRIBUTE_FLAGS = 1170 // draft-ietf-idr-bgp-ls-segment-routing-ext, TODO
	LS_TLV_SOURCE_ROUTER_ID       = 1171 // draft-ietf-idr-bgp-ls-segment-routing-ext, TODO
	LS_TLV_L2_BUNDLE_MEMBER_TLV   = 1172 // draft-ietf-idr-bgp-ls-segment-routing-ext, TODO
)

Based on https://www.iana.org/assignments/bgp-ls-parameters/bgp-ls-parameters.xhtml

View Source
const (
	LS_OSPF_ROUTE_TYPE_UNKNOWN = iota
	LS_OSPF_ROUTE_TYPE_INTRA_AREA
	LS_OSPF_ROUTE_TYPE_INTER_AREA
	LS_OSPF_ROUTE_TYPE_EXTERNAL1
	LS_OSPF_ROUTE_TYPE_EXTERNAL2
	LS_OSPF_ROUTE_TYPE_NSSA1
	LS_OSPF_ROUTE_TYPE_NSSA2
)
View Source
const (
	BGP_ERROR_MESSAGE_HEADER_ERROR
	BGP_ERROR_OPEN_MESSAGE_ERROR
	BGP_ERROR_UPDATE_MESSAGE_ERROR
	BGP_ERROR_HOLD_TIMER_EXPIRED
	BGP_ERROR_FSM_ERROR
	BGP_ERROR_CEASE
	BGP_ERROR_ROUTE_REFRESH_MESSAGE_ERROR
)

NOTIFICATION Error Code RFC 4271 4.5.

View Source
const (
	BGP_ERROR_SUB_CONNECTION_NOT_SYNCHRONIZED
	BGP_ERROR_SUB_BAD_MESSAGE_LENGTH
	BGP_ERROR_SUB_BAD_MESSAGE_TYPE
)

NOTIFICATION Error Subcode for BGP_ERROR_MESSAGE_HEADER_ERROR

View Source
const (
	BGP_ERROR_SUB_UNSUPPORTED_VERSION_NUMBER
	BGP_ERROR_SUB_BAD_PEER_AS
	BGP_ERROR_SUB_BAD_BGP_IDENTIFIER
	BGP_ERROR_SUB_UNSUPPORTED_OPTIONAL_PARAMETER
	BGP_ERROR_SUB_DEPRECATED_AUTHENTICATION_FAILURE
	BGP_ERROR_SUB_UNACCEPTABLE_HOLD_TIME
	BGP_ERROR_SUB_UNSUPPORTED_CAPABILITY
)

NOTIFICATION Error Subcode for BGP_ERROR_OPEN_MESSAGE_ERROR

View Source
const (
	BGP_ERROR_SUB_MALFORMED_ATTRIBUTE_LIST
	BGP_ERROR_SUB_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE
	BGP_ERROR_SUB_MISSING_WELL_KNOWN_ATTRIBUTE
	BGP_ERROR_SUB_ATTRIBUTE_FLAGS_ERROR
	BGP_ERROR_SUB_ATTRIBUTE_LENGTH_ERROR
	BGP_ERROR_SUB_INVALID_ORIGIN_ATTRIBUTE
	BGP_ERROR_SUB_DEPRECATED_ROUTING_LOOP
	BGP_ERROR_SUB_INVALID_NEXT_HOP_ATTRIBUTE
	BGP_ERROR_SUB_OPTIONAL_ATTRIBUTE_ERROR
	BGP_ERROR_SUB_INVALID_NETWORK_FIELD
	BGP_ERROR_SUB_MALFORMED_AS_PATH
)

NOTIFICATION Error Subcode for BGP_ERROR_UPDATE_MESSAGE_ERROR

View Source
const (
	BGP_ERROR_SUB_RECEIVE_UNEXPECTED_MESSAGE_IN_OPENSENT_STATE
	BGP_ERROR_SUB_RECEIVE_UNEXPECTED_MESSAGE_IN_OPENCONFIRM_STATE
	BGP_ERROR_SUB_RECEIVE_UNEXPECTED_MESSAGE_IN_ESTABLISHED_STATE
)

NOTIFICATION Error Subcode for BGP_ERROR_FSM_ERROR

View Source
const (
	BGP_ERROR_SUB_MAXIMUM_NUMBER_OF_PREFIXES_REACHED
	BGP_ERROR_SUB_ADMINISTRATIVE_SHUTDOWN
	BGP_ERROR_SUB_PEER_DECONFIGURED
	BGP_ERROR_SUB_ADMINISTRATIVE_RESET
	BGP_ERROR_SUB_CONNECTION_REJECTED
	BGP_ERROR_SUB_OTHER_CONFIGURATION_CHANGE
	BGP_ERROR_SUB_CONNECTION_COLLISION_RESOLUTION
	BGP_ERROR_SUB_OUT_OF_RESOURCES
	BGP_ERROR_SUB_HARD_RESET //draft-ietf-idr-bgp-gr-notification-07
)

NOTIFICATION Error Subcode for BGP_ERROR_CEASE (RFC 4486)

View Source
const (
	EGRESS_ENDPOINT_RESERVED_POS = 0
	EGRESS_ENDPOINT_FAMILY_POS   = 4
	EGRESS_ENDPOINT_ADDRESS_POS  = 6
)

Tunnel Egress Endpoint Sub-TLV subfield positions

View Source
const (
	BGP_HEADER_LENGTH      = 19
	BGP_MAX_MESSAGE_LENGTH = 4096
)
View Source
const (
	Unknown Protocol = iota
	ICMP             = 0x01
	IGMP             = 0x02
	TCP              = 0x06
	EGP              = 0x08
	IGP              = 0x09
	UDP              = 0x11
	RSVP             = 0x2e
	GRE              = 0x2f
	OSPF             = 0x59
	IPIP             = 0x5e
	PIM              = 0x67
	SCTP             = 0x84
)
View Source
const (
	TCP_FLAG_FIN    = 0x01
	TCP_FLAG_SYN    = 0x02
	TCP_FLAG_RST    = 0x04
	TCP_FLAG_PUSH   = 0x08
	TCP_FLAG_ACK    = 0x10
	TCP_FLAG_URGENT = 0x20
	TCP_FLAG_ECE    = 0x40
	TCP_FLAG_CWR    = 0x80
)
View Source
const (
	BITMASK_FLAG_OP_OR        BitmaskFlagOp = iota
	BITMASK_FLAG_OP_MATCH                   = 0x01
	BITMASK_FLAG_OP_NOT                     = 0x02
	BITMASK_FLAG_OP_NOT_MATCH               = 0x03
	BITMASK_FLAG_OP_AND                     = 0x40
	BITMASK_FLAG_OP_END                     = 0x80
)
View Source
const (
	FRAG_FLAG_NOT   FragmentFlag = iota
	FRAG_FLAG_DONT               = 0x01
	FRAG_FLAG_IS                 = 0x02
	FRAG_FLAG_FIRST              = 0x04
	FRAG_FLAG_LAST               = 0x08
)
View Source
const (
	DEC_NUM_OP_TRUE   DECNumOp = iota // true always with END bit set
	DEC_NUM_OP_EQ              = 0x01
	DEC_NUM_OP_GT              = 0x02
	DEC_NUM_OP_GT_EQ           = 0x03
	DEC_NUM_OP_LT              = 0x04
	DEC_NUM_OP_LT_EQ           = 0x05
	DEC_NUM_OP_NOT_EQ          = 0x06
	DEC_NUM_OP_FALSE           = 0x07 // false always with END bit set
	DEC_NUM_OP_OR              = 0x00
	DEC_NUM_OP_AND             = 0x40
	DEC_NUM_OP_END             = 0x80
)
View Source
const (
	MUP_ARCH_TYPE_UNDEFINED = iota
	MUP_ARCH_TYPE_3GPP_5G
)

BGP MUP SAFI Architecture Type as described in https://datatracker.ietf.org/doc/html/draft-mpmz-bess-mup-safi-00#section-3.1

View Source
const (
	MUP_ROUTE_TYPE_INTERWORK_SEGMENT_DISCOVERY
	MUP_ROUTE_TYPE_DIRECT_SEGMENT_DISCOVERY
	MUP_ROUTE_TYPE_TYPE_1_SESSION_TRANSFORMED
	MUP_ROUTE_TYPE_TYPE_2_SESSION_TRANSFORMED
)

BGP MUP SAFI Route Type as described in https://datatracker.ietf.org/doc/html/draft-mpmz-bess-mup-safi-00#section-3.1

View Source
const (
	// SRPolicyIPv4NLRILen defines IPv4 SR Policy NLRI portion length in bits
	SRPolicyIPv4NLRILen = 96
	// SRPolicyIPv6NLRILen defines IPv6 SR Policy NLRI portion length in bits
	SRPolicyIPv6NLRILen = 192
)
View Source
const AS_TRANS = 23456
View Source
const (
	BGP_ERROR_ADMINISTRATIVE_COMMUNICATION_MAX = 128
)

Constants for BGP_ERROR_SUB_ADMINISTRATIVE_SHUTDOWN and BGP_ERROR_SUB_ADMINISTRATIVE_RESET

View Source
const (
	BGP_ERROR_SUB_HOLD_TIMER_EXPIRED
)

NOTIFICATION Error Subcode for BGP_ERROR_HOLD_TIMER_EXPIRED

View Source
const (
	BGP_ERROR_SUB_INVALID_MESSAGE_LENGTH
)

NOTIFICATION Error Subcode for BGP_ERROR_ROUTE_REFRESH

View Source
const (
	BGP_OPT_CAPABILITY = 2
)
View Source
const BGP_PORT = 179
View Source
const (
	// SegmentListSubTLVWeight defines code for Segment List's Weight sub-TLV
	SegmentListSubTLVWeight = 9
)
View Source
const WITHDRAW_LABEL = uint32(0x800000)

RFC3107 Carrying Label Information in BGP-4

3. Carrying Label Mapping Information

The label information carried (as part of NLRI) in the Withdrawn Routes field should be set to 0x800000.

View Source
const ZERO_LABEL = uint32(0) // some platform uses this as withdraw label

Variables

View Source
var AddressFamilyNameMap = map[RouteFamily]string{
	RF_IPv4_UC:        "ipv4-unicast",
	RF_IPv6_UC:        "ipv6-unicast",
	RF_IPv4_MC:        "ipv4-multicast",
	RF_IPv6_MC:        "ipv6-multicast",
	RF_IPv4_MPLS:      "ipv4-labelled-unicast",
	RF_IPv6_MPLS:      "ipv6-labelled-unicast",
	RF_IPv4_VPN:       "l3vpn-ipv4-unicast",
	RF_IPv6_VPN:       "l3vpn-ipv6-unicast",
	RF_IPv4_VPN_MC:    "l3vpn-ipv4-multicast",
	RF_IPv6_VPN_MC:    "l3vpn-ipv6-multicast",
	RF_VPLS:           "l2vpn-vpls",
	RF_EVPN:           "l2vpn-evpn",
	RF_RTC_UC:         "rtc",
	RF_IPv4_ENCAP:     "ipv4-encap",
	RF_IPv6_ENCAP:     "ipv6-encap",
	RF_FS_IPv4_UC:     "ipv4-flowspec",
	RF_FS_IPv4_VPN:    "l3vpn-ipv4-flowspec",
	RF_FS_IPv6_UC:     "ipv6-flowspec",
	RF_FS_IPv6_VPN:    "l3vpn-ipv6-flowspec",
	RF_FS_L2_VPN:      "l2vpn-flowspec",
	RF_OPAQUE:         "opaque",
	RF_LS:             "ls",
	RF_SR_POLICY_IPv4: "ipv4-srpolicy",
	RF_SR_POLICY_IPv6: "ipv6-srpolicy",
	RF_MUP_IPv4:       "ipv4-mup",
	RF_MUP_IPv6:       "ipv6-mup",
}

Note: Meaning of "" is different from that of the numeric operator because RFC5575 says if the Match bit in the bitmask operand is set, it should be "strictly" matching against the given value.

View Source
var CapNameMap = map[BGPCapabilityCode]string{
	BGP_CAP_MULTIPROTOCOL:               "multiprotocol",
	BGP_CAP_ROUTE_REFRESH:               "route-refresh",
	BGP_CAP_CARRYING_LABEL_INFO:         "carrying-label-info",
	BGP_CAP_GRACEFUL_RESTART:            "graceful-restart",
	BGP_CAP_EXTENDED_NEXTHOP:            "extended-nexthop",
	BGP_CAP_FOUR_OCTET_AS_NUMBER:        "4-octet-as",
	BGP_CAP_ADD_PATH:                    "add-path",
	BGP_CAP_ENHANCED_ROUTE_REFRESH:      "enhanced-route-refresh",
	BGP_CAP_ROUTE_REFRESH_CISCO:         "cisco-route-refresh",
	BGP_CAP_LONG_LIVED_GRACEFUL_RESTART: "long-lived-graceful-restart",
	BGP_CAP_FQDN:                        "fqdn",
	BGP_CAP_SOFT_VERSION:                "software-version",
}
View Source
var EthernetTypeNameMap = map[EthernetType]string{
	IPv4:            "ipv4",
	ARP:             "arp",
	RARP:            "rarp",
	VMTP:            "vmtp",
	APPLE_TALK:      "apple-talk",
	AARP:            "aarp",
	IPX:             "ipx",
	SNMP:            "snmp",
	NET_BIOS:        "net-bios",
	XTP:             "xtp",
	IPv6:            "ipv6",
	PPPoE_DISCOVERY: "pppoe-discovery",
	PPPoE_SESSION:   "pppoe-session",
	LOOPBACK:        "loopback",
}
View Source
var FlowSpecValueMap = map[string]BGPFlowSpecType{
	FlowSpecNameMap[FLOW_SPEC_TYPE_DST_PREFIX]:    FLOW_SPEC_TYPE_DST_PREFIX,
	FlowSpecNameMap[FLOW_SPEC_TYPE_SRC_PREFIX]:    FLOW_SPEC_TYPE_SRC_PREFIX,
	FlowSpecNameMap[FLOW_SPEC_TYPE_IP_PROTO]:      FLOW_SPEC_TYPE_IP_PROTO,
	FlowSpecNameMap[FLOW_SPEC_TYPE_PORT]:          FLOW_SPEC_TYPE_PORT,
	FlowSpecNameMap[FLOW_SPEC_TYPE_DST_PORT]:      FLOW_SPEC_TYPE_DST_PORT,
	FlowSpecNameMap[FLOW_SPEC_TYPE_SRC_PORT]:      FLOW_SPEC_TYPE_SRC_PORT,
	FlowSpecNameMap[FLOW_SPEC_TYPE_ICMP_TYPE]:     FLOW_SPEC_TYPE_ICMP_TYPE,
	FlowSpecNameMap[FLOW_SPEC_TYPE_ICMP_CODE]:     FLOW_SPEC_TYPE_ICMP_CODE,
	FlowSpecNameMap[FLOW_SPEC_TYPE_TCP_FLAG]:      FLOW_SPEC_TYPE_TCP_FLAG,
	FlowSpecNameMap[FLOW_SPEC_TYPE_PKT_LEN]:       FLOW_SPEC_TYPE_PKT_LEN,
	FlowSpecNameMap[FLOW_SPEC_TYPE_DSCP]:          FLOW_SPEC_TYPE_DSCP,
	FlowSpecNameMap[FLOW_SPEC_TYPE_FRAGMENT]:      FLOW_SPEC_TYPE_FRAGMENT,
	FlowSpecNameMap[FLOW_SPEC_TYPE_LABEL]:         FLOW_SPEC_TYPE_LABEL,
	FlowSpecNameMap[FLOW_SPEC_TYPE_ETHERNET_TYPE]: FLOW_SPEC_TYPE_ETHERNET_TYPE,
	FlowSpecNameMap[FLOW_SPEC_TYPE_SRC_MAC]:       FLOW_SPEC_TYPE_SRC_MAC,
	FlowSpecNameMap[FLOW_SPEC_TYPE_DST_MAC]:       FLOW_SPEC_TYPE_DST_MAC,
	FlowSpecNameMap[FLOW_SPEC_TYPE_LLC_DSAP]:      FLOW_SPEC_TYPE_LLC_DSAP,
	FlowSpecNameMap[FLOW_SPEC_TYPE_LLC_SSAP]:      FLOW_SPEC_TYPE_LLC_SSAP,
	FlowSpecNameMap[FLOW_SPEC_TYPE_LLC_CONTROL]:   FLOW_SPEC_TYPE_LLC_CONTROL,
	FlowSpecNameMap[FLOW_SPEC_TYPE_SNAP]:          FLOW_SPEC_TYPE_SNAP,
	FlowSpecNameMap[FLOW_SPEC_TYPE_VID]:           FLOW_SPEC_TYPE_VID,
	FlowSpecNameMap[FLOW_SPEC_TYPE_COS]:           FLOW_SPEC_TYPE_COS,
	FlowSpecNameMap[FLOW_SPEC_TYPE_INNER_VID]:     FLOW_SPEC_TYPE_INNER_VID,
	FlowSpecNameMap[FLOW_SPEC_TYPE_INNER_COS]:     FLOW_SPEC_TYPE_INNER_COS,
}
View Source
var FragmentFlagNameMap = map[FragmentFlag]string{
	FRAG_FLAG_NOT:   "not-a-fragment",
	FRAG_FLAG_DONT:  "dont-fragment",
	FRAG_FLAG_IS:    "is-fragment",
	FRAG_FLAG_FIRST: "first-fragment",
	FRAG_FLAG_LAST:  "last-fragment",
}

Prepares a sorted list of flags because map iterations does not happen in a consistent order in Golang.

View Source
var PathAttrFlags map[BGPAttrType]BGPAttrFlag = map[BGPAttrType]BGPAttrFlag{
	BGP_ATTR_TYPE_ORIGIN:                   BGP_ATTR_FLAG_TRANSITIVE,
	BGP_ATTR_TYPE_AS_PATH:                  BGP_ATTR_FLAG_TRANSITIVE,
	BGP_ATTR_TYPE_NEXT_HOP:                 BGP_ATTR_FLAG_TRANSITIVE,
	BGP_ATTR_TYPE_MULTI_EXIT_DISC:          BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_LOCAL_PREF:               BGP_ATTR_FLAG_TRANSITIVE,
	BGP_ATTR_TYPE_ATOMIC_AGGREGATE:         BGP_ATTR_FLAG_TRANSITIVE,
	BGP_ATTR_TYPE_AGGREGATOR:               BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_COMMUNITIES:              BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_ORIGINATOR_ID:            BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_CLUSTER_LIST:             BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_MP_REACH_NLRI:            BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_MP_UNREACH_NLRI:          BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_EXTENDED_COMMUNITIES:     BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_AS4_PATH:                 BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_AS4_AGGREGATOR:           BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_PMSI_TUNNEL:              BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_TUNNEL_ENCAP:             BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_IP6_EXTENDED_COMMUNITIES: BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_AIGP:                     BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_LARGE_COMMUNITY:          BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_LS:                       BGP_ATTR_FLAG_OPTIONAL,
	BGP_ATTR_TYPE_PREFIX_SID:               BGP_ATTR_FLAG_TRANSITIVE | BGP_ATTR_FLAG_OPTIONAL,
}
View Source
var ProtocolNameMap = map[Protocol]string{
	Unknown: "unknown",
	ICMP:    "icmp",
	IGMP:    "igmp",
	TCP:     "tcp",
	EGP:     "egp",
	IGP:     "igp",
	UDP:     "udp",
	RSVP:    "rsvp",
	GRE:     "gre",
	OSPF:    "ospf",
	IPIP:    "ipip",
	PIM:     "pim",
	SCTP:    "sctp",
}
View Source
var TCPFlagNameMap = map[TCPFlag]string{
	TCP_FLAG_FIN:    "F",
	TCP_FLAG_SYN:    "S",
	TCP_FLAG_RST:    "R",
	TCP_FLAG_PUSH:   "P",
	TCP_FLAG_ACK:    "A",
	TCP_FLAG_URGENT: "U",
	TCP_FLAG_CWR:    "C",
	TCP_FLAG_ECE:    "E",
}

Prepares a sorted list of flags because map iterations does not happen in a consistent order in Golang.

View Source
var WellKnownCommunityNameMap = map[WellKnownCommunity]string{
	COMMUNITY_INTERNET:                   "internet",
	COMMUNITY_PLANNED_SHUT:               "planned-shut",
	COMMUNITY_ACCEPT_OWN:                 "accept-own",
	COMMUNITY_ROUTE_FILTER_TRANSLATED_v4: "route-filter-translated-v4",
	COMMUNITY_ROUTE_FILTER_v4:            "route-filter-v4",
	COMMUNITY_ROUTE_FILTER_TRANSLATED_v6: "route-filter-translated-v6",
	COMMUNITY_ROUTE_FILTER_v6:            "route-filter-v6",
	COMMUNITY_LLGR_STALE:                 "llgr-stale",
	COMMUNITY_NO_LLGR:                    "no-llgr",
	COMMUNITY_BLACKHOLE:                  "blackhole",
	COMMUNITY_NO_EXPORT:                  "no-export",
	COMMUNITY_NO_ADVERTISE:               "no-advertise",
	COMMUNITY_NO_EXPORT_SUBCONFED:        "no-export-subconfed",
	COMMUNITY_NO_PEER:                    "no-peer",
}

Functions

func AsPathString

func AsPathString(aspath *PathAttributeAsPath) string

func CompareFlowSpecNLRI

func CompareFlowSpecNLRI(n, m *FlowSpecNLRI) (int, error)

CompareFlowSpecNLRI(n, m) returns -1 when m has precedence

0 when n and m have same precedence
1 when n has precedence

func EndpointString added in v3.9.0

func EndpointString(nlri AddrPrefixInterface) string

func FlatUpdate

func FlatUpdate(f1, f2 map[string]string) error

Update a Flat representation by adding elements of the second one. If two elements use same keys, values are separated with ';'. In this case, it returns an error but the update has been realized.

func GetBGPUpdateAttributes

func GetBGPUpdateAttributes(data []byte) map[BGPAttrType]bool

func GetBGPUpdateAttributesFromMsg

func GetBGPUpdateAttributesFromMsg(msg *BGPUpdate) map[BGPAttrType]bool

func IsAddPathEnabled

func IsAddPathEnabled(decode bool, f RouteFamily, options []*MarshallingOption) bool

func IsAttributePresent

func IsAttributePresent(attr BGPAttrType, options []*MarshallingOption) bool

func LabelString

func LabelString(nlri AddrPrefixInterface) string

func NewMessageError

func NewMessageError(typeCode, subTypeCode uint8, data []byte, msg string) error

func NewMessageErrorWithErrorHandling

func NewMessageErrorWithErrorHandling(typeCode, subTypeCode uint8, data []byte, errorHandling ErrorHandling, errorAttribute *PathAttributeInterface, msg string) error

func QFIString added in v3.9.0

func QFIString(nlri AddrPrefixInterface) string

func RouteFamilyToAfiSafi

func RouteFamilyToAfiSafi(rf RouteFamily) (uint16, uint8)

func SerializeExtendedCommunities

func SerializeExtendedCommunities(comms []ExtendedCommunityInterface) ([][]byte, error)

func TEIDString added in v3.9.0

func TEIDString(nlri AddrPrefixInterface) string

func ValidateAttribute

func ValidateAttribute(a PathAttributeInterface, rfs map[RouteFamily]BGPAddPathMode, isEBGP bool, isConfed bool) (bool, error)

func ValidateBGPMessage

func ValidateBGPMessage(m *BGPMessage) error

func ValidateOpenMsg

func ValidateOpenMsg(m *BGPOpen, expectedAS uint32, myAS uint32, myId net.IP) (uint32, error)

func ValidateUpdateMsg

func ValidateUpdateMsg(m *BGPUpdate, rfs map[RouteFamily]BGPAddPathMode, isEBGP bool, isConfed bool) (bool, error)

Validator for BGPUpdate

Types

type AddrPrefixInterface

type AddrPrefixInterface interface {
	DecodeFromBytes([]byte, ...*MarshallingOption) error
	Serialize(...*MarshallingOption) ([]byte, error)
	AFI() uint16
	SAFI() uint8
	Len(...*MarshallingOption) int
	String() string
	MarshalJSON() ([]byte, error)
	// Create a flat map to describe attributes and their
	// values. This can be used to create structured outputs.
	Flat() map[string]string
	PathIdentifier() uint32
	SetPathIdentifier(uint32)
	PathLocalIdentifier() uint32
	SetPathLocalIdentifier(uint32)
}

func NewPrefixFromRouteFamily

func NewPrefixFromRouteFamily(afi uint16, safi uint8, prefixStr ...string) (prefix AddrPrefixInterface, err error)

type AigpTLVDefault

type AigpTLVDefault struct {
	Value []byte
	// contains filtered or unexported fields
}

func NewAigpTLVDefault

func NewAigpTLVDefault(typ AigpTLVType, value []byte) *AigpTLVDefault

func (*AigpTLVDefault) Len

func (t *AigpTLVDefault) Len() int

func (*AigpTLVDefault) MarshalJSON

func (t *AigpTLVDefault) MarshalJSON() ([]byte, error)

func (*AigpTLVDefault) Serialize

func (t *AigpTLVDefault) Serialize() ([]byte, error)

func (*AigpTLVDefault) String

func (t *AigpTLVDefault) String() string

func (*AigpTLVDefault) Type

func (t *AigpTLVDefault) Type() AigpTLVType

type AigpTLVIgpMetric

type AigpTLVIgpMetric struct {
	Metric uint64
}

func NewAigpTLVIgpMetric

func NewAigpTLVIgpMetric(metric uint64) *AigpTLVIgpMetric

func (*AigpTLVIgpMetric) Len

func (t *AigpTLVIgpMetric) Len() int

func (*AigpTLVIgpMetric) MarshalJSON

func (t *AigpTLVIgpMetric) MarshalJSON() ([]byte, error)

func (*AigpTLVIgpMetric) Serialize

func (t *AigpTLVIgpMetric) Serialize() ([]byte, error)

func (*AigpTLVIgpMetric) String

func (t *AigpTLVIgpMetric) String() string

func (*AigpTLVIgpMetric) Type

func (t *AigpTLVIgpMetric) Type() AigpTLVType

type AigpTLVInterface

type AigpTLVInterface interface {
	Serialize() ([]byte, error)
	String() string
	MarshalJSON() ([]byte, error)
	Type() AigpTLVType
	Len() int
}

type AigpTLVType

type AigpTLVType uint8
const (
	AIGP_TLV_UNKNOWN AigpTLVType = iota
	AIGP_TLV_IGP_METRIC
)

type As4PathParam

type As4PathParam struct {
	Type uint8
	Num  uint8
	AS   []uint32
}

func NewAs4PathParam

func NewAs4PathParam(segType uint8, as []uint32) *As4PathParam

func (*As4PathParam) ASLen

func (a *As4PathParam) ASLen() int

func (*As4PathParam) DecodeFromBytes

func (a *As4PathParam) DecodeFromBytes(data []byte) error

func (*As4PathParam) GetAS

func (a *As4PathParam) GetAS() []uint32

func (*As4PathParam) GetType

func (a *As4PathParam) GetType() uint8

func (*As4PathParam) Len

func (a *As4PathParam) Len() int

func (*As4PathParam) MarshalJSON

func (a *As4PathParam) MarshalJSON() ([]byte, error)

func (*As4PathParam) Serialize

func (a *As4PathParam) Serialize() ([]byte, error)

func (*As4PathParam) String

func (a *As4PathParam) String() string

type AsPathParam

type AsPathParam struct {
	Type uint8
	Num  uint8
	AS   []uint16
}

func NewAsPathParam

func NewAsPathParam(segType uint8, as []uint16) *AsPathParam

func (*AsPathParam) ASLen

func (a *AsPathParam) ASLen() int

func (*AsPathParam) DecodeFromBytes

func (a *AsPathParam) DecodeFromBytes(data []byte) error

func (*AsPathParam) GetAS

func (a *AsPathParam) GetAS() []uint32

func (*AsPathParam) GetType

func (a *AsPathParam) GetType() uint8

func (*AsPathParam) Len

func (a *AsPathParam) Len() int

func (*AsPathParam) MarshalJSON

func (a *AsPathParam) MarshalJSON() ([]byte, error)

func (*AsPathParam) Serialize

func (a *AsPathParam) Serialize() ([]byte, error)

func (*AsPathParam) String

func (a *AsPathParam) String() string

type AsPathParamFormat

type AsPathParamFormat struct {
	// contains filtered or unexported fields
}

type AsPathParamInterface

type AsPathParamInterface interface {
	GetType() uint8
	GetAS() []uint32
	Serialize() ([]byte, error)
	DecodeFromBytes([]byte) error
	Len() int
	ASLen() int
	MarshalJSON() ([]byte, error)
	String() string
}

type BGPAddPathMode

type BGPAddPathMode uint8
const (
	BGP_ADD_PATH_NONE BGPAddPathMode = iota
	BGP_ADD_PATH_RECEIVE
	BGP_ADD_PATH_SEND
	BGP_ADD_PATH_BOTH
)

func (BGPAddPathMode) String

func (m BGPAddPathMode) String() string

type BGPAttrFlag

type BGPAttrFlag uint8
const (
	BGP_ATTR_FLAG_EXTENDED_LENGTH BGPAttrFlag = 1 << 4
	BGP_ATTR_FLAG_PARTIAL         BGPAttrFlag = 1 << 5
	BGP_ATTR_FLAG_TRANSITIVE      BGPAttrFlag = 1 << 6
	BGP_ATTR_FLAG_OPTIONAL        BGPAttrFlag = 1 << 7
)

func (BGPAttrFlag) String

func (f BGPAttrFlag) String() string

type BGPAttrType

type BGPAttrType uint8
const (
	BGP_ATTR_TYPE_ORIGIN BGPAttrType
	BGP_ATTR_TYPE_AS_PATH
	BGP_ATTR_TYPE_NEXT_HOP
	BGP_ATTR_TYPE_MULTI_EXIT_DISC
	BGP_ATTR_TYPE_LOCAL_PREF
	BGP_ATTR_TYPE_ATOMIC_AGGREGATE
	BGP_ATTR_TYPE_AGGREGATOR
	BGP_ATTR_TYPE_COMMUNITIES
	BGP_ATTR_TYPE_ORIGINATOR_ID
	BGP_ATTR_TYPE_CLUSTER_LIST

	BGP_ATTR_TYPE_MP_REACH_NLRI // = 14
	BGP_ATTR_TYPE_MP_UNREACH_NLRI
	BGP_ATTR_TYPE_EXTENDED_COMMUNITIES
	BGP_ATTR_TYPE_AS4_PATH
	BGP_ATTR_TYPE_AS4_AGGREGATOR

	BGP_ATTR_TYPE_PMSI_TUNNEL // = 22
	BGP_ATTR_TYPE_TUNNEL_ENCAP

	BGP_ATTR_TYPE_IP6_EXTENDED_COMMUNITIES // = 25
	BGP_ATTR_TYPE_AIGP                     // = 26

	BGP_ATTR_TYPE_LS                          // = 29
	BGP_ATTR_TYPE_LARGE_COMMUNITY BGPAttrType = 32
	BGP_ATTR_TYPE_PREFIX_SID      BGPAttrType = 40
)

func (BGPAttrType) String

func (i BGPAttrType) String() string

type BGPBody

type BGPBody interface {
	DecodeFromBytes([]byte, ...*MarshallingOption) error
	Serialize(...*MarshallingOption) ([]byte, error)
}

type BGPCapabilityCode

type BGPCapabilityCode uint8
const (
	BGP_CAP_MULTIPROTOCOL               BGPCapabilityCode = 1
	BGP_CAP_ROUTE_REFRESH               BGPCapabilityCode = 2
	BGP_CAP_CARRYING_LABEL_INFO         BGPCapabilityCode = 4
	BGP_CAP_EXTENDED_NEXTHOP            BGPCapabilityCode = 5
	BGP_CAP_GRACEFUL_RESTART            BGPCapabilityCode = 64
	BGP_CAP_FOUR_OCTET_AS_NUMBER        BGPCapabilityCode = 65
	BGP_CAP_ADD_PATH                    BGPCapabilityCode = 69
	BGP_CAP_ENHANCED_ROUTE_REFRESH      BGPCapabilityCode = 70
	BGP_CAP_LONG_LIVED_GRACEFUL_RESTART BGPCapabilityCode = 71
	BGP_CAP_FQDN                        BGPCapabilityCode = 73
	BGP_CAP_SOFT_VERSION                BGPCapabilityCode = 75
	BGP_CAP_ROUTE_REFRESH_CISCO         BGPCapabilityCode = 128
)

func (BGPCapabilityCode) String

func (c BGPCapabilityCode) String() string

type BGPFlowSpecType

type BGPFlowSpecType uint8
const (
	FLOW_SPEC_TYPE_UNKNOWN BGPFlowSpecType = iota
	FLOW_SPEC_TYPE_DST_PREFIX
	FLOW_SPEC_TYPE_SRC_PREFIX
	FLOW_SPEC_TYPE_IP_PROTO
	FLOW_SPEC_TYPE_PORT
	FLOW_SPEC_TYPE_DST_PORT
	FLOW_SPEC_TYPE_SRC_PORT
	FLOW_SPEC_TYPE_ICMP_TYPE
	FLOW_SPEC_TYPE_ICMP_CODE
	FLOW_SPEC_TYPE_TCP_FLAG
	FLOW_SPEC_TYPE_PKT_LEN
	FLOW_SPEC_TYPE_DSCP
	FLOW_SPEC_TYPE_FRAGMENT
	FLOW_SPEC_TYPE_LABEL
	FLOW_SPEC_TYPE_ETHERNET_TYPE // 14
	FLOW_SPEC_TYPE_SRC_MAC
	FLOW_SPEC_TYPE_DST_MAC
	FLOW_SPEC_TYPE_LLC_DSAP
	FLOW_SPEC_TYPE_LLC_SSAP
	FLOW_SPEC_TYPE_LLC_CONTROL
	FLOW_SPEC_TYPE_SNAP
	FLOW_SPEC_TYPE_VID
	FLOW_SPEC_TYPE_COS
	FLOW_SPEC_TYPE_INNER_VID
	FLOW_SPEC_TYPE_INNER_COS
)

func (BGPFlowSpecType) String

func (t BGPFlowSpecType) String() string

type BGPHeader

type BGPHeader struct {
	Marker []byte
	Len    uint16
	Type   uint8
}

func (*BGPHeader) DecodeFromBytes

func (msg *BGPHeader) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*BGPHeader) Serialize

func (msg *BGPHeader) Serialize(options ...*MarshallingOption) ([]byte, error)

type BGPKeepAlive

type BGPKeepAlive struct {
}

func (*BGPKeepAlive) DecodeFromBytes

func (msg *BGPKeepAlive) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*BGPKeepAlive) Serialize

func (msg *BGPKeepAlive) Serialize(options ...*MarshallingOption) ([]byte, error)

type BGPMessage

type BGPMessage struct {
	Header BGPHeader
	Body   BGPBody
}

func NewBGPKeepAliveMessage

func NewBGPKeepAliveMessage() *BGPMessage

func NewBGPNotificationMessage

func NewBGPNotificationMessage(errcode uint8, errsubcode uint8, data []byte) *BGPMessage

func NewBGPOpenMessage

func NewBGPOpenMessage(myas uint16, holdtime uint16, id string, optparams []OptionParameterInterface) *BGPMessage

func NewBGPRouteRefreshMessage

func NewBGPRouteRefreshMessage(afi uint16, demarcation uint8, safi uint8) *BGPMessage

func NewBGPUpdateMessage

func NewBGPUpdateMessage(withdrawnRoutes []*IPAddrPrefix, pathattrs []PathAttributeInterface, nlri []*IPAddrPrefix) *BGPMessage

func NewEndOfRib

func NewEndOfRib(family RouteFamily) *BGPMessage

func NewTestBGPOpenMessage

func NewTestBGPOpenMessage() *BGPMessage

func NewTestBGPUpdateMessage

func NewTestBGPUpdateMessage() *BGPMessage

func ParseBGPBody

func ParseBGPBody(h *BGPHeader, data []byte, options ...*MarshallingOption) (*BGPMessage, error)

func ParseBGPMessage

func ParseBGPMessage(data []byte, options ...*MarshallingOption) (*BGPMessage, error)

func (*BGPMessage) Serialize

func (msg *BGPMessage) Serialize(options ...*MarshallingOption) ([]byte, error)

type BGPNotification

type BGPNotification struct {
	ErrorCode    uint8
	ErrorSubcode uint8
	Data         []byte
}

func (*BGPNotification) DecodeFromBytes

func (msg *BGPNotification) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*BGPNotification) Serialize

func (msg *BGPNotification) Serialize(options ...*MarshallingOption) ([]byte, error)

type BGPOpen

type BGPOpen struct {
	Version     uint8
	MyAS        uint16
	HoldTime    uint16
	ID          net.IP
	OptParamLen uint8
	OptParams   []OptionParameterInterface
}

func (*BGPOpen) DecodeFromBytes

func (msg *BGPOpen) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*BGPOpen) Serialize

func (msg *BGPOpen) Serialize(options ...*MarshallingOption) ([]byte, error)

type BGPRouteRefresh

type BGPRouteRefresh struct {
	AFI         uint16
	Demarcation uint8
	SAFI        uint8
}

func (*BGPRouteRefresh) DecodeFromBytes

func (msg *BGPRouteRefresh) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*BGPRouteRefresh) Serialize

func (msg *BGPRouteRefresh) Serialize(options ...*MarshallingOption) ([]byte, error)

type BGPUpdate

type BGPUpdate struct {
	WithdrawnRoutesLen    uint16
	WithdrawnRoutes       []*IPAddrPrefix
	TotalPathAttributeLen uint16
	PathAttributes        []PathAttributeInterface
	NLRI                  []*IPAddrPrefix
}

func TreatAsWithdraw

func TreatAsWithdraw(msg *BGPUpdate) *BGPUpdate

func (*BGPUpdate) DecodeFromBytes

func (msg *BGPUpdate) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*BGPUpdate) IsEndOfRib

func (msg *BGPUpdate) IsEndOfRib() (bool, RouteFamily)

func (*BGPUpdate) Serialize

func (msg *BGPUpdate) Serialize(options ...*MarshallingOption) ([]byte, error)

type BGPUpdateAttributes

type BGPUpdateAttributes struct {
	Attribute map[BGPAttrType]bool
}

BGPUpdateAttributes defines a map with a key as bgp attribute type and value as bool. Value set to true indicates that the attribute specified by the key exists in the bgp update.

type BSID

type BSID struct {
	Value []byte
}

func NewBSID

func NewBSID(v []byte) (*BSID, error)

func (*BSID) Len

func (b *BSID) Len() int

func (*BSID) Serialize

func (b *BSID) Serialize() []byte

func (*BSID) String

func (b *BSID) String() string

type BitmaskFlagOp

type BitmaskFlagOp uint8

func (BitmaskFlagOp) String

func (f BitmaskFlagOp) String() string

type CapAddPath

type CapAddPath struct {
	DefaultParameterCapability
	Tuples []*CapAddPathTuple
}

func NewCapAddPath

func NewCapAddPath(tuples []*CapAddPathTuple) *CapAddPath

func (*CapAddPath) DecodeFromBytes

func (c *CapAddPath) DecodeFromBytes(data []byte) error

func (*CapAddPath) MarshalJSON

func (c *CapAddPath) MarshalJSON() ([]byte, error)

func (*CapAddPath) Serialize

func (c *CapAddPath) Serialize() ([]byte, error)

type CapAddPathTuple

type CapAddPathTuple struct {
	RouteFamily RouteFamily
	Mode        BGPAddPathMode
}

func NewCapAddPathTuple

func NewCapAddPathTuple(family RouteFamily, mode BGPAddPathMode) *CapAddPathTuple

func (*CapAddPathTuple) MarshalJSON

func (t *CapAddPathTuple) MarshalJSON() ([]byte, error)

type CapCarryingLabelInfo

type CapCarryingLabelInfo struct {
	DefaultParameterCapability
}

func NewCapCarryingLabelInfo

func NewCapCarryingLabelInfo() *CapCarryingLabelInfo

type CapEnhancedRouteRefresh

type CapEnhancedRouteRefresh struct {
	DefaultParameterCapability
}

func NewCapEnhancedRouteRefresh

func NewCapEnhancedRouteRefresh() *CapEnhancedRouteRefresh

type CapExtendedNexthop

type CapExtendedNexthop struct {
	DefaultParameterCapability
	Tuples []*CapExtendedNexthopTuple
}

func NewCapExtendedNexthop

func NewCapExtendedNexthop(tuples []*CapExtendedNexthopTuple) *CapExtendedNexthop

func (*CapExtendedNexthop) DecodeFromBytes

func (c *CapExtendedNexthop) DecodeFromBytes(data []byte) error

func (*CapExtendedNexthop) MarshalJSON

func (c *CapExtendedNexthop) MarshalJSON() ([]byte, error)

func (*CapExtendedNexthop) Serialize

func (c *CapExtendedNexthop) Serialize() ([]byte, error)

type CapExtendedNexthopTuple

type CapExtendedNexthopTuple struct {
	NLRIAFI    uint16
	NLRISAFI   uint16
	NexthopAFI uint16
}

func NewCapExtendedNexthopTuple

func NewCapExtendedNexthopTuple(af RouteFamily, nexthop uint16) *CapExtendedNexthopTuple

func (*CapExtendedNexthopTuple) MarshalJSON

func (c *CapExtendedNexthopTuple) MarshalJSON() ([]byte, error)

type CapFQDN

type CapFQDN struct {
	DefaultParameterCapability
	HostNameLen   uint8
	HostName      string
	DomainNameLen uint8
	DomainName    string
}

func NewCapFQDN

func NewCapFQDN(hostname string, domainname string) *CapFQDN

func (*CapFQDN) DecodeFromBytes

func (c *CapFQDN) DecodeFromBytes(data []byte) error

func (*CapFQDN) MarshalJSON

func (c *CapFQDN) MarshalJSON() ([]byte, error)

func (*CapFQDN) Serialize

func (c *CapFQDN) Serialize() ([]byte, error)

type CapFourOctetASNumber

type CapFourOctetASNumber struct {
	DefaultParameterCapability
	CapValue uint32
}

func NewCapFourOctetASNumber

func NewCapFourOctetASNumber(asnum uint32) *CapFourOctetASNumber

func (*CapFourOctetASNumber) DecodeFromBytes

func (c *CapFourOctetASNumber) DecodeFromBytes(data []byte) error

func (*CapFourOctetASNumber) MarshalJSON

func (c *CapFourOctetASNumber) MarshalJSON() ([]byte, error)

func (*CapFourOctetASNumber) Serialize

func (c *CapFourOctetASNumber) Serialize() ([]byte, error)

type CapGracefulRestart

type CapGracefulRestart struct {
	DefaultParameterCapability
	Flags  uint8
	Time   uint16
	Tuples []*CapGracefulRestartTuple
}

func NewCapGracefulRestart

func NewCapGracefulRestart(restarting, notification bool, time uint16, tuples []*CapGracefulRestartTuple) *CapGracefulRestart

func (*CapGracefulRestart) DecodeFromBytes

func (c *CapGracefulRestart) DecodeFromBytes(data []byte) error

func (*CapGracefulRestart) MarshalJSON

func (c *CapGracefulRestart) MarshalJSON() ([]byte, error)

func (*CapGracefulRestart) Serialize

func (c *CapGracefulRestart) Serialize() ([]byte, error)

type CapGracefulRestartTuple

type CapGracefulRestartTuple struct {
	AFI   uint16
	SAFI  uint8
	Flags uint8
}

func NewCapGracefulRestartTuple

func NewCapGracefulRestartTuple(rf RouteFamily, forward bool) *CapGracefulRestartTuple

func (*CapGracefulRestartTuple) MarshalJSON

func (c *CapGracefulRestartTuple) MarshalJSON() ([]byte, error)

type CapLongLivedGracefulRestart

type CapLongLivedGracefulRestart struct {
	DefaultParameterCapability
	Tuples []*CapLongLivedGracefulRestartTuple
}

func (*CapLongLivedGracefulRestart) DecodeFromBytes

func (c *CapLongLivedGracefulRestart) DecodeFromBytes(data []byte) error

func (*CapLongLivedGracefulRestart) MarshalJSON

func (c *CapLongLivedGracefulRestart) MarshalJSON() ([]byte, error)

func (*CapLongLivedGracefulRestart) Serialize

func (c *CapLongLivedGracefulRestart) Serialize() ([]byte, error)

type CapLongLivedGracefulRestartTuple

type CapLongLivedGracefulRestartTuple struct {
	AFI         uint16
	SAFI        uint8
	Flags       uint8
	RestartTime uint32
}

func NewCapLongLivedGracefulRestartTuple

func NewCapLongLivedGracefulRestartTuple(rf RouteFamily, forward bool, restartTime uint32) *CapLongLivedGracefulRestartTuple

func (*CapLongLivedGracefulRestartTuple) MarshalJSON

func (c *CapLongLivedGracefulRestartTuple) MarshalJSON() ([]byte, error)

type CapMultiProtocol

type CapMultiProtocol struct {
	DefaultParameterCapability
	CapValue RouteFamily
}

func NewCapMultiProtocol

func NewCapMultiProtocol(rf RouteFamily) *CapMultiProtocol

func (*CapMultiProtocol) DecodeFromBytes

func (c *CapMultiProtocol) DecodeFromBytes(data []byte) error

func (*CapMultiProtocol) MarshalJSON

func (c *CapMultiProtocol) MarshalJSON() ([]byte, error)

func (*CapMultiProtocol) Serialize

func (c *CapMultiProtocol) Serialize() ([]byte, error)

type CapRouteRefresh

type CapRouteRefresh struct {
	DefaultParameterCapability
}

func NewCapRouteRefresh

func NewCapRouteRefresh() *CapRouteRefresh

type CapRouteRefreshCisco

type CapRouteRefreshCisco struct {
	DefaultParameterCapability
}

func NewCapRouteRefreshCisco

func NewCapRouteRefreshCisco() *CapRouteRefreshCisco

type CapSoftwareVersion added in v3.11.0

type CapSoftwareVersion struct {
	DefaultParameterCapability
	SoftwareVersionLen uint8
	SoftwareVersion    string
}

func NewCapSoftwareVersion added in v3.11.0

func NewCapSoftwareVersion(version string) *CapSoftwareVersion

func (*CapSoftwareVersion) DecodeFromBytes added in v3.11.0

func (c *CapSoftwareVersion) DecodeFromBytes(data []byte) error

func (*CapSoftwareVersion) MarshalJSON added in v3.11.0

func (c *CapSoftwareVersion) MarshalJSON() ([]byte, error)

func (*CapSoftwareVersion) Serialize added in v3.11.0

func (c *CapSoftwareVersion) Serialize() ([]byte, error)

type CapUnknown

type CapUnknown struct {
	DefaultParameterCapability
}

func NewCapUnknown

func NewCapUnknown(code BGPCapabilityCode, value []byte) *CapUnknown

type ColorExtended

type ColorExtended struct {
	Color uint32
}

func NewColorExtended

func NewColorExtended(color uint32) *ColorExtended

func (*ColorExtended) Flat

func (e *ColorExtended) Flat() map[string]string

func (*ColorExtended) GetTypes

func (*ColorExtended) MarshalJSON

func (e *ColorExtended) MarshalJSON() ([]byte, error)

func (*ColorExtended) Serialize

func (e *ColorExtended) Serialize() ([]byte, error)

func (*ColorExtended) String

func (e *ColorExtended) String() string

type DECNumOp

type DECNumOp uint8

func (DECNumOp) String

func (f DECNumOp) String() string

type DefaultGatewayExtended

type DefaultGatewayExtended struct {
}

func NewDefaultGatewayExtended

func NewDefaultGatewayExtended() *DefaultGatewayExtended

func (*DefaultGatewayExtended) Flat

func (e *DefaultGatewayExtended) Flat() map[string]string

func (*DefaultGatewayExtended) GetTypes

func (*DefaultGatewayExtended) MarshalJSON

func (e *DefaultGatewayExtended) MarshalJSON() ([]byte, error)

func (*DefaultGatewayExtended) Serialize

func (e *DefaultGatewayExtended) Serialize() ([]byte, error)

func (*DefaultGatewayExtended) String

func (e *DefaultGatewayExtended) String() string

type DefaultParameterCapability

type DefaultParameterCapability struct {
	CapCode  BGPCapabilityCode `json:"code"`
	CapLen   uint8             `json:"-"`
	CapValue []byte            `json:"value,omitempty"`
}

func (*DefaultParameterCapability) Code

func (*DefaultParameterCapability) DecodeFromBytes

func (c *DefaultParameterCapability) DecodeFromBytes(data []byte) error

func (*DefaultParameterCapability) Len

func (*DefaultParameterCapability) Serialize

func (c *DefaultParameterCapability) Serialize() ([]byte, error)

type DefaultPmsiTunnelID

type DefaultPmsiTunnelID struct {
	Value []byte
}

func NewDefaultPmsiTunnelID

func NewDefaultPmsiTunnelID(value []byte) *DefaultPmsiTunnelID

func (*DefaultPmsiTunnelID) Len

func (i *DefaultPmsiTunnelID) Len() int

func (*DefaultPmsiTunnelID) Serialize

func (i *DefaultPmsiTunnelID) Serialize() ([]byte, error)

func (*DefaultPmsiTunnelID) String

func (i *DefaultPmsiTunnelID) String() string

type DefaultRouteDistinguisher

type DefaultRouteDistinguisher struct {
	Type uint16
}

func (*DefaultRouteDistinguisher) Len

func (rd *DefaultRouteDistinguisher) Len() int

type ESILabelExtended

type ESILabelExtended struct {
	Label          uint32
	IsSingleActive bool
}

func NewESILabelExtended

func NewESILabelExtended(label uint32, isSingleActive bool) *ESILabelExtended

func (*ESILabelExtended) Flat

func (e *ESILabelExtended) Flat() map[string]string

func (*ESILabelExtended) GetTypes

func (*ESILabelExtended) MarshalJSON

func (e *ESILabelExtended) MarshalJSON() ([]byte, error)

func (*ESILabelExtended) Serialize

func (e *ESILabelExtended) Serialize() ([]byte, error)

func (*ESILabelExtended) String

func (e *ESILabelExtended) String() string

type ESIType

type ESIType uint8
const (
	ESI_ARBITRARY ESIType = iota
	ESI_LACP
	ESI_MSTP
	ESI_MAC
	ESI_ROUTERID
	ESI_AS
)

func (ESIType) String

func (i ESIType) String() string

type ESImportRouteTarget

type ESImportRouteTarget struct {
	ESImport net.HardwareAddr
}

func NewESImportRouteTarget

func NewESImportRouteTarget(mac string) *ESImportRouteTarget

func (*ESImportRouteTarget) Flat

func (e *ESImportRouteTarget) Flat() map[string]string

func (*ESImportRouteTarget) GetTypes

func (*ESImportRouteTarget) MarshalJSON

func (e *ESImportRouteTarget) MarshalJSON() ([]byte, error)

func (*ESImportRouteTarget) Serialize

func (e *ESImportRouteTarget) Serialize() ([]byte, error)

func (*ESImportRouteTarget) String

func (e *ESImportRouteTarget) String() string

type EVPNEthernetAutoDiscoveryRoute

type EVPNEthernetAutoDiscoveryRoute struct {
	RD    RouteDistinguisherInterface
	ESI   EthernetSegmentIdentifier
	ETag  uint32
	Label uint32
}

func (*EVPNEthernetAutoDiscoveryRoute) DecodeFromBytes

func (er *EVPNEthernetAutoDiscoveryRoute) DecodeFromBytes(data []byte) error

func (*EVPNEthernetAutoDiscoveryRoute) Len

func (*EVPNEthernetAutoDiscoveryRoute) MarshalJSON

func (er *EVPNEthernetAutoDiscoveryRoute) MarshalJSON() ([]byte, error)

func (*EVPNEthernetAutoDiscoveryRoute) Serialize

func (er *EVPNEthernetAutoDiscoveryRoute) Serialize() ([]byte, error)

func (*EVPNEthernetAutoDiscoveryRoute) String

type EVPNEthernetSegmentRoute

type EVPNEthernetSegmentRoute struct {
	RD              RouteDistinguisherInterface
	ESI             EthernetSegmentIdentifier
	IPAddressLength uint8
	IPAddress       net.IP
}

func (*EVPNEthernetSegmentRoute) DecodeFromBytes

func (er *EVPNEthernetSegmentRoute) DecodeFromBytes(data []byte) error

func (*EVPNEthernetSegmentRoute) Len

func (er *EVPNEthernetSegmentRoute) Len() int

func (*EVPNEthernetSegmentRoute) MarshalJSON

func (er *EVPNEthernetSegmentRoute) MarshalJSON() ([]byte, error)

func (*EVPNEthernetSegmentRoute) Serialize

func (er *EVPNEthernetSegmentRoute) Serialize() ([]byte, error)

func (*EVPNEthernetSegmentRoute) String

func (er *EVPNEthernetSegmentRoute) String() string

type EVPNIPMSIRoute

type EVPNIPMSIRoute struct {
	RD   RouteDistinguisherInterface
	ETag uint32
	EC   ExtendedCommunityInterface
}

func (*EVPNIPMSIRoute) DecodeFromBytes

func (er *EVPNIPMSIRoute) DecodeFromBytes(data []byte) error

func (*EVPNIPMSIRoute) Len

func (er *EVPNIPMSIRoute) Len() int

func (*EVPNIPMSIRoute) MarshalJSON

func (er *EVPNIPMSIRoute) MarshalJSON() ([]byte, error)

func (*EVPNIPMSIRoute) Serialize

func (er *EVPNIPMSIRoute) Serialize() ([]byte, error)

func (*EVPNIPMSIRoute) String

func (er *EVPNIPMSIRoute) String() string

type EVPNIPPrefixRoute

type EVPNIPPrefixRoute struct {
	RD             RouteDistinguisherInterface
	ESI            EthernetSegmentIdentifier
	ETag           uint32
	IPPrefixLength uint8
	IPPrefix       net.IP
	GWIPAddress    net.IP
	Label          uint32
}

func (*EVPNIPPrefixRoute) DecodeFromBytes

func (er *EVPNIPPrefixRoute) DecodeFromBytes(data []byte) error

func (*EVPNIPPrefixRoute) Len

func (er *EVPNIPPrefixRoute) Len() int

func (*EVPNIPPrefixRoute) MarshalJSON

func (er *EVPNIPPrefixRoute) MarshalJSON() ([]byte, error)

func (*EVPNIPPrefixRoute) Serialize

func (er *EVPNIPPrefixRoute) Serialize() ([]byte, error)

func (*EVPNIPPrefixRoute) String

func (er *EVPNIPPrefixRoute) String() string

type EVPNMacIPAdvertisementRoute

type EVPNMacIPAdvertisementRoute struct {
	RD               RouteDistinguisherInterface
	ESI              EthernetSegmentIdentifier
	ETag             uint32
	MacAddressLength uint8
	MacAddress       net.HardwareAddr
	IPAddressLength  uint8
	IPAddress        net.IP
	Labels           []uint32
}

func (*EVPNMacIPAdvertisementRoute) DecodeFromBytes

func (er *EVPNMacIPAdvertisementRoute) DecodeFromBytes(data []byte) error

func (*EVPNMacIPAdvertisementRoute) Len

func (er *EVPNMacIPAdvertisementRoute) Len() int

func (*EVPNMacIPAdvertisementRoute) MarshalJSON

func (er *EVPNMacIPAdvertisementRoute) MarshalJSON() ([]byte, error)

func (*EVPNMacIPAdvertisementRoute) Serialize

func (er *EVPNMacIPAdvertisementRoute) Serialize() ([]byte, error)

func (*EVPNMacIPAdvertisementRoute) String

func (er *EVPNMacIPAdvertisementRoute) String() string

type EVPNMulticastEthernetTagRoute

type EVPNMulticastEthernetTagRoute struct {
	RD              RouteDistinguisherInterface
	ETag            uint32
	IPAddressLength uint8
	IPAddress       net.IP
}

func (*EVPNMulticastEthernetTagRoute) DecodeFromBytes

func (er *EVPNMulticastEthernetTagRoute) DecodeFromBytes(data []byte) error

func (*EVPNMulticastEthernetTagRoute) Len

func (*EVPNMulticastEthernetTagRoute) MarshalJSON

func (er *EVPNMulticastEthernetTagRoute) MarshalJSON() ([]byte, error)

func (*EVPNMulticastEthernetTagRoute) Serialize

func (er *EVPNMulticastEthernetTagRoute) Serialize() ([]byte, error)

func (*EVPNMulticastEthernetTagRoute) String

type EVPNNLRI

type EVPNNLRI struct {
	PrefixDefault
	RouteType     uint8
	Length        uint8
	RouteTypeData EVPNRouteTypeInterface
}

func NewEVPNEthernetAutoDiscoveryRoute

func NewEVPNEthernetAutoDiscoveryRoute(rd RouteDistinguisherInterface, esi EthernetSegmentIdentifier, etag uint32, label uint32) *EVPNNLRI

func NewEVPNEthernetSegmentRoute

func NewEVPNEthernetSegmentRoute(rd RouteDistinguisherInterface, esi EthernetSegmentIdentifier, ipAddress string) *EVPNNLRI

func NewEVPNIPPrefixRoute

func NewEVPNIPPrefixRoute(rd RouteDistinguisherInterface, esi EthernetSegmentIdentifier, etag uint32, ipPrefixLength uint8, ipPrefix string, gateway string, label uint32) *EVPNNLRI

func NewEVPNMacIPAdvertisementRoute

func NewEVPNMacIPAdvertisementRoute(rd RouteDistinguisherInterface, esi EthernetSegmentIdentifier, etag uint32, macAddress string, ipAddress string, labels []uint32) *EVPNNLRI

func NewEVPNMulticastEthernetTagRoute

func NewEVPNMulticastEthernetTagRoute(rd RouteDistinguisherInterface, etag uint32, ipAddress string) *EVPNNLRI

func NewEVPNNLRI

func NewEVPNNLRI(routeType uint8, routeTypeData EVPNRouteTypeInterface) *EVPNNLRI

func (*EVPNNLRI) AFI

func (n *EVPNNLRI) AFI() uint16

func (*EVPNNLRI) DecodeFromBytes

func (n *EVPNNLRI) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*EVPNNLRI) Flat

func (l *EVPNNLRI) Flat() map[string]string

func (*EVPNNLRI) Len

func (n *EVPNNLRI) Len(options ...*MarshallingOption) int

func (*EVPNNLRI) MarshalJSON

func (n *EVPNNLRI) MarshalJSON() ([]byte, error)

func (*EVPNNLRI) RD

func (*EVPNNLRI) SAFI

func (n *EVPNNLRI) SAFI() uint8

func (*EVPNNLRI) Serialize

func (n *EVPNNLRI) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*EVPNNLRI) String

func (n *EVPNNLRI) String() string

type EVPNRouteTypeInterface

type EVPNRouteTypeInterface interface {
	Len() int
	DecodeFromBytes([]byte) error
	Serialize() ([]byte, error)
	String() string

	MarshalJSON() ([]byte, error)
	// contains filtered or unexported methods
}

type EncapExtended

type EncapExtended struct {
	TunnelType TunnelType
}

func NewEncapExtended

func NewEncapExtended(tunnelType TunnelType) *EncapExtended

func (*EncapExtended) Flat

func (e *EncapExtended) Flat() map[string]string

func (*EncapExtended) GetTypes

func (*EncapExtended) MarshalJSON

func (e *EncapExtended) MarshalJSON() ([]byte, error)

func (*EncapExtended) Serialize

func (e *EncapExtended) Serialize() ([]byte, error)

func (*EncapExtended) String

func (e *EncapExtended) String() string

type EncapNLRI

type EncapNLRI struct {
	IPAddrPrefixDefault
	// contains filtered or unexported fields
}

func NewEncapNLRI

func NewEncapNLRI(endpoint string) *EncapNLRI

func (*EncapNLRI) AFI

func (n *EncapNLRI) AFI() uint16

func (*EncapNLRI) DecodeFromBytes

func (n *EncapNLRI) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*EncapNLRI) Len

func (n *EncapNLRI) Len(options ...*MarshallingOption) int

func (*EncapNLRI) SAFI

func (n *EncapNLRI) SAFI() uint8

func (*EncapNLRI) Serialize

func (n *EncapNLRI) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*EncapNLRI) String

func (n *EncapNLRI) String() string

type EncapSubTLVType

type EncapSubTLVType uint8
const (
	ENCAP_SUBTLV_TYPE_ENCAPSULATION         EncapSubTLVType = 1
	ENCAP_SUBTLV_TYPE_PROTOCOL              EncapSubTLVType = 2
	ENCAP_SUBTLV_TYPE_COLOR                 EncapSubTLVType = 4
	ENCAP_SUBTLV_TYPE_EGRESS_ENDPOINT       EncapSubTLVType = 6
	ENCAP_SUBTLV_TYPE_UDP_DEST_PORT         EncapSubTLVType = 8
	ENCAP_SUBTLV_TYPE_SRPREFERENCE          EncapSubTLVType = 12
	ENCAP_SUBTLV_TYPE_SRBINDING_SID         EncapSubTLVType = 13
	ENCAP_SUBTLV_TYPE_SRENLP                EncapSubTLVType = 14
	ENCAP_SUBTLV_TYPE_SRPRIORITY            EncapSubTLVType = 15
	ENCAP_SUBTLV_TYPE_SRSEGMENT_LIST        EncapSubTLVType = 128
	ENCAP_SUBTLV_TYPE_SRCANDIDATE_PATH_NAME EncapSubTLVType = 129
)

type Encapv6NLRI

type Encapv6NLRI struct {
	EncapNLRI
}

func NewEncapv6NLRI

func NewEncapv6NLRI(endpoint string) *Encapv6NLRI

func (*Encapv6NLRI) AFI

func (n *Encapv6NLRI) AFI() uint16

type ErrorHandling

type ErrorHandling int
const (
	ERROR_HANDLING_NONE ErrorHandling = iota
	ERROR_HANDLING_ATTRIBUTE_DISCARD
	ERROR_HANDLING_TREAT_AS_WITHDRAW
	ERROR_HANDLING_AFISAFI_DISABLE
	ERROR_HANDLING_SESSION_RESET
)

type EthernetSegmentIdentifier

type EthernetSegmentIdentifier struct {
	Type  ESIType
	Value []byte
}

func ParseEthernetSegmentIdentifier

func ParseEthernetSegmentIdentifier(args []string) (EthernetSegmentIdentifier, error)

Decode Ethernet Segment Identifier (ESI) from string slice.

The first element of args should be the Type field (e.g., "ARBITRARY", "arbitrary", "ESI_ARBITRARY" or "esi_arbitrary") and "single-homed" is the special keyword for all zeroed ESI. For the "ARBITRARY" Value field (Type 0), it should be the colon separated hex values and the number of elements should be 9 at most.

e.g.) args := []string{"ARBITRARY", "11:22:33:44:55:66:77:88:99"}

For the other types, the Value field format is the similar to the string format of ESI.

e.g.) args := []string{"lacp", "aa:bb:cc:dd:ee:ff", "100"}

func (*EthernetSegmentIdentifier) DecodeFromBytes

func (esi *EthernetSegmentIdentifier) DecodeFromBytes(data []byte) error

func (*EthernetSegmentIdentifier) Serialize

func (esi *EthernetSegmentIdentifier) Serialize() ([]byte, error)

func (*EthernetSegmentIdentifier) String

func (esi *EthernetSegmentIdentifier) String() string

type EthernetType

type EthernetType int

Potentially taken from https://www.iana.org/assignments/ieee-802-numbers/ieee-802-numbers.xhtml

const (
	IPv4            EthernetType = 0x0800
	ARP             EthernetType = 0x0806
	RARP            EthernetType = 0x8035
	VMTP            EthernetType = 0x805B
	APPLE_TALK      EthernetType = 0x809B
	AARP            EthernetType = 0x80F3
	IPX             EthernetType = 0x8137
	SNMP            EthernetType = 0x814C
	NET_BIOS        EthernetType = 0x8191
	XTP             EthernetType = 0x817D
	IPv6            EthernetType = 0x86DD
	PPPoE_DISCOVERY EthernetType = 0x8863
	PPPoE_SESSION   EthernetType = 0x8864
	LOOPBACK        EthernetType = 0x9000
)

func (EthernetType) String

func (t EthernetType) String() string

type ExtendedCommunityAttrSubType

type ExtendedCommunityAttrSubType uint8

RFC7153 5.2. Registries for the "Sub-Type" Field RANGE REGISTRATION PROCEDURES 0x00-0xBF First Come First Served 0xC0-0xFF IETF Review

const (
	EC_SUBTYPE_ROUTE_TARGET            ExtendedCommunityAttrSubType = 0x02 // EC_TYPE: 0x00, 0x01, 0x02
	EC_SUBTYPE_ROUTE_ORIGIN            ExtendedCommunityAttrSubType = 0x03 // EC_TYPE: 0x00, 0x01, 0x02
	EC_SUBTYPE_LINK_BANDWIDTH          ExtendedCommunityAttrSubType = 0x04 // EC_TYPE: 0x40
	EC_SUBTYPE_GENERIC                 ExtendedCommunityAttrSubType = 0x04 // EC_TYPE: 0x02, 0x42
	EC_SUBTYPE_OSPF_DOMAIN_ID          ExtendedCommunityAttrSubType = 0x05 // EC_TYPE: 0x00, 0x01, 0x02
	EC_SUBTYPE_OSPF_ROUTE_ID           ExtendedCommunityAttrSubType = 0x07 // EC_TYPE: 0x01
	EC_SUBTYPE_BGP_DATA_COLLECTION     ExtendedCommunityAttrSubType = 0x08 // EC_TYPE: 0x00, 0x02
	EC_SUBTYPE_SOURCE_AS               ExtendedCommunityAttrSubType = 0x09 // EC_TYPE: 0x00, 0x02
	EC_SUBTYPE_L2VPN_ID                ExtendedCommunityAttrSubType = 0x0A // EC_TYPE: 0x00, 0x01
	EC_SUBTYPE_VRF_ROUTE_IMPORT        ExtendedCommunityAttrSubType = 0x0B // EC_TYPE: 0x01
	EC_SUBTYPE_CISCO_VPN_DISTINGUISHER ExtendedCommunityAttrSubType = 0x10 // EC_TYPE: 0x00, 0x01, 0x02

	EC_SUBTYPE_OSPF_ROUTE_TYPE ExtendedCommunityAttrSubType = 0x06 // EC_TYPE: 0x03
	EC_SUBTYPE_COLOR           ExtendedCommunityAttrSubType = 0x0B // EC_TYPE: 0x03
	EC_SUBTYPE_ENCAPSULATION   ExtendedCommunityAttrSubType = 0x0C // EC_TYPE: 0x03
	EC_SUBTYPE_DEFAULT_GATEWAY ExtendedCommunityAttrSubType = 0x0D // EC_TYPE: 0x03

	EC_SUBTYPE_ORIGIN_VALIDATION ExtendedCommunityAttrSubType = 0x00 // EC_TYPE: 0x43

	EC_SUBTYPE_MUP_DIRECT_SEG ExtendedCommunityAttrSubType = 0x00 // EC_TYPE: 0x0c

	EC_SUBTYPE_FLOWSPEC_TRAFFIC_RATE   ExtendedCommunityAttrSubType = 0x06 // EC_TYPE: 0x80
	EC_SUBTYPE_FLOWSPEC_TRAFFIC_ACTION ExtendedCommunityAttrSubType = 0x07 // EC_TYPE: 0x80
	EC_SUBTYPE_FLOWSPEC_REDIRECT       ExtendedCommunityAttrSubType = 0x08 // EC_TYPE: 0x80
	EC_SUBTYPE_FLOWSPEC_TRAFFIC_REMARK ExtendedCommunityAttrSubType = 0x09 // EC_TYPE: 0x80
	EC_SUBTYPE_L2_INFO                 ExtendedCommunityAttrSubType = 0x0A // EC_TYPE: 0x80
	EC_SUBTYPE_FLOWSPEC_REDIRECT_IP6   ExtendedCommunityAttrSubType = 0x0B // EC_TYPE: 0x80

	EC_SUBTYPE_MAC_MOBILITY ExtendedCommunityAttrSubType = 0x00 // EC_TYPE: 0x06
	EC_SUBTYPE_ESI_LABEL    ExtendedCommunityAttrSubType = 0x01 // EC_TYPE: 0x06
	EC_SUBTYPE_ES_IMPORT    ExtendedCommunityAttrSubType = 0x02 // EC_TYPE: 0x06
	EC_SUBTYPE_ROUTER_MAC   ExtendedCommunityAttrSubType = 0x03 // EC_TYPE: 0x06

	EC_SUBTYPE_UUID_BASED_RT ExtendedCommunityAttrSubType = 0x11
)

type ExtendedCommunityAttrType

type ExtendedCommunityAttrType uint8

RFC7153 5.1. Registries for the "Type" Field RANGE REGISTRATION PROCEDURES 0x00-0x3F Transitive First Come First Served 0x40-0x7F Non-Transitive First Come First Served 0x80-0x8F Transitive Experimental Use 0x90-0xBF Transitive Standards Action 0xC0-0xCF Non-Transitive Experimental Use 0xD0-0xFF Non-Transitive Standards Action

const (
	EC_TYPE_TRANSITIVE_TWO_OCTET_AS_SPECIFIC      ExtendedCommunityAttrType = 0x00
	EC_TYPE_TRANSITIVE_IP6_SPECIFIC               ExtendedCommunityAttrType = 0x00 // RFC5701
	EC_TYPE_TRANSITIVE_IP4_SPECIFIC               ExtendedCommunityAttrType = 0x01
	EC_TYPE_TRANSITIVE_FOUR_OCTET_AS_SPECIFIC     ExtendedCommunityAttrType = 0x02
	EC_TYPE_TRANSITIVE_OPAQUE                     ExtendedCommunityAttrType = 0x03
	EC_TYPE_TRANSITIVE_QOS_MARKING                ExtendedCommunityAttrType = 0x04
	EC_TYPE_COS_CAPABILITY                        ExtendedCommunityAttrType = 0x05
	EC_TYPE_EVPN                                  ExtendedCommunityAttrType = 0x06
	EC_TYPE_FLOWSPEC_REDIRECT_MIRROR              ExtendedCommunityAttrType = 0x08
	EC_TYPE_MUP                                   ExtendedCommunityAttrType = 0x0c
	EC_TYPE_NON_TRANSITIVE_TWO_OCTET_AS_SPECIFIC  ExtendedCommunityAttrType = 0x40
	EC_TYPE_NON_TRANSITIVE_LINK_BANDWIDTH         ExtendedCommunityAttrType = 0x40
	EC_TYPE_NON_TRANSITIVE_IP6_SPECIFIC           ExtendedCommunityAttrType = 0x40 // RFC5701
	EC_TYPE_NON_TRANSITIVE_IP4_SPECIFIC           ExtendedCommunityAttrType = 0x41
	EC_TYPE_NON_TRANSITIVE_FOUR_OCTET_AS_SPECIFIC ExtendedCommunityAttrType = 0x42
	EC_TYPE_NON_TRANSITIVE_OPAQUE                 ExtendedCommunityAttrType = 0x43
	EC_TYPE_NON_TRANSITIVE_QOS_MARKING            ExtendedCommunityAttrType = 0x44
	EC_TYPE_GENERIC_TRANSITIVE_EXPERIMENTAL       ExtendedCommunityAttrType = 0x80
	EC_TYPE_GENERIC_TRANSITIVE_EXPERIMENTAL2      ExtendedCommunityAttrType = 0x81 // RFC7674
	EC_TYPE_GENERIC_TRANSITIVE_EXPERIMENTAL3      ExtendedCommunityAttrType = 0x82 // RFC7674
)

type ExtendedCommunityInterface

type ExtendedCommunityInterface interface {
	Serialize() ([]byte, error)
	String() string
	GetTypes() (ExtendedCommunityAttrType, ExtendedCommunityAttrSubType)
	MarshalJSON() ([]byte, error)
	Flat() map[string]string
}

func ParseExtended

func ParseExtended(data []byte) (ExtendedCommunityInterface, error)

func ParseIP6Extended

func ParseIP6Extended(data []byte) (ExtendedCommunityInterface, error)

func ParseRouteTarget

func ParseRouteTarget(rt string) (ExtendedCommunityInterface, error)

type FSMState

type FSMState int
const (
	BGP_FSM_IDLE FSMState = iota
	BGP_FSM_CONNECT
	BGP_FSM_ACTIVE
	BGP_FSM_OPENSENT
	BGP_FSM_OPENCONFIRM
	BGP_FSM_ESTABLISHED
)

func (FSMState) String

func (i FSMState) String() string

type FlowSpecComponent

type FlowSpecComponent struct {
	Items []*FlowSpecComponentItem
	// contains filtered or unexported fields
}

func NewFlowSpecComponent

func NewFlowSpecComponent(typ BGPFlowSpecType, items []*FlowSpecComponentItem) *FlowSpecComponent

func (*FlowSpecComponent) DecodeFromBytes

func (p *FlowSpecComponent) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecComponent) Len

func (p *FlowSpecComponent) Len(options ...*MarshallingOption) int

func (*FlowSpecComponent) MarshalJSON

func (p *FlowSpecComponent) MarshalJSON() ([]byte, error)

func (*FlowSpecComponent) Serialize

func (p *FlowSpecComponent) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecComponent) String

func (p *FlowSpecComponent) String() string

func (*FlowSpecComponent) Type

type FlowSpecComponentInterface

type FlowSpecComponentInterface interface {
	DecodeFromBytes([]byte, ...*MarshallingOption) error
	Serialize(...*MarshallingOption) ([]byte, error)
	Len(...*MarshallingOption) int
	Type() BGPFlowSpecType
	String() string
}

func ParseFlowSpecComponents

func ParseFlowSpecComponents(rf RouteFamily, arg string) ([]FlowSpecComponentInterface, error)

type FlowSpecComponentItem

type FlowSpecComponentItem struct {
	Op    uint8  `json:"op"`
	Value uint64 `json:"value"`
}

func NewFlowSpecComponentItem

func NewFlowSpecComponentItem(op uint8, value uint64) *FlowSpecComponentItem

func (*FlowSpecComponentItem) Len

func (v *FlowSpecComponentItem) Len() int

func (*FlowSpecComponentItem) Serialize

func (v *FlowSpecComponentItem) Serialize() ([]byte, error)

type FlowSpecDestinationMac

type FlowSpecDestinationMac struct {
	// contains filtered or unexported fields
}

func NewFlowSpecDestinationMac

func NewFlowSpecDestinationMac(mac net.HardwareAddr) *FlowSpecDestinationMac

func (*FlowSpecDestinationMac) DecodeFromBytes

func (p *FlowSpecDestinationMac) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecDestinationMac) Len

func (p *FlowSpecDestinationMac) Len(options ...*MarshallingOption) int

func (*FlowSpecDestinationMac) MarshalJSON

func (p *FlowSpecDestinationMac) MarshalJSON() ([]byte, error)

func (*FlowSpecDestinationMac) Serialize

func (p *FlowSpecDestinationMac) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecDestinationMac) String

func (p *FlowSpecDestinationMac) String() string

func (*FlowSpecDestinationMac) Type

func (p *FlowSpecDestinationMac) Type() BGPFlowSpecType

type FlowSpecDestinationPrefix

type FlowSpecDestinationPrefix struct {
	// contains filtered or unexported fields
}

func NewFlowSpecDestinationPrefix

func NewFlowSpecDestinationPrefix(prefix AddrPrefixInterface) *FlowSpecDestinationPrefix

func (*FlowSpecDestinationPrefix) DecodeFromBytes

func (p *FlowSpecDestinationPrefix) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecDestinationPrefix) Len

func (p *FlowSpecDestinationPrefix) Len(options ...*MarshallingOption) int

func (*FlowSpecDestinationPrefix) MarshalJSON

func (p *FlowSpecDestinationPrefix) MarshalJSON() ([]byte, error)

func (*FlowSpecDestinationPrefix) Serialize

func (p *FlowSpecDestinationPrefix) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecDestinationPrefix) String

func (p *FlowSpecDestinationPrefix) String() string

func (*FlowSpecDestinationPrefix) Type

func (p *FlowSpecDestinationPrefix) Type() BGPFlowSpecType

type FlowSpecDestinationPrefix6

type FlowSpecDestinationPrefix6 struct {
	// contains filtered or unexported fields
}

func NewFlowSpecDestinationPrefix6

func NewFlowSpecDestinationPrefix6(prefix AddrPrefixInterface, offset uint8) *FlowSpecDestinationPrefix6

func (*FlowSpecDestinationPrefix6) DecodeFromBytes

func (p *FlowSpecDestinationPrefix6) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

draft-ietf-idr-flow-spec-v6-06 <type (1 octet), prefix length (1 octet), prefix offset(1 octet), prefix>

func (*FlowSpecDestinationPrefix6) Len

func (p *FlowSpecDestinationPrefix6) Len(options ...*MarshallingOption) int

func (*FlowSpecDestinationPrefix6) MarshalJSON

func (p *FlowSpecDestinationPrefix6) MarshalJSON() ([]byte, error)

func (*FlowSpecDestinationPrefix6) Serialize

func (p *FlowSpecDestinationPrefix6) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecDestinationPrefix6) String

func (p *FlowSpecDestinationPrefix6) String() string

func (*FlowSpecDestinationPrefix6) Type

func (p *FlowSpecDestinationPrefix6) Type() BGPFlowSpecType

type FlowSpecIPv4Unicast

type FlowSpecIPv4Unicast struct {
	FlowSpecNLRI
}

func NewFlowSpecIPv4Unicast

func NewFlowSpecIPv4Unicast(value []FlowSpecComponentInterface) *FlowSpecIPv4Unicast

func (*FlowSpecIPv4Unicast) DecodeFromBytes

func (n *FlowSpecIPv4Unicast) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecIPv4Unicast) Flat

func (l *FlowSpecIPv4Unicast) Flat() map[string]string

type FlowSpecIPv4VPN

type FlowSpecIPv4VPN struct {
	FlowSpecNLRI
}

func (*FlowSpecIPv4VPN) DecodeFromBytes

func (n *FlowSpecIPv4VPN) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecIPv4VPN) Flat

func (l *FlowSpecIPv4VPN) Flat() map[string]string

type FlowSpecIPv6Unicast

type FlowSpecIPv6Unicast struct {
	FlowSpecNLRI
}

func NewFlowSpecIPv6Unicast

func NewFlowSpecIPv6Unicast(value []FlowSpecComponentInterface) *FlowSpecIPv6Unicast

func (*FlowSpecIPv6Unicast) DecodeFromBytes

func (n *FlowSpecIPv6Unicast) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecIPv6Unicast) Flat

func (l *FlowSpecIPv6Unicast) Flat() map[string]string

type FlowSpecIPv6VPN

type FlowSpecIPv6VPN struct {
	FlowSpecNLRI
}

func (*FlowSpecIPv6VPN) DecodeFromBytes

func (n *FlowSpecIPv6VPN) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecIPv6VPN) Flat

func (l *FlowSpecIPv6VPN) Flat() map[string]string

type FlowSpecL2VPN

type FlowSpecL2VPN struct {
	FlowSpecNLRI
}

func (*FlowSpecL2VPN) DecodeFromBytes

func (n *FlowSpecL2VPN) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecL2VPN) Flat

func (l *FlowSpecL2VPN) Flat() map[string]string

type FlowSpecNLRI

type FlowSpecNLRI struct {
	PrefixDefault
	Value []FlowSpecComponentInterface
	// contains filtered or unexported fields
}

func (*FlowSpecNLRI) AFI

func (n *FlowSpecNLRI) AFI() uint16

func (*FlowSpecNLRI) Len

func (n *FlowSpecNLRI) Len(options ...*MarshallingOption) int

func (*FlowSpecNLRI) MarshalJSON

func (n *FlowSpecNLRI) MarshalJSON() ([]byte, error)

func (*FlowSpecNLRI) RD

func (*FlowSpecNLRI) SAFI

func (n *FlowSpecNLRI) SAFI() uint8

func (*FlowSpecNLRI) Serialize

func (n *FlowSpecNLRI) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecNLRI) String

func (n *FlowSpecNLRI) String() string

type FlowSpecSourceMac

type FlowSpecSourceMac struct {
	// contains filtered or unexported fields
}

func NewFlowSpecSourceMac

func NewFlowSpecSourceMac(mac net.HardwareAddr) *FlowSpecSourceMac

func (*FlowSpecSourceMac) DecodeFromBytes

func (p *FlowSpecSourceMac) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecSourceMac) Len

func (p *FlowSpecSourceMac) Len(options ...*MarshallingOption) int

func (*FlowSpecSourceMac) MarshalJSON

func (p *FlowSpecSourceMac) MarshalJSON() ([]byte, error)

func (*FlowSpecSourceMac) Serialize

func (p *FlowSpecSourceMac) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecSourceMac) String

func (p *FlowSpecSourceMac) String() string

func (*FlowSpecSourceMac) Type

func (p *FlowSpecSourceMac) Type() BGPFlowSpecType

type FlowSpecSourcePrefix

type FlowSpecSourcePrefix struct {
	// contains filtered or unexported fields
}

func NewFlowSpecSourcePrefix

func NewFlowSpecSourcePrefix(prefix AddrPrefixInterface) *FlowSpecSourcePrefix

func (*FlowSpecSourcePrefix) DecodeFromBytes

func (p *FlowSpecSourcePrefix) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecSourcePrefix) Len

func (p *FlowSpecSourcePrefix) Len(options ...*MarshallingOption) int

func (*FlowSpecSourcePrefix) MarshalJSON

func (p *FlowSpecSourcePrefix) MarshalJSON() ([]byte, error)

func (*FlowSpecSourcePrefix) Serialize

func (p *FlowSpecSourcePrefix) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecSourcePrefix) String

func (p *FlowSpecSourcePrefix) String() string

func (*FlowSpecSourcePrefix) Type

func (p *FlowSpecSourcePrefix) Type() BGPFlowSpecType

type FlowSpecSourcePrefix6

type FlowSpecSourcePrefix6 struct {
	// contains filtered or unexported fields
}

func NewFlowSpecSourcePrefix6

func NewFlowSpecSourcePrefix6(prefix AddrPrefixInterface, offset uint8) *FlowSpecSourcePrefix6

func (*FlowSpecSourcePrefix6) DecodeFromBytes

func (p *FlowSpecSourcePrefix6) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

draft-ietf-idr-flow-spec-v6-06 <type (1 octet), prefix length (1 octet), prefix offset(1 octet), prefix>

func (*FlowSpecSourcePrefix6) Len

func (p *FlowSpecSourcePrefix6) Len(options ...*MarshallingOption) int

func (*FlowSpecSourcePrefix6) MarshalJSON

func (p *FlowSpecSourcePrefix6) MarshalJSON() ([]byte, error)

func (*FlowSpecSourcePrefix6) Serialize

func (p *FlowSpecSourcePrefix6) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecSourcePrefix6) String

func (p *FlowSpecSourcePrefix6) String() string

func (*FlowSpecSourcePrefix6) Type

func (p *FlowSpecSourcePrefix6) Type() BGPFlowSpecType

type FlowSpecUnknown

type FlowSpecUnknown struct {
	Value []byte
}

func (*FlowSpecUnknown) DecodeFromBytes

func (p *FlowSpecUnknown) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*FlowSpecUnknown) Len

func (p *FlowSpecUnknown) Len(options ...*MarshallingOption) int

func (*FlowSpecUnknown) MarshalJSON

func (p *FlowSpecUnknown) MarshalJSON() ([]byte, error)

func (*FlowSpecUnknown) Serialize

func (p *FlowSpecUnknown) Serialize(options ...*MarshallingOption) ([]byte, error)

func (*FlowSpecUnknown) String

func (p *FlowSpecUnknown) String() string

func (*FlowSpecUnknown) Type

func (p *FlowSpecUnknown) Type() BGPFlowSpecType

type FourOctetAsSpecificExtended

type FourOctetAsSpecificExtended struct {
	SubType      ExtendedCommunityAttrSubType
	AS           uint32
	LocalAdmin   uint16
	IsTransitive bool
}

func NewFourOctetAsSpecificExtended

func NewFourOctetAsSpecificExtended(subtype ExtendedCommunityAttrSubType, as uint32, localAdmin uint16, isTransitive bool) *FourOctetAsSpecificExtended

func (*FourOctetAsSpecificExtended) Flat

func (*FourOctetAsSpecificExtended) GetTypes

func (*FourOctetAsSpecificExtended) MarshalJSON

func (e *FourOctetAsSpecificExtended) MarshalJSON() ([]byte, error)

func (*FourOctetAsSpecificExtended) Serialize

func (e *FourOctetAsSpecificExtended) Serialize() ([]byte, error)

func (*FourOctetAsSpecificExtended) String

func (e *FourOctetAsSpecificExtended) String() string

type FragmentFlag

type FragmentFlag int

func (FragmentFlag) String

func (f FragmentFlag) String() string

type IPAddrPrefix

type IPAddrPrefix struct {
	IPAddrPrefixDefault
	// contains filtered or unexported fields
}

func NewIPAddrPrefix

func NewIPAddrPrefix(length uint8, prefix string) *IPAddrPrefix

func (*IPAddrPrefix) AFI

func (r *IPAddrPrefix) AFI() uint16

func (*IPAddrPrefix) DecodeFromBytes

func (r *IPAddrPrefix) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*IPAddrPrefix) Len

func (r *IPAddrPrefix) Len(options ...*MarshallingOption) int

func (*IPAddrPrefix) SAFI

func (r *IPAddrPrefix) SAFI() uint8

func (*IPAddrPrefix) Serialize

func (r *IPAddrPrefix) Serialize(options ...*MarshallingOption) ([]byte, error)

type IPAddrPrefixDefault

type IPAddrPrefixDefault struct {
	PrefixDefault
	Length uint8
	Prefix net.IP
}

func (*IPAddrPrefixDefault) Flat

func (p *IPAddrPrefixDefault) Flat() map[string]string

func (*IPAddrPrefixDefault) MarshalJSON

func (r *IPAddrPrefixDefault) MarshalJSON() ([]byte, error)

func (*IPAddrPrefixDefault) String

func (r *IPAddrPrefixDefault) String() string

type IPv4AddressSpecificExtended

type IPv4AddressSpecificExtended struct {
	SubType      ExtendedCommunityAttrSubType
	IPv4         net.IP
	LocalAdmin   uint16
	IsTransitive bool
}

func NewIPv4AddressSpecificExtended

func NewIPv4AddressSpecificExtended(subtype ExtendedCommunityAttrSubType, ip string, localAdmin uint16, isTransitive bool) *IPv4AddressSpecificExtended

func (*IPv4AddressSpecificExtended) Flat

func (*IPv4AddressSpecificExtended) GetTypes

func (*IPv4AddressSpecificExtended) MarshalJSON

func (e *IPv4AddressSpecificExtended) MarshalJSON() ([]byte, error)

func (*IPv4AddressSpecificExtended) Serialize

func (e *IPv4AddressSpecificExtended) Serialize() ([]byte, error)

func (*IPv4AddressSpecificExtended) String

func (e *IPv4AddressSpecificExtended) String() string

type IPv6AddrPrefix

type IPv6AddrPrefix struct {
	IPAddrPrefix
}

func NewIPv6AddrPrefix

func NewIPv6AddrPrefix(length uint8, prefix string) *IPv6AddrPrefix

func (*IPv6AddrPrefix) AFI

func (r *IPv6AddrPrefix) AFI() uint16

func (*IPv6AddrPrefix) String

func (r *IPv6AddrPrefix) String() string

type IPv6AddressSpecificExtended

type IPv6AddressSpecificExtended struct {
	SubType      ExtendedCommunityAttrSubType
	IPv6         net.IP
	LocalAdmin   uint16
	IsTransitive bool
}

func NewIPv6AddressSpecificExtended

func NewIPv6AddressSpecificExtended(subtype ExtendedCommunityAttrSubType, ip string, localAdmin uint16, isTransitive bool) *IPv6AddressSpecificExtended

func (*IPv6AddressSpecificExtended) Flat

func (*IPv6AddressSpecificExtended) GetTypes

func (*IPv6AddressSpecificExtended) MarshalJSON

func (e *IPv6AddressSpecificExtended) MarshalJSON() ([]byte, error)

func (*IPv6AddressSpecificExtended) Serialize

func (e *IPv6AddressSpecificExtended) Serialize() ([]byte, error)

func (*IPv6AddressSpecificExtended) String

func (e *IPv6AddressSpecificExtended) String() string

type IngressReplTunnelID

type IngressReplTunnelID struct {
	Value net.IP
}

func NewIngressReplTunnelID

func NewIngressReplTunnelID(value string) *IngressReplTunnelID

func (*IngressReplTunnelID) Len

func (i *IngressReplTunnelID) Len() int

func (*IngressReplTunnelID) Serialize

func (i *IngressReplTunnelID) Serialize() ([]byte, error)

func (*IngressReplTunnelID) String

func (i *IngressReplTunnelID) String() string

type LabeledIPAddrPrefix

type LabeledIPAddrPrefix struct {
	IPAddrPrefixDefault
	Labels MPLSLabelStack
	// contains filtered or unexported fields
}

func NewLabeledIPAddrPrefix

func NewLabeledIPAddrPrefix(length uint8, prefix string, label MPLSLabelStack) *LabeledIPAddrPrefix

func (*LabeledIPAddrPrefix) AFI

func (r *LabeledIPAddrPrefix) AFI() uint16

func (*LabeledIPAddrPrefix) DecodeFromBytes

func (l *LabeledIPAddrPrefix) DecodeFromBytes(data []byte, options ...*MarshallingOption) error

func (*LabeledIPAddrPrefix)