bgp

package
v0.0.0-...-ccb7345 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2016 License: Apache-2.0, Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AFI_IP    = 1
	AFI_IP6   = 2
	AFI_L2VPN = 25
)
View Source
const (
	SAFI_UNICAST                  = 1
	SAFI_MULTICAST                = 2
	SAFI_MPLS_LABEL               = 4
	SAFI_ENCAPSULATION            = 7
	SAFI_VPLS                     = 65
	SAFI_EVPN                     = 70
	SAFI_MPLS_VPN                 = 128
	SAFI_MPLS_VPN_MULTICAST       = 129
	SAFI_ROUTE_TARGET_CONSTRTAINS = 132
	SAFI_FLOW_SPEC_UNICAST        = 133
	SAFI_FLOW_SPEC_VPN            = 134
)
View Source
const (
	BGP_ORIGIN_ATTR_TYPE_IGP        = 0
	BGP_ORIGIN_ATTR_TYPE_EGP        = 1
	BGP_ORIGIN_ATTR_TYPE_INCOMPLETE = 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_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
)
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
)

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_AUTHENTICATION_FAILURE
	BGP_ERROR_SUB_UNACCEPTABLE_HOLD_TIME
)

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_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_MAXIMUM_NUMBER_OF_PREFIXES_REACHED
	BGP_ERROR_SUB_ADMINISTRATIVE_SHUTDOWN
	BGP_ERROR_SUB_PEER_DECONFIGURED
	BGP_ERROR_SUB_ADMINISTRATIVE_RESET
	BGP_ERROR_SUB_CONNECTION_RESET
	BGP_ERROR_SUB_OTHER_CONFIGURATION_CHANGE
	BGP_ERROR_SUB_CONNECTION_COLLISION_RESOLUTION
	BGP_ERROR_SUB_OUT_OF_RESOURCES
)

NOTIFICATION Error Subcode for BGP_ERROR_CEASE (RFC 4486)

View Source
const (
	COMMUNITY_INTERNET                   WellKnownCommunity = 0x00000000
	COMMUNITY_PLANNED_SHUT                                  = 0xffff0000
	COMMUNITY_ACCEPT_OWN                                    = 0xffff0001
	COMMUNITY_ROUTE_FILTER_TRANSLATED_v4                    = 0xffff0002
	COMMUNITY_ROUTE_FILTER_v4                               = 0xffff0003
	COMMUNITY_ROUTE_FILTER_TRANSLATED_v6                    = 0xffff0004
	COMMUNITY_ROUTE_FILTER_v6                               = 0xffff0005
	COMMUNITY_LLGR_STALE                                    = 0xffff0006
	COMMUNITY_NO_LLGR                                       = 0xffff0007
	COMMUNITY_NO_EXPORT                                     = 0xffffff01
	COMMUNITY_NO_ADVERTISE                                  = 0xffffff02
	COMMUNITY_NO_EXPORT_SUBCONFED                           = 0xffffff03
	COMMUNITY_NO_PEER                                       = 0xffffff04
)
View Source
const (
	BGP_HEADER_LENGTH      = 19
	BGP_MAX_MESSAGE_LENGTH = 4096
)
View Source
const (
	BMP_VERSION          = 3
	BMP_HEADER_SIZE      = 6
	BMP_PEER_HEADER_SIZE = 42
)
View Source
const (
	BMP_PEER_TYPE_GLOBAL = iota
	BMP_PEER_TYPE_L3VPN
)
View Source
const (
	BMP_STAT_TYPE_REJECTED = iota
	BMP_STAT_TYPE_DUPLICATE_PREFIX
	BMP_STAT_TYPE_DUPLICATE_WITHDRAW
	BMP_STAT_TYPE_INV_UPDATE_DUE_TO_CLUSTER_LIST_LOOP
	BMP_STAT_TYPE_INV_UPDATE_DUE_TO_AS_PATH_LOOP
	BMP_STAT_TYPE_INV_UPDATE_DUE_TO_ORIGINATOR_ID
	BMP_STAT_TYPE_INV_UPDATE_DUE_TO_AS_CONFED_LOOP
	BMP_STAT_TYPE_ADJ_RIB_IN
	BMP_STAT_TYPE_LOC_RIB
)
View Source
const (
	BMP_PEER_DOWN_REASON_UNKNOWN = iota
	BMP_PEER_DOWN_REASON_LOCAL_BGP_NOTIFICATION
	BMP_PEER_DOWN_REASON_LOCAL_NO_NOTIFICATION
	BMP_PEER_DOWN_REASON_REMOTE_BGP_NOTIFICATION
	BMP_PEER_DOWN_REASON_REMOTE_NO_NOTIFICATION
)
View Source
const (
	BMP_MSG_ROUTE_MONITORING = iota
	BMP_MSG_STATISTICS_REPORT
	BMP_MSG_PEER_DOWN_NOTIFICATION
	BMP_MSG_PEER_UP_NOTIFICATION
	BMP_MSG_INITIATION
	BMP_MSG_TERMINATION
)
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
)
View Source
const (
	RTR_SERIAL_NOTIFY = iota
	RTR_SERIAL_QUERY
	RTR_RESET_QUERY
	RTR_CACHE_RESPONSE
	RTR_IPV4_PREFIX

	RTR_IPV6_PREFIX
	RTR_END_OF_DATA
	RTR_CACHE_RESET

	RTR_ERROR_REPORT
)
View Source
const (
	RTR_SERIAL_NOTIFY_LEN  = 12
	RTR_SERIAL_QUERY_LEN   = 12
	RTR_RESET_QUERY_LEN    = 8
	RTR_CACHE_RESPONSE_LEN = 8
	RTR_IPV4_PREFIX_LEN    = 20
	RTR_IPV6_PREFIX_LEN    = 32
	RTR_END_OF_DATA_LEN    = 12
	RTR_CACHE_RESET_LEN    = 8
	RTR_MIN_LEN            = 8
)
View Source
const AS_TRANS = 23456
View Source
const (
	BGP_ERROR_SUB_FSM_ERROR
)

NOTIFICATION Error Subcode for BGP_ERROR_FSM_ERROR

View Source
const (
	BGP_ERROR_SUB_HOLD_TIMER_EXPIRED
)

NOTIFICATION Error Subcode for BGP_ERROR_HOLD_TIMER_EXPIRED

View Source
const (
	BGP_OPT_CAPABILITY = 2
)
View Source
const BGP_PORT = 179
View Source
const (
	BMP_DEFAULT_PORT = 11019
)
View Source
const (
	MRT_COMMON_HEADER_LEN = 12
)
View Source
const (
	RPKI_DEFAULT_PORT = 323
)
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.

Variables

View Source
var FlowSpecNameMap = map[BGPFlowSpecType]string{
	FLOW_SPEC_TYPE_UNKNOWN:    "unknown",
	FLOW_SPEC_TYPE_DST_PREFIX: "destination",
	FLOW_SPEC_TYPE_SRC_PREFIX: "source",
	FLOW_SPEC_TYPE_IP_PROTO:   "protocol",
	FLOW_SPEC_TYPE_PORT:       "port",
	FLOW_SPEC_TYPE_DST_PORT:   "destination-port",
	FLOW_SPEC_TYPE_SRC_PORT:   "source-port",
	FLOW_SPEC_TYPE_ICMP_TYPE:  "icmp-type",
	FLOW_SPEC_TYPE_ICMP_CODE:  "icmp-code",
	FLOW_SPEC_TYPE_TCP_FLAG:   "tcp-flags",
	FLOW_SPEC_TYPE_PKT_LEN:    "packet-length",
	FLOW_SPEC_TYPE_DSCP:       "dscp",
	FLOW_SPEC_TYPE_FRAGMENT:   "fragment",
	FLOW_SPEC_TYPE_LABEL:      "label",
}
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:    "fin",
	TCP_FLAG_SYN:    "syn",
	TCP_FLAG_RST:    "rst",
	TCP_FLAG_PUSH:   "push",
	TCP_FLAG_ACK:    "ack",
	TCP_FLAG_URGENT: "urgent",
}
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_NO_EXPORT:                  "no-export",
	COMMUNITY_NO_ADVERTISE:               "no-advertise",
	COMMUNITY_NO_EXPORT_SUBCONFED:        "no-export-subconfed",
	COMMUNITY_NO_PEER:                    "no-peer",
}

Functions

func NewMessageError

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

func RouteFamilyToAfiSafi

func RouteFamilyToAfiSafi(rf RouteFamily) (uint16, uint8)

func SplitBMP

func SplitBMP(data []byte, atEOF bool) (advance int, token []byte, err error)

func SplitMrt

func SplitMrt(data []byte, atEOF bool) (advance int, token []byte, err error)

This function can be passed into a bufio.Scanner.Split() to read buffered mrt msgs

func SplitRTR

func SplitRTR(data []byte, atEOF bool) (advance int, token []byte, err error)

func ValidateAttribute

func ValidateAttribute(a PathAttributeInterface, rfs map[RouteFamily]bool, doConfedCheck bool) (bool, error)

func ValidateBGPMessage

func ValidateBGPMessage(m *BGPMessage) error

func ValidateFlags

func ValidateFlags(t BGPAttrType, flags BGPAttrFlag) (bool, string)

validator for PathAttribute

func ValidateOpenMsg

func ValidateOpenMsg(m *BGPOpen, expectedAS uint32) error

func ValidateUpdateMsg

