diff options
author | Serguei Bezverkhi <sbezverk@cisco.com> | 2020-05-12 22:05:44 -0400 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@gmail.com> | 2020-05-13 12:58:51 +0900 |
commit | 833188f52610dcf47c57250788b36625b10a8925 (patch) | |
tree | 2c4f80208c1d40bc0e52a2f379421039fe577f56 /api/attribute.proto | |
parent | 95745b6cf9a5ed229c5494bb0b531215dec38dbe (diff) |
extend attributes proto for Prefix SID support
Signed-off-by: Serguei Bezverkhi <sbezverk@cisco.com>
Diffstat (limited to 'api/attribute.proto')
-rw-r--r-- | api/attribute.proto | 734 |
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 |