summaryrefslogtreecommitdiffhomepage
path: root/api/attribute.proto
diff options
context:
space:
mode:
Diffstat (limited to 'api/attribute.proto')
-rw-r--r--api/attribute.proto734
1 files changed, 365 insertions, 369 deletions
diff --git a/api/attribute.proto b/api/attribute.proto
index 11f075f1..acbffdf0 100644
--- a/api/attribute.proto
+++ b/api/attribute.proto
@@ -26,233 +26,214 @@ import "gobgp.proto";
package gobgpapi;
-message OriginAttribute {
- uint32 origin = 1;
-}
+message OriginAttribute { uint32 origin = 1; }
message AsSegment {
- uint32 type = 1;
- repeated uint32 numbers = 2;
+ uint32 type = 1;
+ repeated uint32 numbers = 2;
}
-message AsPathAttribute {
- repeated AsSegment segments = 1;
-}
+message AsPathAttribute { repeated AsSegment segments = 1; }
-message NextHopAttribute {
- string next_hop = 1;
-}
+message NextHopAttribute { string next_hop = 1; }
-message MultiExitDiscAttribute {
- uint32 med = 1;
-}
+message MultiExitDiscAttribute { uint32 med = 1; }
-message LocalPrefAttribute {
- uint32 local_pref = 1;
-}
+message LocalPrefAttribute { uint32 local_pref = 1; }
-message AtomicAggregateAttribute {
-}
+message AtomicAggregateAttribute {}
message AggregatorAttribute {
- uint32 as = 2;
- string address = 3;
+ uint32 as = 2;
+ string address = 3;
}
-message CommunitiesAttribute {
- repeated uint32 communities = 1;
-}
+message CommunitiesAttribute { repeated uint32 communities = 1; }
-message OriginatorIdAttribute {
- string id = 1;
-}
+message OriginatorIdAttribute { string id = 1; }
-message ClusterListAttribute {
- repeated string ids = 1;
-}
+message ClusterListAttribute { repeated string ids = 1; }
// IPAddressPrefix represents the NLRI for:
// - AFI=1, SAFI=1
// - AFI=2, SAFI=1
message IPAddressPrefix {
- uint32 prefix_len = 1;
- string prefix = 2;
+ uint32 prefix_len = 1;
+ string prefix = 2;
}
// LabeledIPAddressPrefix represents the NLRI for:
// - AFI=1, SAFI=4
// - AFI=2, SAFI=4
message LabeledIPAddressPrefix {
- repeated uint32 labels = 1;
- uint32 prefix_len = 2;
- string prefix = 3;
+ repeated uint32 labels = 1;
+ uint32 prefix_len = 2;
+ string prefix = 3;
}
// EncapsulationNLRI represents the NLRI for:
// - AFI=1, SAFI=7
// - AFI=2, SAFI=7
-message EncapsulationNLRI {
- string address = 1;
-}
+message EncapsulationNLRI { string address = 1; }
message RouteDistinguisherTwoOctetAS {
- uint32 admin = 1;
- uint32 assigned = 2;
+ uint32 admin = 1;
+ uint32 assigned = 2;
}
message RouteDistinguisherIPAddress {
- string admin = 1;
- uint32 assigned = 2;
+ string admin = 1;
+ uint32 assigned = 2;
}
message RouteDistinguisherFourOctetAS {
- uint32 admin = 1;
- uint32 assigned = 2;
+ uint32 admin = 1;
+ uint32 assigned = 2;
}
message EthernetSegmentIdentifier {
- uint32 type = 1;
- bytes value = 2;
+ uint32 type = 1;
+ bytes value = 2;
}
// EVPNEthernetAutoDiscoveryRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=1
message EVPNEthernetAutoDiscoveryRoute {
- // One of:
- // - RouteDistinguisherTwoOctetAS
- // - RouteDistinguisherIPAddressAS
- // - RouteDistinguisherFourOctetAS
- google.protobuf.Any rd = 1;
- EthernetSegmentIdentifier esi = 2;
- uint32 ethernet_tag = 3;
- uint32 label = 4;
+ // One of:
+ // - RouteDistinguisherTwoOctetAS
+ // - RouteDistinguisherIPAddressAS
+ // - RouteDistinguisherFourOctetAS
+ google.protobuf.Any rd = 1;
+ EthernetSegmentIdentifier esi = 2;
+ uint32 ethernet_tag = 3;
+ uint32 label = 4;
}
// EVPNMACIPAdvertisementRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=2
message EVPNMACIPAdvertisementRoute {
- // One of:
- // - RouteDistinguisherTwoOctetAS
- // - RouteDistinguisherIPAddressAS
- // - RouteDistinguisherFourOctetAS
- google.protobuf.Any rd = 1;
- EthernetSegmentIdentifier esi = 2;
- uint32 ethernet_tag = 3;
- string mac_address = 4;
- string ip_address = 5;
- repeated uint32 labels = 6;
+ // One of:
+ // - RouteDistinguisherTwoOctetAS
+ // - RouteDistinguisherIPAddressAS
+ // - RouteDistinguisherFourOctetAS
+ google.protobuf.Any rd = 1;
+ EthernetSegmentIdentifier esi = 2;
+ uint32 ethernet_tag = 3;
+ string mac_address = 4;
+ string ip_address = 5;
+ repeated uint32 labels = 6;
}
// EVPNInclusiveMulticastEthernetTagRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=3
message EVPNInclusiveMulticastEthernetTagRoute {
- // One of:
- // - RouteDistinguisherTwoOctetAS
- // - RouteDistinguisherIPAddressAS
- // - RouteDistinguisherFourOctetAS
- google.protobuf.Any rd = 1;
- uint32 ethernet_tag = 2;
- string ip_address = 3;
+ // One of:
+ // - RouteDistinguisherTwoOctetAS
+ // - RouteDistinguisherIPAddressAS
+ // - RouteDistinguisherFourOctetAS
+ google.protobuf.Any rd = 1;
+ uint32 ethernet_tag = 2;
+ string ip_address = 3;
}
// EVPNEthernetSegmentRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=4
message EVPNEthernetSegmentRoute {
- // One of:
- // - RouteDistinguisherTwoOctetAS
- // - RouteDistinguisherIPAddressAS
- // - RouteDistinguisherFourOctetAS
- google.protobuf.Any rd = 1;
- EthernetSegmentIdentifier esi = 2;
- string ip_address = 3;
+ // One of:
+ // - RouteDistinguisherTwoOctetAS
+ // - RouteDistinguisherIPAddressAS
+ // - RouteDistinguisherFourOctetAS
+ google.protobuf.Any rd = 1;
+ EthernetSegmentIdentifier esi = 2;
+ string ip_address = 3;
}
// EVPNIPPrefixRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=5
message EVPNIPPrefixRoute {
- // One of:
- // - RouteDistinguisherTwoOctetAS
- // - RouteDistinguisherIPAddressAS
- // - RouteDistinguisherFourOctetAS
- google.protobuf.Any rd = 1;
- EthernetSegmentIdentifier esi = 2;
- uint32 ethernet_tag = 3;
- string ip_prefix = 4;
- uint32 ip_prefix_len = 5;
- string gw_address = 6;
- uint32 label = 7;
+ // One of:
+ // - RouteDistinguisherTwoOctetAS
+ // - RouteDistinguisherIPAddressAS
+ // - RouteDistinguisherFourOctetAS
+ google.protobuf.Any rd = 1;
+ EthernetSegmentIdentifier esi = 2;
+ uint32 ethernet_tag = 3;
+ string ip_prefix = 4;
+ uint32 ip_prefix_len = 5;
+ string gw_address = 6;
+ uint32 label = 7;
}
// EVPNIPMSIRoute represents the NLRI for:
// - AFI=25, SAFI=70, RouteType=9
message EVPNIPMSIRoute {
- // One of:
- // - RouteDistinguisherTwoOctetAS
- // - RouteDistinguisherIPAddressAS
- // - RouteDistinguisherFourOctetAS
- google.protobuf.Any rd = 1;
- uint32 ethernet_tag = 2;
- google.protobuf.Any rt = 3;
+ // One of:
+ // - RouteDistinguisherTwoOctetAS
+ // - RouteDistinguisherIPAddressAS
+ // - RouteDistinguisherFourOctetAS
+ google.protobuf.Any rd = 1;
+ uint32 ethernet_tag = 2;
+ google.protobuf.Any rt = 3;
}
// LabeledVPNIPAddressPrefix represents the NLRI for:
// - AFI=1, SAFI=128
// - AFI=2, SAFI=128
message LabeledVPNIPAddressPrefix {
- repeated uint32 labels = 1;
- // One of:
- // - TwoOctetAsSpecificExtended
- // - IPv4AddressSpecificExtended
- // - FourOctetAsSpecificExtended
- google.protobuf.Any rd = 2;
- uint32 prefix_len = 3;
- string prefix = 4;
+ repeated uint32 labels = 1;
+ // One of:
+ // - TwoOctetAsSpecificExtended
+ // - IPv4AddressSpecificExtended
+ // - FourOctetAsSpecificExtended
+ google.protobuf.Any rd = 2;
+ uint32 prefix_len = 3;
+ string prefix = 4;
}
// RouteTargetMembershipNLRI represents the NLRI for:
// - AFI=1, SAFI=132
message RouteTargetMembershipNLRI {
- uint32 as = 1;
- // One of:
- // - TwoOctetAsSpecificExtended
- // - IPv4AddressSpecificExtended
- // - FourOctetAsSpecificExtended
- google.protobuf.Any rt = 2;
+ uint32 as = 1;
+ // One of:
+ // - TwoOctetAsSpecificExtended
+ // - IPv4AddressSpecificExtended
+ // - FourOctetAsSpecificExtended
+ google.protobuf.Any rt = 2;
}
message FlowSpecIPPrefix {
- uint32 type = 1;
- uint32 prefix_len = 2;
- string prefix = 3;
- // IPv6 only
- uint32 offset = 4;
+ uint32 type = 1;
+ uint32 prefix_len = 2;
+ string prefix = 3;
+ // IPv6 only
+ uint32 offset = 4;
}
message FlowSpecMAC {
- uint32 type = 1;
- string address = 2;
+ uint32 type = 1;
+ string address = 2;
}
message FlowSpecComponentItem {
- // Operator for Numeric type, Operand for Bitmask type
- uint32 op = 1;
- uint64 value = 2;
+ // Operator for Numeric type, Operand for Bitmask type
+ uint32 op = 1;
+ uint64 value = 2;
}
message FlowSpecComponent {
- uint32 type = 1;
- repeated FlowSpecComponentItem items = 2;
+ uint32 type = 1;
+ repeated FlowSpecComponentItem items = 2;
}
// FlowSpecNLRI represents the NLRI for:
// - AFI=1, SAFI=133
// - AFI=2, SAFI=133
message FlowSpecNLRI {
- // One of:
- // - FlowSpecIPPrefix
- // - FlowSpecMAC
- // - FlowSpecComponent
- repeated google.protobuf.Any rules = 1;
+ // One of:
+ // - FlowSpecIPPrefix
+ // - FlowSpecMAC
+ // - FlowSpecComponent
+ repeated google.protobuf.Any rules = 1;
}
// VPNFlowSpecNLRI represents the NLRI for:
@@ -260,399 +241,414 @@ message FlowSpecNLRI {
// - AFI=2, SAFI=134
// - AFI=25, SAFI=134
message VPNFlowSpecNLRI {
- // One of:
- // - RouteDistinguisherTwoOctetAS
- // - RouteDistinguisherIPAddressAS
- // - RouteDistinguisherFourOctetAS
- google.protobuf.Any rd = 1;
- // One of:
- // - FlowSpecIPPrefix
- // - FlowSpecMAC
- // - FlowSpecComponent
- repeated google.protobuf.Any rules = 2;
+ // One of:
+ // - RouteDistinguisherTwoOctetAS
+ // - RouteDistinguisherIPAddressAS
+ // - RouteDistinguisherFourOctetAS
+ google.protobuf.Any rd = 1;
+ // One of:
+ // - FlowSpecIPPrefix
+ // - FlowSpecMAC
+ // - FlowSpecComponent
+ repeated google.protobuf.Any rules = 2;
}
// OpaqueNLRI represents the NLRI for:
// - AFI=16397, SAFI=241
message OpaqueNLRI {
- bytes key = 1;
- bytes value = 2;
+ bytes key = 1;
+ bytes value = 2;
}
message LsNodeDescriptor {
- uint32 asn = 1;
- uint32 bgp_ls_id = 2;
- uint32 ospf_area_id = 3;
- bool pseudonode = 4;
- string igp_router_id = 5;
+ uint32 asn = 1;
+ uint32 bgp_ls_id = 2;
+ uint32 ospf_area_id = 3;
+ bool pseudonode = 4;
+ string igp_router_id = 5;
}
message LsLinkDescriptor {
- uint32 link_local_id = 1;
- uint32 link_remote_id = 2;
- string interface_addr_ipv4 = 3;
- string neighbor_addr_ipv4 = 4;
- string interface_addr_ipv6 = 5;
- string neighbor_addr_ipv6 = 6;
+ uint32 link_local_id = 1;
+ uint32 link_remote_id = 2;
+ string interface_addr_ipv4 = 3;
+ string neighbor_addr_ipv4 = 4;
+ string interface_addr_ipv6 = 5;
+ string neighbor_addr_ipv6 = 6;
}
message LsPrefixDescriptor {
- repeated string ip_reachability = 1;
- string ospf_route_type = 2;
+ repeated string ip_reachability = 1;
+ string ospf_route_type = 2;
}
-message LsNodeNLRI {
- LsNodeDescriptor local_node = 1;
-}
+message LsNodeNLRI { LsNodeDescriptor local_node = 1; }
message LsLinkNLRI {
- LsNodeDescriptor local_node = 1;
- LsNodeDescriptor remote_node = 2;
- LsLinkDescriptor link_descriptor = 3;
+ LsNodeDescriptor local_node = 1;
+ LsNodeDescriptor remote_node = 2;
+ LsLinkDescriptor link_descriptor = 3;
}
message LsPrefixV4NLRI {
- LsNodeDescriptor local_node = 1;
- LsPrefixDescriptor prefix_descriptor = 2;
+ LsNodeDescriptor local_node = 1;
+ LsPrefixDescriptor prefix_descriptor = 2;
}
message LsPrefixV6NLRI {
- LsNodeDescriptor local_node = 1;
- LsPrefixDescriptor prefix_descriptor = 2;
+ LsNodeDescriptor local_node = 1;
+ LsPrefixDescriptor prefix_descriptor = 2;
}
// Based om RFC 7752, Table 1.
enum LsNLRIType {
- LS_NLRI_UNKNOWN = 0;
- LS_NLRI_NODE = 1;
- LS_NLRI_LINK = 2;
- LS_NLRI_PREFIX_V4 = 3;
- LS_NLRI_PREFIX_V6 = 4;
+ LS_NLRI_UNKNOWN = 0;
+ LS_NLRI_NODE = 1;
+ LS_NLRI_LINK = 2;
+ LS_NLRI_PREFIX_V4 = 3;
+ LS_NLRI_PREFIX_V6 = 4;
}
// LsAddrPrefix represents the NLRI for:
// - AFI=16388, SAFI=71
message LsAddrPrefix {
- LsNLRIType type = 1;
- // One of:
- // - LsNodeNLRI
- // - LsLinkNLRI
- // - LsPrefixV4NLRI
- // - LsPrefixV6NLRI
- google.protobuf.Any nlri = 2;
+ LsNLRIType type = 1;
+ // One of:
+ // - LsNodeNLRI
+ // - LsLinkNLRI
+ // - LsPrefixV4NLRI
+ // - LsPrefixV6NLRI
+ google.protobuf.Any nlri = 2;
}
message MpReachNLRIAttribute {
- gobgpapi.Family family = 1;
- repeated string next_hops = 2;
- // Each NLRI must be one of:
- // - IPAddressPrefix
- // - LabeledIPAddressPrefix
- // - EncapsulationNLRI
- // - EVPNEthernetAutoDiscoveryRoute
- // - EVPNMACIPAdvertisementRoute
- // - EVPNInclusiveMulticastEthernetTagRoute
- // - EVPNEthernetSegmentRoute
- // - EVPNIPPrefixRoute
- // - EVPNIPMSIRoute
- // - LabeledVPNIPAddressPrefix
- // - RouteTargetMembershipNLRI
- // - FlowSpecNLRI
- // - VPNFlowSpecNLRI
- // - OpaqueNLRI
- // - LsAddrPrefix
- repeated google.protobuf.Any nlris = 3;
+ gobgpapi.Family family = 1;
+ repeated string next_hops = 2;
+ // Each NLRI must be one of:
+ // - IPAddressPrefix
+ // - LabeledIPAddressPrefix
+ // - EncapsulationNLRI
+ // - EVPNEthernetAutoDiscoveryRoute
+ // - EVPNMACIPAdvertisementRoute
+ // - EVPNInclusiveMulticastEthernetTagRoute
+ // - EVPNEthernetSegmentRoute
+ // - EVPNIPPrefixRoute
+ // - EVPNIPMSIRoute
+ // - LabeledVPNIPAddressPrefix
+ // - RouteTargetMembershipNLRI
+ // - FlowSpecNLRI
+ // - VPNFlowSpecNLRI
+ // - OpaqueNLRI
+ // - LsAddrPrefix
+ repeated google.protobuf.Any nlris = 3;
}
message MpUnreachNLRIAttribute {
- gobgpapi.Family family = 1;
- // The same as NLRI field of MpReachNLRIAttribute
- repeated google.protobuf.Any nlris = 3;
+ gobgpapi.Family family = 1;
+ // The same as NLRI field of MpReachNLRIAttribute
+ repeated google.protobuf.Any nlris = 3;
}
message TwoOctetAsSpecificExtended {
- bool is_transitive = 1;
- uint32 sub_type = 2;
- uint32 as = 3;
- uint32 local_admin = 4;
+ bool is_transitive = 1;
+ uint32 sub_type = 2;
+ uint32 as = 3;
+ uint32 local_admin = 4;
}
message IPv4AddressSpecificExtended {
- bool is_transitive = 1;
- uint32 sub_type = 2;
- string address = 3;
- uint32 local_admin = 4;
+ bool is_transitive = 1;
+ uint32 sub_type = 2;
+ string address = 3;
+ uint32 local_admin = 4;
}
message FourOctetAsSpecificExtended {
- bool is_transitive = 1;
- uint32 sub_type = 2;
- uint32 as = 3;
- uint32 local_admin = 4;
+ bool is_transitive = 1;
+ uint32 sub_type = 2;
+ uint32 as = 3;
+ uint32 local_admin = 4;
}
-message ValidationExtended {
- uint32 state = 1;
-}
+message ValidationExtended { uint32 state = 1; }
-message ColorExtended {
- uint32 color = 1;
-}
+message ColorExtended { uint32 color = 1; }
-message EncapExtended {
- uint32 tunnel_type = 1;
-}
+message EncapExtended { uint32 tunnel_type = 1; }
-message DefaultGatewayExtended {
-}
+message DefaultGatewayExtended {}
message OpaqueExtended {
- bool is_transitive = 1;
- bytes value = 3;
+ bool is_transitive = 1;
+ bytes value = 3;
}
message ESILabelExtended {
- bool is_single_active = 1;
- uint32 label = 2;
+ bool is_single_active = 1;
+ uint32 label = 2;
}
-message ESImportRouteTarget {
- string es_import = 1;
-}
+message ESImportRouteTarget { string es_import = 1; }
message MacMobilityExtended {
- bool is_sticky = 1;
- uint32 sequence_num = 2;
+ bool is_sticky = 1;
+ uint32 sequence_num = 2;
}
-message RouterMacExtended {
- string mac = 1;
-}
+message RouterMacExtended { string mac = 1; }
message TrafficRateExtended {
- uint32 as = 1;
- float rate = 2;
+ uint32 as = 1;
+ float rate = 2;
}
message TrafficActionExtended {
- bool terminal = 1;
- bool sample = 2;
+ bool terminal = 1;
+ bool sample = 2;
}
message RedirectTwoOctetAsSpecificExtended {
- uint32 as = 1;
- uint32 local_admin = 2;
+ uint32 as = 1;
+ uint32 local_admin = 2;
}
message RedirectIPv4AddressSpecificExtended {
- string address = 1;
- uint32 local_admin = 2;
+ string address = 1;
+ uint32 local_admin = 2;
}
message RedirectFourOctetAsSpecificExtended {
- uint32 as = 1;
- uint32 local_admin = 2;
+ uint32 as = 1;
+ uint32 local_admin = 2;
}
-message TrafficRemarkExtended {
- uint32 dscp = 1;
-}
+message TrafficRemarkExtended { uint32 dscp = 1; }
message UnknownExtended {
- uint32 type = 1;
- bytes value = 2;
+ uint32 type = 1;
+ bytes value = 2;
}
message ExtendedCommunitiesAttribute {
- // Each Community must be one of:
- // - TwoOctetAsSpecificExtended
- // - IPv4AddressSpecificExtended
- // - FourOctetAsSpecificExtended
- // - OpaqueExtended
- // - ESILabelExtended
- // - MacMobilityExtended
- // - RouterMacExtended
- // - TrafficRateExtended
- // - TrafficActionExtended
- // - RedirectTwoOctetAsSpecificExtended
- // - RedirectIPv4AddressSpecificExtended
- // - RedirectFourOctetAsSpecificExtended
- // - TrafficRemarkExtended
- // - UnknownExtended
- repeated google.protobuf.Any communities = 1;
-}
-
-message As4PathAttribute {
- repeated AsSegment segments = 1;
-}
+ // Each Community must be one of:
+ // - TwoOctetAsSpecificExtended
+ // - IPv4AddressSpecificExtended
+ // - FourOctetAsSpecificExtended
+ // - OpaqueExtended
+ // - ESILabelExtended
+ // - MacMobilityExtended
+ // - RouterMacExtended
+ // - TrafficRateExtended
+ // - TrafficActionExtended
+ // - RedirectTwoOctetAsSpecificExtended
+ // - RedirectIPv4AddressSpecificExtended
+ // - RedirectFourOctetAsSpecificExtended
+ // - TrafficRemarkExtended
+ // - UnknownExtended
+ repeated google.protobuf.Any communities = 1;
+}
+
+message As4PathAttribute { repeated AsSegment segments = 1; }
message As4AggregatorAttribute {
- uint32 as = 2;
- string address = 3;
+ uint32 as = 2;
+ string address = 3;
}
message PmsiTunnelAttribute {
- uint32 flags = 1;
- uint32 type = 2;
- uint32 label = 3;
- bytes id = 4;
+ uint32 flags = 1;
+ uint32 type = 2;
+ uint32 label = 3;
+ bytes id = 4;
}
message TunnelEncapSubTLVEncapsulation {
- uint32 key = 1;
- bytes cookie = 2;
+ uint32 key = 1;
+ bytes cookie = 2;
}
-message TunnelEncapSubTLVProtocol {
- uint32 protocol = 1;
-}
+message TunnelEncapSubTLVProtocol { uint32 protocol = 1; }
-message TunnelEncapSubTLVColor {
- uint32 color = 1;
-}
+message TunnelEncapSubTLVColor { uint32 color = 1; }
message TunnelEncapSubTLVUnknown {
- uint32 type = 1;
- bytes value = 2;
+ uint32 type = 1;
+ bytes value = 2;
}
message TunnelEncapTLV {
- uint32 type = 1;
- // Each TLV must be one of:
- // - TunnelEncapSubTLVEncapsulation
- // - TunnelEncapSubTLVProtocol
- // - TunnelEncapSubTLVColor
- // - TunnelEncapSubTLVUnknown
- repeated google.protobuf.Any tlvs = 2;
+ uint32 type = 1;
+ // Each TLV must be one of:
+ // - TunnelEncapSubTLVEncapsulation
+ // - TunnelEncapSubTLVProtocol
+ // - TunnelEncapSubTLVColor
+ // - TunnelEncapSubTLVUnknown
+ repeated google.protobuf.Any tlvs = 2;
}
-message TunnelEncapAttribute {
- repeated TunnelEncapTLV tlvs = 1;
-}
+message TunnelEncapAttribute { repeated TunnelEncapTLV tlvs = 1; }
message IPv6AddressSpecificExtended {
- bool is_transitive = 1;
- uint32 sub_type = 2;
- string address = 3;
- uint32 local_admin = 4;
+ bool is_transitive = 1;
+ uint32 sub_type = 2;
+ string address = 3;
+ uint32 local_admin = 4;
}
message RedirectIPv6AddressSpecificExtended {
- string address = 1;
- uint32 local_admin = 2;
+ string address = 1;
+ uint32 local_admin = 2;
}
message IP6ExtendedCommunitiesAttribute {
- // Each Community must be one of:
- // - IPv6AddressSpecificExtended
- // - RedirectIPv6AddressSpecificExtended
- repeated google.protobuf.Any communities = 1;
+ // Each Community must be one of:
+ // - IPv6AddressSpecificExtended
+ // - RedirectIPv6AddressSpecificExtended
+ repeated google.protobuf.Any communities = 1;
}
-message AigpTLVIGPMetric {
- uint64 metric = 1;
-}
+message AigpTLVIGPMetric { uint64 metric = 1; }
message AigpTLVUnknown {
- uint32 type = 1;
- bytes value = 2;
+ uint32 type = 1;
+ bytes value = 2;
}
message AigpAttribute {
- // Each TLV must be one of:
- // - AigpTLVIGPMetric
- // - AigpTLVUnknown
- repeated google.protobuf.Any tlvs = 1;
+ // Each TLV must be one of:
+ // - AigpTLVIGPMetric
+ // - AigpTLVUnknown
+ repeated google.protobuf.Any tlvs = 1;
}
message LargeCommunity {
- uint32 global_admin = 1;
- uint32 local_data1 = 2;
- uint32 local_data2 = 3;
+ uint32 global_admin = 1;
+ uint32 local_data1 = 2;
+ uint32 local_data2 = 3;
}
-message LargeCommunitiesAttribute {
- repeated LargeCommunity communities = 1;
-}
+message LargeCommunitiesAttribute { repeated LargeCommunity communities = 1; }
message LsNodeFlags {
- bool overload = 1;
- bool attached = 2;
- bool external = 3;
- bool abr = 4;
- bool router = 5;
- bool v6 = 6;
+ bool overload = 1;
+ bool attached = 2;
+ bool external = 3;
+ bool abr = 4;
+ bool router = 5;
+ bool v6 = 6;
}
message LsIGPFlags {
- bool down = 1;
- bool no_unicast = 2;
- bool local_address = 3;
- bool propagate_nssa = 4;
+ bool down = 1;
+ bool no_unicast = 2;
+ bool local_address = 3;
+ bool propagate_nssa = 4;
}
message LsSrRange {
- uint32 begin = 1;
- uint32 end = 2;
+ uint32 begin = 1;
+ uint32 end = 2;
}
message LsSrCapabilities {
- bool ipv4_supported = 1;
- bool ipv6_supported = 2;
- repeated LsSrRange ranges = 3;
+ bool ipv4_supported = 1;
+ bool ipv6_supported = 2;
+ repeated LsSrRange ranges = 3;
}
-message LsSrLocalBlock {
- repeated LsSrRange ranges = 1;
-}
+message LsSrLocalBlock { repeated LsSrRange ranges = 1; }
message LsAttributeNode {
- string name = 1;
- LsNodeFlags flags = 2;
- string local_router_id = 3;
- string local_router_id_v6 = 4;
- bytes isis_area = 5;
- bytes opaque = 6;
+ string name = 1;
+ LsNodeFlags flags = 2;
+ string local_router_id = 3;
+ string local_router_id_v6 = 4;
+ bytes isis_area = 5;
+ bytes opaque = 6;
- LsSrCapabilities sr_capabilities = 7;
- bytes sr_algorithms = 8;
- LsSrLocalBlock sr_local_block = 9;
+ LsSrCapabilities sr_capabilities = 7;
+ bytes sr_algorithms = 8;
+ LsSrLocalBlock sr_local_block = 9;
}
message LsAttributeLink {
- string name = 1;
- string local_router_id = 2;
- string local_router_id_v6 = 3;
- string remote_router_id = 4;
- string remote_router_id_v6 = 5;
- uint32 admin_group = 6;
- uint32 default_te_metric = 7;
- uint32 igp_metric = 8;
- bytes opaque = 9;
+ string name = 1;
+ string local_router_id = 2;
+ string local_router_id_v6 = 3;
+ string remote_router_id = 4;
+ string remote_router_id_v6 = 5;
+ uint32 admin_group = 6;
+ uint32 default_te_metric = 7;
+ uint32 igp_metric = 8;
+ bytes opaque = 9;
- float bandwidth = 10;
- float reservable_bandwidth = 11;
- repeated float unreserved_bandwidth = 12;
+ float bandwidth = 10;
+ float reservable_bandwidth = 11;
+ repeated float unreserved_bandwidth = 12;
- uint32 sr_adjacency_sid = 13;
- repeated uint32 srlgs = 14;
+ uint32 sr_adjacency_sid = 13;
+ repeated uint32 srlgs = 14;
}
message LsAttributePrefix {
- LsIGPFlags igp_flags = 1;
- bytes opaque = 2;
+ LsIGPFlags igp_flags = 1;
+ bytes opaque = 2;
- uint32 sr_prefix_sid = 3;
+ uint32 sr_prefix_sid = 3;
}
message LsAttribute {
- LsAttributeNode node = 1;
- LsAttributeLink link = 2;
- LsAttributePrefix prefix = 3;
+ LsAttributeNode node = 1;
+ LsAttributeLink link = 2;
+ LsAttributePrefix prefix = 3;
}
message UnknownAttribute {
- uint32 flags = 1;
- uint32 type = 2;
- bytes value = 3;
-}
+ uint32 flags = 1;
+ uint32 type = 2;
+ bytes value = 3;
+}
+
+// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2.1.1
+message SRv6StructureSubSubTLV {
+ uint32 local_block_length = 1;
+ uint32 local_node_length = 2;
+ uint32 function_length = 3;
+ uint32 argument_length = 4;
+ uint32 transposition_length = 5;
+ uint32 transposition_offset = 6;
+}
+
+message SRv6SIDFlags {
+ // Placeholder for future sid flags
+ bool flag_1 = 1;
+}
+
+message SRv6TLV { repeated google.protobuf.Any tlv = 1; }
+
+// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2.1.1
+message SRv6InformationSubTLV {
+ bytes sid = 1;
+ SRv6SIDFlags flags = 2;
+ uint32 endpoint_behavior = 3;
+ // SRv6TLV is one of:
+ // - SRv6StructureSubSubTLV
+ map<uint32, SRv6TLV> sub_sub_tlvs = 4;
+}
+
+// https://tools.ietf.org/html/draft-dawra-bess-srv6-services-02#section-2
+message SRv6L3ServiceTLV {
+ // SRv6TLV is one of:
+ // - SRv6InformationSubTLV
+ map<uint32, SRv6TLV> sub_tlvs = 1;
+}
+
+// https://tools.ietf.org/html/rfc8669
+message PrefixSID {
+ // tlv is one of:
+ // - IndexLabelTLV Type 1 (not yet implemented)
+ // - OriginatorSRGBTLV Type 3 (not yet implemented)
+ // - SRv6L3ServiceTLV Type 5
+ // - SRv6L2ServiceTLV Type 6 (not yet implemented)
+ repeated google.protobuf.Any tlvs = 1;
+} \ No newline at end of file