func ValidateUpdateMsg(m *BGPUpdate, rfs map[RouteFamily]bool, doConfedCheck bool) (bool, error)

Validator for BGPUpdate

Types

type AddrPrefixInterface

type AddrPrefixInterface interface {
	DecodeFromBytes([]byte) error
	Serialize() ([]byte, error)
	AFI() uint16
	SAFI() uint8
	Len() int
	String() string
	MarshalJSON() ([]byte, error)
}

func NewPrefixFromRouteFamily

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

type AigpTLV

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

type AigpTLVDefault

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

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) 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 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) 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) 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 {
	Serialize() ([]byte, error)
	DecodeFromBytes([]byte) error
	Len() int
	ASLen() int
	MarshalJSON() ([]byte, error)
	String() string
}

type BGP4MPHeader

type BGP4MPHeader struct {
	PeerAS         uint32
	LocalAS        uint32
	InterfaceIndex uint16
	AddressFamily  uint16
	PeerIpAddress  net.IP
	LocalIpAddress net.IP
	// contains filtered or unexported fields
}

type BGP4MPMessage

type BGP4MPMessage struct {
	*BGP4MPHeader
	BGPMessage        *BGPMessage
	BGPMessagePayload []byte
	// contains filtered or unexported fields
}

func NewBGP4MPMessage

func NewBGP4MPMessage(peeras, localas uint32, intfindex uint16, peerip, localip string, isAS4 bool, msg *BGPMessage) *BGP4MPMessage

func NewBGP4MPMessageLocal

func NewBGP4MPMessageLocal(peeras, localas uint32, intfindex uint16, peerip, localip string, isAS4 bool, msg *BGPMessage) *BGP4MPMessage

func (*BGP4MPMessage) DecodeFromBytes

func (m *BGP4MPMessage) DecodeFromBytes(data []byte) error

func (*BGP4MPMessage) Serialize

func (m *BGP4MPMessage) Serialize() ([]byte, error)

func (*BGP4MPMessage) String

func (m *BGP4MPMessage) String() string

type BGP4MPStateChange

type BGP4MPStateChange struct {
	*BGP4MPHeader
	OldState BGPState
	NewState BGPState
}

func NewBGP4MPStateChange

func NewBGP4MPStateChange(peeras, localas uint32, intfindex uint16, peerip, localip string, isAS4 bool, oldstate, newstate BGPState) *BGP4MPStateChange

func (*BGP4MPStateChange) DecodeFromBytes

func (m *BGP4MPStateChange) DecodeFromBytes(data []byte) error

func (*BGP4MPStateChange) Serialize

func (m *BGP4MPStateChange) Serialize() ([]byte, error)

type BGPAddPathMode

type BGPAddPathMode uint8
const (
	BGP_ADD_PATH_RECEIVE BGPAddPathMode = 1
	BGP_ADD_PATH_SEND    BGPAddPathMode = 2
	BGP_ADD_PATH_BOTH    BGPAddPathMode = 3
)

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_AIGP // = 26
)

func (BGPAttrType) String

func (i BGPAttrType) String() string

type BGPBody

type BGPBody interface {
	DecodeFromBytes([]byte) error
	Serialize() ([]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_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_ROUTE_REFRESH_CISCO    BGPCapabilityCode = 128
)

func (BGPCapabilityCode) String

func (i 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
)

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) error

func (*BGPHeader) Serialize

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

type BGPKeepAlive

type BGPKeepAlive struct {
}

func (*BGPKeepAlive) DecodeFromBytes

func (msg *BGPKeepAlive) DecodeFromBytes(data []byte) error

func (*BGPKeepAlive) Serialize

func (msg *BGPKeepAlive) Serialize() ([]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 ParseBGPBody

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

func ParseBGPMessage

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

func (*BGPMessage) Serialize

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

type BGPNotification

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

func (*BGPNotification) DecodeFromBytes

func (msg *BGPNotification) DecodeFromBytes(data []byte) error

func (*BGPNotification) Serialize

func (msg *BGPNotification) Serialize() ([]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) error

func (*BGPOpen) Serialize

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

type BGPRouteRefresh

type BGPRouteRefresh struct {
	AFI         uint16
	Demarcation uint8
	SAFI        uint8
}

func (*BGPRouteRefresh) DecodeFromBytes

func (msg *BGPRouteRefresh) DecodeFromBytes(data []byte) error

func (*BGPRouteRefresh) Serialize

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

type BGPState

type BGPState uint16
const (
	IDLE        BGPState = 1
	CONNECT     BGPState = 2
	ACTIVE      BGPState = 3
	OPENSENT    BGPState = 4
	OPENCONFIRM BGPState = 5
	ESTABLISHED BGPState = 6
)

type BGPUpdate

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

func (*BGPUpdate) DecodeFromBytes

func (msg *BGPUpdate) DecodeFromBytes(data []byte) error

func (*BGPUpdate) Serialize

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

type BMPBody

type BMPBody interface {
	// Sigh, some body messages need a BMPHeader to parse the body
	// data so we need to pass BMPHeader (avoid DecodeFromBytes
	// function name).
	ParseBody(*BMPMessage, []byte) error
	Serialize() ([]byte, error)
}

type BMPHeader

type BMPHeader struct {
	Version uint8
	Length  uint32
	Type    uint8
}

func (*BMPHeader) DecodeFromBytes

func (h *BMPHeader) DecodeFromBytes(data []byte) error

func (*BMPHeader) Serialize

func (h *BMPHeader) Serialize() ([]byte, error)

type BMPInitiation

type BMPInitiation struct {
	Info []BMPTLV
}

func (*BMPInitiation) ParseBody

func (body *BMPInitiation) ParseBody(msg *BMPMessage, data []byte) error

func (*BMPInitiation) Serialize

func (body *BMPInitiation) Serialize() ([]byte, error)

type BMPMessage

type BMPMessage struct {
	Header     BMPHeader
	PeerHeader BMPPeerHeader
	Body       BMPBody
}

func NewBMPInitiation

func NewBMPInitiation(info []BMPTLV) *BMPMessage

func NewBMPPeerDownNotification

func NewBMPPeerDownNotification(p BMPPeerHeader, reason uint8, notification *BGPMessage, data []byte) *BMPMessage

func NewBMPPeerUpNotification

func NewBMPPeerUpNotification(p BMPPeerHeader, lAddr string, lPort, rPort uint16, sent, recv *BGPMessage) *BMPMessage

func NewBMPRouteMonitoring

func NewBMPRouteMonitoring(p BMPPeerHeader, update *BGPMessage) *BMPMessage

func NewBMPTermination

func NewBMPTermination(info []BMPTLV) *BMPMessage

func ParseBMPMessage

func ParseBMPMessage(data []byte) (*BMPMessage, error)

func (*BMPMessage) Len

func (msg *BMPMessage) Len() int

func (*BMPMessage) Serialize

func (msg *BMPMessage) Serialize() ([]byte, error)

type BMPPeerDownNotification

type BMPPeerDownNotification struct {
	Reason          uint8
	BGPNotification *BGPMessage
	Data            []byte
}

func (*BMPPeerDownNotification) ParseBody

func (body *BMPPeerDownNotification) ParseBody(msg *BMPMessage, data []byte) error

func (*BMPPeerDownNotification) Serialize

func (body *BMPPeerDownNotification) Serialize() ([]byte, error)

type BMPPeerHeader

type BMPPeerHeader struct {
	PeerType          uint8
	IsPostPolicy      bool
	PeerDistinguisher uint64
	PeerAddress       net.IP
	PeerAS            uint32
	PeerBGPID         net.IP
	Timestamp         float64
	Flags             uint8
}

func NewBMPPeerHeader

func NewBMPPeerHeader(t uint8, policy bool, dist uint64, address string, as uint32, id string, stamp float64) *BMPPeerHeader

func (*BMPPeerHeader) DecodeFromBytes

func (h *BMPPeerHeader) DecodeFromBytes(data []byte) error

func (*BMPPeerHeader) Serialize

func (h *BMPPeerHeader) Serialize() ([]byte, error)

type BMPPeerUpNotification

type BMPPeerUpNotification struct {
	LocalAddress    net.IP
	LocalPort       uint16
	RemotePort      uint16
	SentOpenMsg     *BGPMessage
	ReceivedOpenMsg *BGPMessage
}

func (*BMPPeerUpNotification) ParseBody

func (body *BMPPeerUpNotification) ParseBody(msg *BMPMessage, data []byte) error

func (*BMPPeerUpNotification) Serialize

func (body *BMPPeerUpNotification) Serialize() ([]byte, error)

type BMPRouteMonitoring

type BMPRouteMonitoring struct {
	BGPUpdate        *BGPMessage
	BGPUpdatePayload []byte
}

func (*BMPRouteMonitoring) ParseBody

func (body *BMPRouteMonitoring) ParseBody(msg *BMPMessage, data []byte) error

func (*BMPRouteMonitoring) Serialize

func (body *BMPRouteMonitoring) Serialize() ([]byte, error)

type BMPStatisticsReport

type BMPStatisticsReport struct {
	Count uint32
	Stats []BMPStatsTLV
}

func (*BMPStatisticsReport) ParseBody

func (body *BMPStatisticsReport) ParseBody(msg *BMPMessage, data []byte) error

func (*BMPStatisticsReport) Serialize

func (body *BMPStatisticsReport) Serialize() ([]byte, error)

type BMPStatsTLV

type BMPStatsTLV struct {
	Type   uint16
	Length uint16
	Value  uint64
}

type BMPTLV

type BMPTLV struct {
	Type   uint16
	Length uint16
	Value  []byte
}

func NewBMPTLV

func NewBMPTLV(t uint16, v []byte) *BMPTLV

func (*BMPTLV) DecodeFromBytes

func (tlv *BMPTLV) DecodeFromBytes(data []byte) error

func (*BMPTLV) Len

func (tlv *BMPTLV) Len() int

func (*BMPTLV) Serialize

func (tlv *BMPTLV) Serialize() ([]byte, error)

type BMPTermination

type BMPTermination struct {
	Info []BMPTLV
}

func (*BMPTermination) ParseBody

func (body *BMPTermination) ParseBody(msg *BMPMessage, data []byte) error

func (*BMPTermination) Serialize

func (body *BMPTermination) Serialize() ([]byte, error)

type Body

type Body interface {
	DecodeFromBytes([]byte) error
	Serialize() ([]byte, error)
}

type CapAddPath

type CapAddPath struct {
	DefaultParameterCapability
	RouteFamily RouteFamily
	Mode        BGPAddPathMode
}

func NewCapAddPath

func NewCapAddPath(rf RouteFamily, mode BGPAddPathMode) *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 CapCarryingLabelInfo

type CapCarryingLabelInfo struct {
	DefaultParameterCapability
}

type CapEnhancedRouteRefresh

type CapEnhancedRouteRefresh struct {
	DefaultParameterCapability
}

func NewCapEnhancedRouteRefresh

func NewCapEnhancedRouteRefresh() *CapEnhancedRouteRefresh

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
	CapValue CapGracefulRestartValue
}

func NewCapGracefulRestart

func NewCapGracefulRestart(flags uint8, time uint16, tuples []CapGracefulRestartTuples) *CapGracefulRestart

func (*CapGracefulRestart) DecodeFromBytes

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

func (*CapGracefulRestart) Serialize

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

type CapGracefulRestartTuples

type CapGracefulRestartTuples struct {
	AFI   uint16
	SAFI  uint8
	Flags uint8
}

func (CapGracefulRestartTuples) MarshalJSON

func (c CapGracefulRestartTuples) MarshalJSON() ([]byte, error)

type CapGracefulRestartValue

type CapGracefulRestartValue struct {
	Flags  uint8                      `json:"flags"`
	Time   uint16                     `json:"time"`
	Tuples []CapGracefulRestartTuples `json:"tuples"`
}

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 CapUnknown

type CapUnknown struct {
	DefaultParameterCapability
}

type ColorExtended

type ColorExtended struct {
	Value uint32
}

func (*ColorExtended) Serialize

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

func (*ColorExtended) String

func (e *ColorExtended) String() string

type DefaultAsPath

type DefaultAsPath struct {
}

type DefaultOpaqueExtendedValue

type DefaultOpaqueExtendedValue struct {
	Value []byte
}

func (*DefaultOpaqueExtendedValue) Serialize

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

func (*DefaultOpaqueExtendedValue) String

func (v *DefaultOpaqueExtendedValue) 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 (*DefaultPmsiTunnelID) Serialize

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

func (*DefaultPmsiTunnelID) String

func (i *DefaultPmsiTunnelID) String() string

type DefaultRouteDistinguisher

type DefaultRouteDistinguisher struct {
	Type  uint16
	Value []byte
}

func (*DefaultRouteDistinguisher) DecodeFromBytes

func (rd *DefaultRouteDistinguisher) DecodeFromBytes(data []byte) error

func (*DefaultRouteDistinguisher) Len

func (rd *DefaultRouteDistinguisher) Len() int

func (*DefaultRouteDistinguisher) MarshalJSON

func (rd *DefaultRouteDistinguisher) MarshalJSON() ([]byte, error)

func (*DefaultRouteDistinguisher) Serialize

func (rd *DefaultRouteDistinguisher) Serialize() ([]byte, error)

func (*DefaultRouteDistinguisher) String

func (rd *DefaultRouteDistinguisher) String() string

type ESILabelExtended

type ESILabelExtended struct {
	Label          uint32
	IsSingleActive bool
}

func NewESILabelExtended

func NewESILabelExtended(label uint32, isSingleActive bool) *ESILabelExtended

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) 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) 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) 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 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) 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) MarshalJSON

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

func (*EVPNMulticastEthernetTagRoute) Serialize

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

func (*EVPNMulticastEthernetTagRoute) String

type EVPNNLRI

type EVPNNLRI struct {
	RouteType     uint8
	Length        uint8
	RouteTypeData EVPNRouteTypeInterface
}

func NewEVPNNLRI

func NewEVPNNLRI(routetype uint8, length uint8, routetypedata EVPNRouteTypeInterface) *EVPNNLRI

func (*EVPNNLRI) AFI

func (n *EVPNNLRI) AFI() uint16

func (*EVPNNLRI) DecodeFromBytes

func (n *EVPNNLRI) DecodeFromBytes(data []byte) error

func (*EVPNNLRI) Len

func (n *EVPNNLRI) Len() 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() ([]byte, error)

func (*EVPNNLRI) String

func (n *EVPNNLRI) String() string

type EVPNRouteTypeInterface

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

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

type EncapExtended

type EncapExtended struct {
	TunnelType TunnelType
}

func (*EncapExtended) Serialize

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

func (*EncapExtended) String

func (e *EncapExtended) String() string

type EncapNLRI

type EncapNLRI struct {
	IPAddrPrefixDefault
}

func NewEncapNLRI

func NewEncapNLRI(endpoint string) *EncapNLRI

func (*EncapNLRI) AFI

func (n *EncapNLRI) AFI() uint16

func (*EncapNLRI) DecodeFromBytes

func (n *EncapNLRI) DecodeFromBytes(data []byte) error

func (*EncapNLRI) SAFI

func (n *EncapNLRI) SAFI() uint8

func (*EncapNLRI) Serialize

func (n *EncapNLRI) Serialize() ([]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
)

type EthernetSegmentIdentifier

type EthernetSegmentIdentifier struct {
	Type  ESIType
	Value []byte
}

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 ExtendedCommunityAttrSubType

type ExtendedCommunityAttrSubType uint8

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

const (
	EC_SUBTYPE_ORIGIN_VALIDATION       ExtendedCommunityAttrSubType = 0x00
	EC_SUBTYPE_ROUTE_TARGET            ExtendedCommunityAttrSubType = 0x02
	EC_SUBTYPE_ROUTE_ORIGIN            ExtendedCommunityAttrSubType = 0x03
	EC_SUBTYPE_LINK_BANDWIDTH          ExtendedCommunityAttrSubType = 0x04
	EC_SUBTYPE_GENERIC                 ExtendedCommunityAttrSubType = 0x04
	EC_SUBTYPE_OSPF_DOMAIN_ID          ExtendedCommunityAttrSubType = 0x05
	EC_SUBTYPE_OSPF_ROUTE_TYPE         ExtendedCommunityAttrSubType = 0x06
	EC_SUBTYPE_OSPF_ROUTE_ID           ExtendedCommunityAttrSubType = 0x07
	EC_SUBTYPE_BGP_DATA_COLLECTION     ExtendedCommunityAttrSubType = 0x08
	EC_SUBTYPE_SOURCE_AS               ExtendedCommunityAttrSubType = 0x09
	EC_SUBTYPE_L2VPN_ID                ExtendedCommunityAttrSubType = 0x0A
	EC_SUBTYPE_L2_INFO                 ExtendedCommunityAttrSubType = 0x0A
	EC_SUBTYPE_VRF_ROUTE_IMPORT        ExtendedCommunityAttrSubType = 0x0B
	EC_SUBTYPE_COLOR                   ExtendedCommunityAttrSubType = 0x0B
	EC_SUBTYPE_ENCAPSULATION           ExtendedCommunityAttrSubType = 0x0C
	EC_SUBTYPE_DEFAULT_GATEWAY         ExtendedCommunityAttrSubType = 0x0D
	EC_SUBTYPE_CISCO_VPN_DISTINGUISHER ExtendedCommunityAttrSubType = 0x10
	EC_SUBTYPE_UUID_BASED_RT           ExtendedCommunityAttrSubType = 0x11

	EC_SUBTYPE_FLOWSPEC_TRAFFIC_RATE   ExtendedCommunityAttrSubType = 0x06
	EC_SUBTYPE_FLOWSPEC_TRAFFIC_ACTION ExtendedCommunityAttrSubType = 0x07
	EC_SUBTYPE_FLOWSPEC_REDIRECT       ExtendedCommunityAttrSubType = 0x08
	EC_SUBTYPE_FLOWSPEC_TRAFFIC_REMARK ExtendedCommunityAttrSubType = 0x09

	EC_SUBTYPE_MAC_MOBILITY ExtendedCommunityAttrSubType = 0x00
	EC_SUBTYPE_ESI_LABEL    ExtendedCommunityAttrSubType = 0x01
	EC_SUBTYPE_ES_IMPORT    ExtendedCommunityAttrSubType = 0x02
)

type ExtendedCommunityAttrType

type ExtendedCommunityAttrType uint8

RFC7153 5.1. Registries for the "Type" Field RANGE REGISTRACTION 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_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_NON_TRANSITIVE_TWO_OCTET_AS_SPECIFIC  ExtendedCommunityAttrType = 0x40
	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
	//draft-ietf-idr-flowspec-redirect-rt-bis-05
	EC_TYPE_GENERIC_TRANSITIVE_EXPERIMENTAL2 ExtendedCommunityAttrType = 0x81
	EC_TYPE_GENERIC_TRANSITIVE_EXPERIMENTAL3 ExtendedCommunityAttrType = 0x82
)

type ExtendedCommunityInterface

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

func ParseExtended

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

func ParseRouteTarget

func ParseRouteTarget(rt string) (ExtendedCommunityInterface, error)

type FSMState

type FSMState int
const (
	BGP_FSM_IDLE FSMState
	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(type_ BGPFlowSpecType, items []*FlowSpecComponentItem) *FlowSpecComponent

func (*FlowSpecComponent) DecodeFromBytes

func (p *FlowSpecComponent) DecodeFromBytes(data []byte) error

func (*FlowSpecComponent) Len

func (p *FlowSpecComponent) Len() int

func (*FlowSpecComponent) MarshalJSON

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

func (*FlowSpecComponent) Serialize

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

func (*FlowSpecComponent) String

func (p *FlowSpecComponent) String() string

func (*FlowSpecComponent) Type

type FlowSpecComponentInterface

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

func ParseFlowSpecComponents

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

type FlowSpecComponentItem

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

func NewFlowSpecComponentItem

func NewFlowSpecComponentItem(op int, value int) *FlowSpecComponentItem

func (*FlowSpecComponentItem) Serialize

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

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) error

func (*FlowSpecDestinationPrefix) Len

func (p *FlowSpecDestinationPrefix) Len() int

func (*FlowSpecDestinationPrefix) MarshalJSON

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

func (*FlowSpecDestinationPrefix) Serialize

func (p *FlowSpecDestinationPrefix) Serialize() ([]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) 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() int

func (*FlowSpecDestinationPrefix6) MarshalJSON

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

func (*FlowSpecDestinationPrefix6) Serialize

func (p *FlowSpecDestinationPrefix6) Serialize() ([]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) AFI

func (n *FlowSpecIPv4Unicast) AFI() uint16

func (*FlowSpecIPv4Unicast) DecodeFromBytes

func (n *FlowSpecIPv4Unicast) DecodeFromBytes(data []byte) error

func (*FlowSpecIPv4Unicast) SAFI

func (n *FlowSpecIPv4Unicast) SAFI() uint8

type FlowSpecIPv4VPN

type FlowSpecIPv4VPN struct {
	FlowSpecNLRI
}

func NewFlowSpecIPv4VPN

func NewFlowSpecIPv4VPN(value []FlowSpecComponentInterface) *FlowSpecIPv4VPN

func (*FlowSpecIPv4VPN) AFI

func (n *FlowSpecIPv4VPN) AFI() uint16

func (*FlowSpecIPv4VPN) DecodeFromBytes

func (n *FlowSpecIPv4VPN) DecodeFromBytes(data []byte) error

func (*FlowSpecIPv4VPN) SAFI

func (n *FlowSpecIPv4VPN) SAFI() uint8

type FlowSpecIPv6Unicast

type FlowSpecIPv6Unicast struct {
	FlowSpecNLRI
}

func NewFlowSpecIPv6Unicast

func NewFlowSpecIPv6Unicast(value []FlowSpecComponentInterface) *FlowSpecIPv6Unicast

func (*FlowSpecIPv6Unicast) AFI

func (n *FlowSpecIPv6Unicast) AFI() uint16

func (*FlowSpecIPv6Unicast) DecodeFromBytes

func (n *FlowSpecIPv6Unicast) DecodeFromBytes(data []byte) error

func (*FlowSpecIPv6Unicast) SAFI

func (n *FlowSpecIPv6Unicast) SAFI() uint8

type FlowSpecIPv6VPN

type FlowSpecIPv6VPN struct {
	FlowSpecNLRI
}

func NewFlowSpecIPv6VPN

func NewFlowSpecIPv6VPN(value []FlowSpecComponentInterface) *FlowSpecIPv6VPN

func (*FlowSpecIPv6VPN) AFI

func (n *FlowSpecIPv6VPN) AFI() uint16

func (*FlowSpecIPv6VPN) DecodeFromBytes

func (n *FlowSpecIPv6VPN) DecodeFromBytes(data []byte) error

func (*FlowSpecIPv6VPN) SAFI

func (n *FlowSpecIPv6VPN) SAFI() uint8

type FlowSpecNLRI

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

func (*FlowSpecNLRI) Len

func (n *FlowSpecNLRI) Len() int

func (*FlowSpecNLRI) MarshalJSON

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

func (*FlowSpecNLRI) Serialize

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

func (*FlowSpecNLRI) String

func (n *FlowSpecNLRI) String() string

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) error

func (*FlowSpecSourcePrefix) Len

func (p *FlowSpecSourcePrefix) Len() int

func (*FlowSpecSourcePrefix) MarshalJSON

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

func (*FlowSpecSourcePrefix) Serialize

func (p *FlowSpecSourcePrefix) Serialize() ([]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) 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() int

func (*FlowSpecSourcePrefix6) MarshalJSON

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

func (*FlowSpecSourcePrefix6) Serialize

func (p *FlowSpecSourcePrefix6) Serialize() ([]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) error

func (*FlowSpecUnknown) Len

func (p *FlowSpecUnknown) Len() int

func (*FlowSpecUnknown) Serialize

func (p *FlowSpecUnknown) Serialize() ([]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) 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 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) error

func (*IPAddrPrefix) SAFI

func (r *IPAddrPrefix) SAFI() uint8

func (*IPAddrPrefix) Serialize

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

type IPAddrPrefixDefault

type IPAddrPrefixDefault struct {
	Length uint8
	Prefix net.IP
}

func (*IPAddrPrefixDefault) Len

func (r *IPAddrPrefixDefault) Len() int

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) 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 IngressReplTunnelID

type IngressReplTunnelID struct {
	Value net.IP
}

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) error

func (*LabeledIPAddrPrefix) SAFI

func (r *LabeledIPAddrPrefix) SAFI() uint8

func (*LabeledIPAddrPrefix) Serialize

func (l *LabeledIPAddrPrefix) Serialize() ([]byte, error)

type LabeledIPv6AddrPrefix

type LabeledIPv6AddrPrefix struct {
	LabeledIPAddrPrefix
}

func NewLabeledIPv6AddrPrefix

func NewLabeledIPv6AddrPrefix(length uint8, prefix string, label MPLSLabelStack) *LabeledIPv6AddrPrefix

type LabeledVPNIPAddrPrefix

type LabeledVPNIPAddrPrefix struct {
	IPAddrPrefixDefault
	Labels MPLSLabelStack
	RD     RouteDistinguisherInterface
	// contains filtered or unexported fields
}

func NewLabeledVPNIPAddrPrefix

func NewLabeledVPNIPAddrPrefix(length uint8, prefix string, label MPLSLabelStack, rd RouteDistinguisherInterface) *LabeledVPNIPAddrPrefix

func (*LabeledVPNIPAddrPrefix) AFI

func (l *LabeledVPNIPAddrPrefix) AFI() uint16

func (*LabeledVPNIPAddrPrefix) DecodeFromBytes

func (l *LabeledVPNIPAddrPrefix) DecodeFromBytes(data []byte) error

func (*LabeledVPNIPAddrPrefix) MarshalJSON

func (l *LabeledVPNIPAddrPrefix) MarshalJSON() ([]byte, error)

func (*LabeledVPNIPAddrPrefix) SAFI

func (l *LabeledVPNIPAddrPrefix) SAFI() uint8

func (*LabeledVPNIPAddrPrefix) Serialize

func (l *LabeledVPNIPAddrPrefix) Serialize() ([]byte, error)

func (*LabeledVPNIPAddrPrefix) String

func (l *LabeledVPNIPAddrPrefix) String() string

type LabeledVPNIPv6AddrPrefix

type LabeledVPNIPv6AddrPrefix struct {
	LabeledVPNIPAddrPrefix
}

func NewLabeledVPNIPv6AddrPrefix

func NewLabeledVPNIPv6AddrPrefix(length uint8, prefix string, label MPLSLabelStack, rd RouteDistinguisherInterface) *LabeledVPNIPv6AddrPrefix

func (*LabeledVPNIPv6AddrPrefix) AFI

type MPLSLabelStack

type MPLSLabelStack struct {
	Labels []uint32
}

func NewMPLSLabelStack

func NewMPLSLabelStack(labels ...uint32) *MPLSLabelStack

func (*MPLSLabelStack) DecodeFromBytes

func (l *MPLSLabelStack) DecodeFromBytes(data []byte) error

func (*MPLSLabelStack) Len

func (l *MPLSLabelStack) Len() int

func (*MPLSLabelStack) Serialize

func (l *MPLSLabelStack) Serialize() ([]byte, error)

func (*MPLSLabelStack) String

func (l *MPLSLabelStack) String() string

type MRTHeader

type MRTHeader struct {
	Timestamp uint32
	Type      MRTType
	SubType   uint16
	Len       uint32
}

func NewMRTHeader

func NewMRTHeader(timestamp uint32, t MRTType, subtype MRTSubTyper, l uint32) (*MRTHeader, error)

func (*MRTHeader) DecodeFromBytes

func (h *MRTHeader) DecodeFromBytes(data []byte) error

func (*MRTHeader) GetTime

func (h *MRTHeader) GetTime() time.Time

func (*MRTHeader) Serialize

func (h *MRTHeader) Serialize() ([]byte, error)

type MRTMessage

type MRTMessage struct {
	Header MRTHeader
	Body   Body
}

func NewMRTMessage

func NewMRTMessage(timestamp uint32, t MRTType, subtype MRTSubTyper, body Body) (*MRTMessage, error)

func ParseMRTBody

func ParseMRTBody(h *MRTHeader, data []byte) (*MRTMessage, error)

func (*MRTMessage) Serialize

func (m *MRTMessage) Serialize() ([]byte, error)

type MRTSubTypeBGP4MP

type MRTSubTypeBGP4MP uint16
const (
	STATE_CHANGE      MRTSubTypeBGP4MP = 0
	MESSAGE           MRTSubTypeBGP4MP = 1
	MESSAGE_AS4       MRTSubTypeBGP4MP = 4
	STATE_CHANGE_AS4  MRTSubTypeBGP4MP = 5
	MESSAGE_LOCAL     MRTSubTypeBGP4MP = 6
	MESSAGE_AS4_LOCAL MRTSubTypeBGP4MP = 7
)

func (MRTSubTypeBGP4MP) ToUint16

func (t MRTSubTypeBGP4MP) ToUint16() uint16

type MRTSubTypeTableDumpv2

type MRTSubTypeTableDumpv2 uint16
const (
	PEER_INDEX_TABLE   MRTSubTypeTableDumpv2 = 1
	RIB_IPV4_UNICAST   MRTSubTypeTableDumpv2 = 2
	RIB_IPV4_MULTICAST MRTSubTypeTableDumpv2 = 3
	RIB_IPV6_UNICAST   MRTSubTypeTableDumpv2 = 4
	RIB_IPV6_MULTICAST MRTSubTypeTableDumpv2 = 5
	RIB_GENERIC        MRTSubTypeTableDumpv2 = 6
)

func (MRTSubTypeTableDumpv2) ToUint16

func (t MRTSubTypeTableDumpv2) ToUint16() uint16

type MRTSubTyper

type MRTSubTyper interface {
	ToUint16() uint16
}

type MRTType

type MRTType uint16
const (
	NULL         MRTType = 0  // deprecated
	START        MRTType = 1  // deprecated
	DIE          MRTType = 2  // deprecated
	I_AM_DEAD    MRTType = 3  // deprecated
	PEER_DOWN    MRTType = 4  // deprecated
	BGP          MRTType = 5  // deprecated
	RIP          MRTType = 6  // deprecated
	IDRP         MRTType = 7  // deprecated
	RIPNG        MRTType = 8  // deprecated
	BGP4PLUS     MRTType = 9  // deprecated
	BGP4PLUS01   MRTType = 10 // deprecated
	OSPFv2       MRTType = 11
	TABLE_DUMP   MRTType = 12
	TABLE_DUMPv2 MRTType = 13
	BGP4MP       MRTType = 16
	BGP4MP_ET    MRTType = 17
	ISIS         MRTType = 32
	ISIS_ET      MRTType = 33
	OSPFv3       MRTType = 48
	OSPFv3_ET    MRTType = 49
)

type MacMobilityExtended

type MacMobilityExtended struct {
	Sequence uint32
	IsSticky bool
}

func NewMacMobilityExtended

func NewMacMobilityExtended(seq uint32, isSticky bool) *MacMobilityExtended

func (*MacMobilityExtended) GetTypes

func (*MacMobilityExtended) MarshalJSON

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

func (*MacMobilityExtended) Serialize

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

func (*MacMobilityExtended) String

func (e *MacMobilityExtended) String() string

type MessageError

type MessageError struct {
	TypeCode    uint8
	SubTypeCode uint8
	Data        []byte
	Message     string
}

func (*MessageError) Error

func (e *MessageError) Error() string

type OpaqueExtended

type OpaqueExtended struct {
	IsTransitive bool
	Value        OpaqueExtendedValueInterface
	SubType      ExtendedCommunityAttrSubType
}

func NewOpaqueExtended

func NewOpaqueExtended(isTransitive bool) *OpaqueExtended

func (*OpaqueExtended) DecodeFromBytes

func (e *OpaqueExtended) DecodeFromBytes(data []byte) error

func (*OpaqueExtended) GetTypes

func (*OpaqueExtended) MarshalJSON

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

func (*OpaqueExtended) Serialize

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

func (*OpaqueExtended) String

func (e *OpaqueExtended) String() string

type OpaqueExtendedValueInterface

type OpaqueExtendedValueInterface interface {
	Serialize() ([]byte, error)
	String() string
}

type OptionParameterCapability

type OptionParameterCapability struct {
	ParamType  uint8
	ParamLen   uint8
	Capability []ParameterCapabilityInterface
}

func NewOptionParameterCapability

func NewOptionParameterCapability(capability []ParameterCapabilityInterface) *OptionParameterCapability

func (*OptionParameterCapability) DecodeFromBytes

func (o *OptionParameterCapability) DecodeFromBytes(data []byte) error

func (*OptionParameterCapability) Serialize

func (o *OptionParameterCapability) Serialize() ([]byte, error)

type OptionParameterInterface

type OptionParameterInterface interface {
	Serialize() ([]byte, error)
}

type OptionParameterUnknown

type OptionParameterUnknown struct {
	ParamType uint8
	ParamLen  uint8
	Value     []byte
}

func (*OptionParameterUnknown) Serialize

func (o *OptionParameterUnknown) Serialize() ([]byte, error)

type ParameterCapabilityInterface

type ParameterCapabilityInterface interface {
	DecodeFromBytes([]byte) error
	Serialize() ([]byte, error)
	Len() int
	Code() BGPCapabilityCode
}

func DecodeCapability

func DecodeCapability(data []byte) (ParameterCapabilityInterface, error)

type PathAttribute

type PathAttribute struct {
	Flags  BGPAttrFlag
	Type   BGPAttrType
	Length uint16
	Value  []byte
}

func (*PathAttribute) DecodeFromBytes

func (p *PathAttribute) DecodeFromBytes(data []byte) error

func (*PathAttribute) GetType

func (p *PathAttribute) GetType() BGPAttrType

func (*PathAttribute) Len

func (p *PathAttribute) Len() int

func (*PathAttribute) MarshalJSON

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

func (*PathAttribute) Serialize

func (p *PathAttribute) Serialize() ([]byte, error)

func (*PathAttribute) String

func (p *PathAttribute) String() string

type PathAttributeAggregator

type PathAttributeAggregator struct {
	PathAttribute
	Value PathAttributeAggregatorParam
}

func NewPathAttributeAggregator

func NewPathAttributeAggregator(as interface{}, address string) *PathAttributeAggregator

func (*PathAttributeAggregator) DecodeFromBytes

func (p *PathAttributeAggregator) DecodeFromBytes(data []byte) error

func (*PathAttributeAggregator) MarshalJSON

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

func (*PathAttributeAggregator) Serialize

func (p *PathAttributeAggregator) Serialize() ([]byte, error)

func (*PathAttributeAggregator) String

func (p *PathAttributeAggregator) String() string

type PathAttributeAggregatorParam

type PathAttributeAggregatorParam struct {
	AS uint32

	Address net.IP
	// contains filtered or unexported fields
}

type PathAttributeAigp

type PathAttributeAigp struct {
	PathAttribute
	Values []AigpTLV
}

func NewPathAttributeAigp

func NewPathAttributeAigp(values []AigpTLV) *PathAttributeAigp

func (*PathAttributeAigp) DecodeFromBytes

func (p *PathAttributeAigp) DecodeFromBytes(data []byte) error

func (*PathAttributeAigp) MarshalJSON

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

func (*PathAttributeAigp) Serialize

func (p *PathAttributeAigp) Serialize() ([]byte, error)

func (*PathAttributeAigp) String

func (p *PathAttributeAigp) String() string

type PathAttributeAs4Aggregator

type PathAttributeAs4Aggregator struct {
	PathAttribute
	Value PathAttributeAggregatorParam
}

func NewPathAttributeAs4Aggregator

func NewPathAttributeAs4Aggregator(as uint32, address string) *PathAttributeAs4Aggregator

func (*PathAttributeAs4Aggregator) DecodeFromBytes

func (p *PathAttributeAs4Aggregator) DecodeFromBytes(data []byte) error

func (*PathAttributeAs4Aggregator) Serialize

func (p *PathAttributeAs4Aggregator) Serialize() ([]byte, error)

type PathAttributeAs4Path

type PathAttributeAs4Path struct {
	PathAttribute
	Value []*As4PathParam
	DefaultAsPath
}

func NewPathAttributeAs4Path

func NewPathAttributeAs4Path(value []*As4PathParam) *PathAttributeAs4Path

func (*PathAttributeAs4Path) DecodeFromBytes

func (p *PathAttributeAs4Path) DecodeFromBytes(data []byte) error

func (*PathAttributeAs4Path) Serialize

func (p *PathAttributeAs4Path) Serialize() ([]byte, error)

func (*PathAttributeAs4Path) String

func (p *PathAttributeAs4Path) String() string

type PathAttributeAsPath

type PathAttributeAsPath struct {
	DefaultAsPath
	PathAttribute
	Value []AsPathParamInterface
}

func NewPathAttributeAsPath

func NewPathAttributeAsPath(value []AsPathParamInterface) *PathAttributeAsPath

func (*PathAttributeAsPath) DecodeFromBytes

func (p *PathAttributeAsPath) DecodeFromBytes(data []byte) error

func (*PathAttributeAsPath) MarshalJSON

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

func (*PathAttributeAsPath) Serialize

func (p *PathAttributeAsPath) Serialize() ([]byte, error)

func (*PathAttributeAsPath) String

func (p *PathAttributeAsPath) String() string

type PathAttributeAtomicAggregate

type PathAttributeAtomicAggregate struct {
	PathAttribute
}

func NewPathAttributeAtomicAggregate

func NewPathAttributeAtomicAggregate() *PathAttributeAtomicAggregate

func (*PathAttributeAtomicAggregate) MarshalJSON

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

func (*PathAttributeAtomicAggregate) String

type PathAttributeClusterList

type PathAttributeClusterList struct {
	PathAttribute
	Value []net.IP
}

func NewPathAttributeClusterList

func NewPathAttributeClusterList(value []string) *PathAttributeClusterList

func (*PathAttributeClusterList) DecodeFromBytes

func (p *PathAttributeClusterList) DecodeFromBytes(data []byte) error

func (*PathAttributeClusterList) MarshalJSON

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

func (*PathAttributeClusterList) Serialize

func (p *PathAttributeClusterList) Serialize() ([]byte, error)

func (*PathAttributeClusterList) String

func (p *PathAttributeClusterList) String() string

type PathAttributeCommunities

type PathAttributeCommunities struct {
	PathAttribute
	Value []uint32
}

func NewPathAttributeCommunities

func NewPathAttributeCommunities(value []uint32) *PathAttributeCommunities

func (*PathAttributeCommunities) DecodeFromBytes

func (p *PathAttributeCommunities) DecodeFromBytes(data []byte) error

func (*PathAttributeCommunities) MarshalJSON

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

func (*PathAttributeCommunities) Serialize

func (p *PathAttributeCommunities) Serialize() ([]byte, error)

func (*PathAttributeCommunities) String

func (p *PathAttributeCommunities) String() string

type PathAttributeExtendedCommunities

type PathAttributeExtendedCommunities struct {
	PathAttribute
	Value []ExtendedCommunityInterface
}

func (*PathAttributeExtendedCommunities) DecodeFromBytes

func (p *PathAttributeExtendedCommunities) DecodeFromBytes(data []byte) error

func (*PathAttributeExtendedCommunities) MarshalJSON

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

func (*PathAttributeExtendedCommunities) Serialize

func (p *PathAttributeExtendedCommunities) Serialize() ([]byte, error)

func (*PathAttributeExtendedCommunities) String

type PathAttributeInterface

type PathAttributeInterface interface {
	DecodeFromBytes([]byte) error
	Serialize() ([]byte, error)
	Len() int

	GetType() BGPAttrType
	String() string
	MarshalJSON() ([]byte, error)
	// contains filtered or unexported methods
}

func GetPathAttribute

func GetPathAttribute(data []byte) (PathAttributeInterface, error)

type PathAttributeLocalPref

type PathAttributeLocalPref struct {
	PathAttribute
	Value uint32
}

func NewPathAttributeLocalPref

func NewPathAttributeLocalPref(value uint32) *PathAttributeLocalPref

func (*PathAttributeLocalPref) DecodeFromBytes

func (p *PathAttributeLocalPref) DecodeFromBytes(data []byte) error

func (*PathAttributeLocalPref) MarshalJSON

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

func (*PathAttributeLocalPref) Serialize

func (p *PathAttributeLocalPref) Serialize() ([]byte, error)

func (*PathAttributeLocalPref) String

func (p *PathAttributeLocalPref) String() string

type PathAttributeMpReachNLRI

type PathAttributeMpReachNLRI struct {
	PathAttribute
	Nexthop          net.IP
	LinkLocalNexthop net.IP
	AFI              uint16
	SAFI             uint8
	Value            []AddrPrefixInterface
}

func NewPathAttributeMpReachNLRI

func NewPathAttributeMpReachNLRI(nexthop string, nlri []AddrPrefixInterface) *PathAttributeMpReachNLRI

func (*PathAttributeMpReachNLRI) DecodeFromBytes

func (p *PathAttributeMpReachNLRI) DecodeFromBytes(data []byte) error

func (*PathAttributeMpReachNLRI) MarshalJSON

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

func (*PathAttributeMpReachNLRI) Serialize

func (p *PathAttributeMpReachNLRI) Serialize() ([]byte, error)

type PathAttributeMpUnreachNLRI

type PathAttributeMpUnreachNLRI struct {
	PathAttribute
	AFI   uint16
	SAFI  uint8
	Value []AddrPrefixInterface
}

func NewPathAttributeMpUnreachNLRI

func NewPathAttributeMpUnreachNLRI(nlri []AddrPrefixInterface) *PathAttributeMpUnreachNLRI

func (*PathAttributeMpUnreachNLRI) DecodeFromBytes

func (p *PathAttributeMpUnreachNLRI) DecodeFromBytes(data []byte) error

func (*PathAttributeMpUnreachNLRI) Serialize

func (p *PathAttributeMpUnreachNLRI) Serialize() ([]byte, error)

type PathAttributeMultiExitDisc

type PathAttributeMultiExitDisc struct {
	PathAttribute
	Value uint32
}

func NewPathAttributeMultiExitDisc

func NewPathAttributeMultiExitDisc(value uint32) *PathAttributeMultiExitDisc

func (*PathAttributeMultiExitDisc) DecodeFromBytes

func (p *PathAttributeMultiExitDisc) DecodeFromBytes(data []byte) error

func (*PathAttributeMultiExitDisc) MarshalJSON

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

func (*PathAttributeMultiExitDisc) Serialize

func (p *PathAttributeMultiExitDisc) Serialize() ([]byte, error)

func (*PathAttributeMultiExitDisc) String

func (p *PathAttributeMultiExitDisc) String() string

type PathAttributeNextHop

type PathAttributeNextHop struct {
	PathAttribute
	Value net.IP
}

func NewPathAttributeNextHop

func NewPathAttributeNextHop(value string) *PathAttributeNextHop

func (*PathAttributeNextHop) DecodeFromBytes

func (p *PathAttributeNextHop) DecodeFromBytes(data []byte) error

func (*PathAttributeNextHop) MarshalJSON

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

func (*PathAttributeNextHop) Serialize

func (p *PathAttributeNextHop) Serialize() ([]byte, error)

func (*PathAttributeNextHop) String

func (p *PathAttributeNextHop) String() string

type PathAttributeOrigin

type PathAttributeOrigin struct {
	PathAttribute
}

func NewPathAttributeOrigin

func NewPathAttributeOrigin(value uint8) *PathAttributeOrigin

func (*PathAttributeOrigin) MarshalJSON

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

func (*PathAttributeOrigin) String

func (p *PathAttributeOrigin) String() string

type PathAttributeOriginatorId

type PathAttributeOriginatorId struct {
	PathAttribute
	Value net.IP
}

func NewPathAttributeOriginatorId

func NewPathAttributeOriginatorId(value string) *PathAttributeOriginatorId

func (*PathAttributeOriginatorId) DecodeFromBytes

func (p *PathAttributeOriginatorId) DecodeFromBytes(data []byte) error

func (*PathAttributeOriginatorId) MarshalJSON

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

func (*PathAttributeOriginatorId) Serialize

func (p *PathAttributeOriginatorId) Serialize() ([]byte, error)

func (*PathAttributeOriginatorId) String

func (p *PathAttributeOriginatorId) String() string

type PathAttributePmsiTunnel

type PathAttributePmsiTunnel struct {
	PathAttribute
	IsLeafInfoRequired bool
	TunnelType         PmsiTunnelType
	Label              uint32
	TunnelID           PmsiTunnelIDInterface
}

func NewPathAttributePmsiTunnel

func NewPathAttributePmsiTunnel(typ PmsiTunnelType, isLeafInfoRequired bool, label uint32, id PmsiTunnelIDInterface) *PathAttributePmsiTunnel

func (*PathAttributePmsiTunnel) DecodeFromBytes

func (p *PathAttributePmsiTunnel) DecodeFromBytes(data []byte) error

func (*PathAttributePmsiTunnel) MarshalJSON

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

func (*PathAttributePmsiTunnel) Serialize

func (p *PathAttributePmsiTunnel) Serialize() ([]byte, error)

func (*PathAttributePmsiTunnel) String

func (p *PathAttributePmsiTunnel) String() string

type PathAttributeTunnelEncap

type PathAttributeTunnelEncap struct {
	PathAttribute
	Value []*TunnelEncapTLV
}

func NewPathAttributeTunnelEncap

func NewPathAttributeTunnelEncap(value []*TunnelEncapTLV) *PathAttributeTunnelEncap

func (*PathAttributeTunnelEncap) DecodeFromBytes

func (p *PathAttributeTunnelEncap) DecodeFromBytes(data []byte) error

func (*PathAttributeTunnelEncap) Serialize

func (p *PathAttributeTunnelEncap) Serialize() ([]byte, error)

type PathAttributeUnknown

type PathAttributeUnknown struct {
	PathAttribute
}

type Peer

type Peer struct {
	Type      uint8
	BgpId     net.IP
	IpAddress net.IP
	AS        uint32
}

func NewPeer

func NewPeer(bgpid string, ipaddr string, asn uint32, isAS4 bool) *Peer

func (*Peer) DecodeFromBytes

func (p *Peer) DecodeFromBytes(data []byte) ([]byte, error)

func (*Peer) Serialize

func (p *Peer) Serialize() ([]byte, error)

func (*Peer) String

func (p *Peer) String() string

type PeerIndexTable

type PeerIndexTable struct {
	CollectorBgpId net.IP
	ViewName       string
	Peers          []*Peer
}

func NewPeerIndexTable

func NewPeerIndexTable(bgpid string, viewname string, peers []*Peer) *PeerIndexTable

func (*PeerIndexTable) DecodeFromBytes

func (t *PeerIndexTable) DecodeFromBytes(data []byte) error

func (*PeerIndexTable) Serialize

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

func (*PeerIndexTable) String

func (t *PeerIndexTable) String() string

type PmsiTunnelIDInterface

type PmsiTunnelIDInterface interface {
	Serialize() ([]byte, error)
	String() string
}

type PmsiTunnelType

type PmsiTunnelType uint8
const (
	PMSI_TUNNEL_TYPE_NO_TUNNEL      PmsiTunnelType = 0
	PMSI_TUNNEL_TYPE_RSVP_TE_P2MP   PmsiTunnelType = 1
	PMSI_TUNNEL_TYPE_MLDP_P2MP      PmsiTunnelType = 2
	PMSI_TUNNEL_TYPE_PIM_SSM_TREE   PmsiTunnelType = 3
	PMSI_TUNNEL_TYPE_PIM_SM_TREE    PmsiTunnelType = 4
	PMSI_TUNNEL_TYPE_BIDIR_PIM_TREE PmsiTunnelType = 5
	PMSI_TUNNEL_TYPE_INGRESS_REPL   PmsiTunnelType = 6
	PMSI_TUNNEL_TYPE_MLDP_MP2MP     PmsiTunnelType = 7
)

func (PmsiTunnelType) String

func (p PmsiTunnelType) String() string

type Protocol

type Protocol int

partially taken from http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

func (Protocol) String

func (p Protocol) String() string

type RTRCacheReset

type RTRCacheReset struct {
	RTRReset
}

type RTRCacheResponse

type RTRCacheResponse struct {
	Version   uint8
	Type      uint8
	SessionID uint16
	Len       uint32
}

func (*RTRCacheResponse) DecodeFromBytes

func (m *RTRCacheResponse) DecodeFromBytes(data []byte) error

func (*RTRCacheResponse) Serialize

func (m *RTRCacheResponse) Serialize() ([]byte, error)

type RTRCommon

type RTRCommon struct {
	Version      uint8
	Type         uint8
	SessionID    uint16
	Len          uint32
	SerialNumber uint32
}

func (*RTRCommon) DecodeFromBytes

func (m *RTRCommon) DecodeFromBytes(data []byte) error

func (*RTRCommon) Serialize

func (m *RTRCommon) Serialize() ([]byte, error)

type RTREndOfData

type RTREndOfData struct {
	RTRCommon
}

type RTRErrorReport

type RTRErrorReport struct {
	Version   uint8
	Type      uint8
	SessionID uint16
	Len       uint32
	PDULen    uint32
	PDU       []byte
	TextLen   uint32
	Text      []byte
}

func (*RTRErrorReport) DecodeFromBytes

func (m *RTRErrorReport) DecodeFromBytes(data []byte) error

func (*RTRErrorReport) Serialize

func (m *RTRErrorReport) Serialize() ([]byte, error)

type RTRIPPrefix

type RTRIPPrefix struct {
	Version   uint8
	Type      uint8
	SessionID uint16
	Len       uint32
	Flags     uint8
	PrefixLen uint8
	MaxLen    uint8
	Prefix    net.IP
	AS        uint32
}

func (*RTRIPPrefix) DecodeFromBytes

func (m *RTRIPPrefix) DecodeFromBytes(data []byte) error

func (*RTRIPPrefix) Serialize

func (m *RTRIPPrefix) Serialize() ([]byte, error)

type RTRMessage

type RTRMessage interface {
	DecodeFromBytes([]byte) error
	Serialize() ([]byte, error)
}

func ParseRTR

func ParseRTR(data []byte) (RTRMessage, error)

type RTRReset

type RTRReset struct {
	Version uint8
	Type    uint8
	Len     uint32
}

func (*RTRReset) DecodeFromBytes

func (m *RTRReset) DecodeFromBytes(data []byte) error

func (*RTRReset) Serialize

func (m *RTRReset) Serialize() ([]byte, error)

type RTRResetQuery

type RTRResetQuery struct {
	RTRReset
}

func NewRTRResetQuery

func NewRTRResetQuery() *RTRResetQuery

func (*RTRResetQuery) Serialize

func (m *RTRResetQuery) Serialize() ([]byte, error)

type RTRSerialNotify

type RTRSerialNotify struct {
	RTRCommon
}

type RTRSerialQuery

type RTRSerialQuery struct {
	RTRCommon
}

type RedirectFourOctetAsSpecificExtended

type RedirectFourOctetAsSpecificExtended struct {
	FourOctetAsSpecificExtended
}

func NewRedirectFourOctetAsSpecificExtended

func NewRedirectFourOctetAsSpecificExtended(as uint32, localAdmin uint16) *RedirectFourOctetAsSpecificExtended

func (*RedirectFourOctetAsSpecificExtended) GetTypes

func (*RedirectFourOctetAsSpecificExtended) MarshalJSON

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

func (*RedirectFourOctetAsSpecificExtended) Serialize

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

func (*RedirectFourOctetAsSpecificExtended) String

type RedirectIPv4AddressSpecificExtended

type RedirectIPv4AddressSpecificExtended struct {
	IPv4AddressSpecificExtended
}

func NewRedirectIPv4AddressSpecificExtended

func NewRedirectIPv4AddressSpecificExtended(ipv4 string, localAdmin uint16) *RedirectIPv4AddressSpecificExtended

func (*RedirectIPv4AddressSpecificExtended) GetTypes

func (*RedirectIPv4AddressSpecificExtended) MarshalJSON

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

func (*RedirectIPv4AddressSpecificExtended) Serialize

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

func (*RedirectIPv4AddressSpecificExtended) String

type RedirectTwoOctetAsSpecificExtended

type RedirectTwoOctetAsSpecificExtended struct {
	TwoOctetAsSpecificExtended
}

func NewRedirectTwoOctetAsSpecificExtended

func NewRedirectTwoOctetAsSpecificExtended(as uint16, localAdmin uint32) *RedirectTwoOctetAsSpecificExtended

func (*RedirectTwoOctetAsSpecificExtended) GetTypes

func (*RedirectTwoOctetAsSpecificExtended) MarshalJSON

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

func (*RedirectTwoOctetAsSpecificExtended) Serialize

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

func (*RedirectTwoOctetAsSpecificExtended) String

type Rib

type Rib struct {
	SequenceNumber uint32
	Prefix         AddrPrefixInterface
	Entries        []*RibEntry
	RouteFamily    RouteFamily
}

func NewRib

func NewRib(seq uint32, prefix AddrPrefixInterface, entries []*RibEntry) *Rib

func (*Rib) DecodeFromBytes

func (u *Rib) DecodeFromBytes(data []byte) error

func (*Rib) Serialize

func (u *Rib) Serialize() ([]byte, error)

func (*Rib) String

func (u *Rib) String() string

type RibEntry

type RibEntry struct {
	PeerIndex      uint16
	OriginatedTime uint32
	PathAttributes []PathAttributeInterface
}

func NewRibEntry

func NewRibEntry(index uint16, time uint32, pathattrs []PathAttributeInterface) *RibEntry

func (*RibEntry) DecodeFromBytes

func (e *RibEntry) DecodeFromBytes(data []byte) ([]byte, error)

func (*RibEntry) Serialize

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

func (*RibEntry) String

func (e *RibEntry) String() string

type RouteDistinguisherFourOctetAS

type RouteDistinguisherFourOctetAS struct {
	DefaultRouteDistinguisher
	Admin    uint32
	Assigned uint16
}

func NewRouteDistinguisherFourOctetAS

func NewRouteDistinguisherFourOctetAS(admin uint32, assigned uint16) *RouteDistinguisherFourOctetAS

func (*RouteDistinguisherFourOctetAS) MarshalJSON

func (rd *RouteDistinguisherFourOctetAS) MarshalJSON() ([]byte, error)

func (*RouteDistinguisherFourOctetAS) Serialize

func (rd *RouteDistinguisherFourOctetAS) Serialize() ([]byte, error)

func (*RouteDistinguisherFourOctetAS) String

type RouteDistinguisherIPAddressAS

type RouteDistinguisherIPAddressAS struct {
	DefaultRouteDistinguisher
	Admin    net.IP
	Assigned uint16
}

func NewRouteDistinguisherIPAddressAS

func NewRouteDistinguisherIPAddressAS(admin string, assigned uint16) *RouteDistinguisherIPAddressAS

func (*RouteDistinguisherIPAddressAS) MarshalJSON

func (rd *RouteDistinguisherIPAddressAS) MarshalJSON() ([]byte, error)

func (*RouteDistinguisherIPAddressAS) Serialize

func (rd *RouteDistinguisherIPAddressAS) Serialize() ([]byte, error)

func (*RouteDistinguisherIPAddressAS) String

type RouteDistinguisherInterface

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

func GetRouteDistinguisher

func GetRouteDistinguisher(data []byte) RouteDistinguisherInterface

func ParseRouteDistinguisher

func ParseRouteDistinguisher(rd string) (RouteDistinguisherInterface, error)

type RouteDistinguisherTwoOctetAS

type RouteDistinguisherTwoOctetAS struct {
	DefaultRouteDistinguisher
	Admin    uint16
	Assigned uint32
}

func NewRouteDistinguisherTwoOctetAS

func NewRouteDistinguisherTwoOctetAS(admin uint16, assigned uint32) *RouteDistinguisherTwoOctetAS

func (*RouteDistinguisherTwoOctetAS) MarshalJSON

func (rd *RouteDistinguisherTwoOctetAS) MarshalJSON() ([]byte, error)

func (*RouteDistinguisherTwoOctetAS) Serialize

func (rd *RouteDistinguisherTwoOctetAS) Serialize() ([]byte, error)

func (*RouteDistinguisherTwoOctetAS) String

func (rd *RouteDistinguisherTwoOctetAS) String() string

type RouteDistinguisherUnknown

type RouteDistinguisherUnknown struct {
	DefaultRouteDistinguisher
}

type RouteFamily

type RouteFamily int
const (
	RF_IPv4_UC     RouteFamily = AFI_IP<<16 | SAFI_UNICAST
	RF_IPv6_UC     RouteFamily = AFI_IP6<<16 | SAFI_UNICAST
	RF_IPv4_MC     RouteFamily = AFI_IP<<16 | SAFI_MULTICAST
	RF_IPv6_MC     RouteFamily = AFI_IP6<<16 | SAFI_MULTICAST
	RF_IPv4_VPN    RouteFamily = AFI_IP<<16 | SAFI_MPLS_VPN
	RF_IPv6_VPN    RouteFamily = AFI_IP6<<16 | SAFI_MPLS_VPN
	RF_IPv4_VPN_MC RouteFamily = AFI_IP<<16 | SAFI_MPLS_VPN_MULTICAST
	RF_IPv6_VPN_MC RouteFamily = AFI_IP6<<16 | SAFI_MPLS_VPN_MULTICAST
	RF_IPv4_MPLS   RouteFamily = AFI_IP<<16 | SAFI_MPLS_LABEL
	RF_IPv6_MPLS   RouteFamily = AFI_IP6<<16 | SAFI_MPLS_LABEL
	RF_VPLS        RouteFamily = AFI_L2VPN<<16 | SAFI_VPLS
	RF_EVPN        RouteFamily = AFI_L2VPN<<16 | SAFI_EVPN
	RF_RTC_UC      RouteFamily = AFI_IP<<16 | SAFI_ROUTE_TARGET_CONSTRTAINS
	RF_ENCAP       RouteFamily = AFI_IP<<16 | SAFI_ENCAPSULATION
	RF_FS_IPv4_UC  RouteFamily = AFI_IP<<16 | SAFI_FLOW_SPEC_UNICAST
	RF_FS_IPv4_VPN RouteFamily = AFI_IP<<16 | SAFI_FLOW_SPEC_VPN
	RF_FS_IPv6_UC  RouteFamily = AFI_IP6<<16 | SAFI_FLOW_SPEC_UNICAST
	RF_FS_IPv6_VPN RouteFamily = AFI_IP6<<16 | SAFI_FLOW_SPEC_VPN
)

func AfiSafiToRouteFamily

func AfiSafiToRouteFamily(afi uint16, safi uint8) RouteFamily

func GetRouteFamily

func GetRouteFamily(name string) (RouteFamily, error)

func (RouteFamily) String

func (i RouteFamily) String() string

type RouteTargetMembershipNLRI

type RouteTargetMembershipNLRI struct {
	Length      uint8
	AS          uint32
	RouteTarget ExtendedCommunityInterface
}

func NewRouteTargetMembershipNLRI

func NewRouteTargetMembershipNLRI(as uint32, target ExtendedCommunityInterface) *RouteTargetMembershipNLRI

func (*RouteTargetMembershipNLRI) AFI

func (*RouteTargetMembershipNLRI) DecodeFromBytes

func (n *RouteTargetMembershipNLRI) DecodeFromBytes(data []byte) error

func (*RouteTargetMembershipNLRI) Len

func (n *RouteTargetMembershipNLRI) Len() int

func (*RouteTargetMembershipNLRI) MarshalJSON

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

func (*RouteTargetMembershipNLRI) SAFI

func (n *RouteTargetMembershipNLRI) SAFI() uint8

func (*RouteTargetMembershipNLRI) Serialize

func (n *RouteTargetMembershipNLRI) Serialize() ([]byte, error)

func (*RouteTargetMembershipNLRI) String

func (n *RouteTargetMembershipNLRI) String() string

type TCPFlag

type TCPFlag int

func (TCPFlag) String

func (f TCPFlag) String() string

type TrafficActionExtended

type TrafficActionExtended struct {
	Terminal bool
	Sample   bool
}

func NewTrafficActionExtended

func NewTrafficActionExtended(terminal bool, sample bool) *TrafficActionExtended

func (*TrafficActionExtended) GetTypes

func (*TrafficActionExtended) MarshalJSON

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

func (*TrafficActionExtended) Serialize

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

func (*TrafficActionExtended) String

func (e *TrafficActionExtended) String() string

type TrafficRateExtended

type TrafficRateExtended struct {
	AS   uint16
	Rate float32
}

func NewTrafficRateExtended

func NewTrafficRateExtended(as uint16, rate float32) *TrafficRateExtended

func (*TrafficRateExtended) GetTypes

func (*TrafficRateExtended) MarshalJSON

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

func (*TrafficRateExtended) Serialize

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

func (*TrafficRateExtended) String

func (e *TrafficRateExtended) String() string

type TrafficRemarkExtended

type TrafficRemarkExtended struct {
	DSCP uint8
}

func NewTrafficRemarkExtended

func NewTrafficRemarkExtended(dscp uint8) *TrafficRemarkExtended

func (*TrafficRemarkExtended) GetTypes

func (*TrafficRemarkExtended) MarshalJSON

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

func (*TrafficRemarkExtended) Serialize

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

func (*TrafficRemarkExtended) String

func (e *TrafficRemarkExtended) String() string

type TunnelEncapSubTLV

type TunnelEncapSubTLV struct {
	Type  EncapSubTLVType
	Len   int
	Value TunnelEncapSubTLVValue
}

func (*TunnelEncapSubTLV) DecodeFromBytes

func (p *TunnelEncapSubTLV) DecodeFromBytes(data []byte) error

func (*TunnelEncapSubTLV) Serialize

func (p *TunnelEncapSubTLV) Serialize() ([]byte, error)

type TunnelEncapSubTLVColor

type TunnelEncapSubTLVColor struct {
	Color uint32
}

func (*TunnelEncapSubTLVColor) Serialize

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

type TunnelEncapSubTLVDefault

type TunnelEncapSubTLVDefault struct {
	Value []byte
}

func (*TunnelEncapSubTLVDefault) Serialize

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

type TunnelEncapSubTLVEncapuslation

type TunnelEncapSubTLVEncapuslation struct {
	Key    uint32 // this represent both SessionID for L2TPv3 case and GRE-key for GRE case (RFC5512 4.)
	Cookie []byte
}

func (*TunnelEncapSubTLVEncapuslation) Serialize

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

type TunnelEncapSubTLVProtocol

type TunnelEncapSubTLVProtocol struct {
	Protocol uint16
}

func (*TunnelEncapSubTLVProtocol) Serialize

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

type TunnelEncapSubTLVValue

type TunnelEncapSubTLVValue interface {
	Serialize() ([]byte, error)
}

type TunnelEncapTLV

type TunnelEncapTLV struct {
	Type  TunnelType
	Len   int
	Value []*TunnelEncapSubTLV
}

func (*TunnelEncapTLV) DecodeFromBytes

func (t *TunnelEncapTLV) DecodeFromBytes(data []byte) error

func (*TunnelEncapTLV) Serialize

func (p *TunnelEncapTLV) Serialize() ([]byte, error)

type TunnelType

type TunnelType uint16
const (
	TUNNEL_TYPE_L2TP3       TunnelType = 1
	TUNNEL_TYPE_GRE         TunnelType = 2
	TUNNEL_TYPE_IP_IN_IP    TunnelType = 7
	TUNNEL_TYPE_VXLAN       TunnelType = 8
	TUNNEL_TYPE_NVGRE       TunnelType = 9
	TUNNEL_TYPE_MPLS        TunnelType = 10
	TUNNEL_TYPE_MPLS_IN_GRE TunnelType = 11
	TUNNEL_TYPE_VXLAN_GRE   TunnelType = 12
)

type TwoOctetAsSpecificExtended

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

func NewTwoOctetAsSpecificExtended

func NewTwoOctetAsSpecificExtended(subtype ExtendedCommunityAttrSubType, as uint16, localAdmin uint32, isTransitive bool) *TwoOctetAsSpecificExtended

func (*TwoOctetAsSpecificExtended) GetTypes

func (*TwoOctetAsSpecificExtended) MarshalJSON

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

func (*TwoOctetAsSpecificExtended) Serialize

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

func (*TwoOctetAsSpecificExtended) String

func (e *TwoOctetAsSpecificExtended) String() string

type UnknownExtended

type UnknownExtended struct {
	Type  ExtendedCommunityAttrType
	Value []byte
}

func (*UnknownExtended) GetTypes

func (*UnknownExtended) MarshalJSON

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

func (*UnknownExtended) Serialize

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

func (*UnknownExtended) String

func (e *UnknownExtended) String() string

type WellKnownCommunity

type WellKnownCommunity uint32

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL