diff options
| author | Carmine Scarpitta <cscarpit@cisco.com> | 2024-02-13 10:29:34 +0100 | 
|---|---|---|
| committer | Carmine Scarpitta <cscarpit@cisco.com> | 2024-02-18 18:31:13 +0100 | 
| commit | 7052c94ba3422ca1c44f530535c1efda0ac70fa0 (patch) | |
| tree | b23aa942fe5bd0560d16dbbb8b5d09cd8b1e3759 /fpm | |
| parent | 311eac53e862269fb4b7ba2ff8ff9212a013ab82 (diff) | |
fpm: Add SRv6 Local SIDs to `fpm.proto`
Add several protobuf messages to support the installation and removal
of SRv6 Local SIDs via FPM protobuf.
This is a preliminary commit to support sending SRv6 Local SIDs and VPN
SIDs via protobuf.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Diffstat (limited to 'fpm')
| -rw-r--r-- | fpm/fpm.proto | 140 | 
1 files changed, 140 insertions, 0 deletions
diff --git a/fpm/fpm.proto b/fpm/fpm.proto index 9f0917feae..2557bd8744 100644 --- a/fpm/fpm.proto +++ b/fpm/fpm.proto @@ -6,6 +6,9 @@  //  // @author Avneesh Sachdev <avneesh@sproute.com>  // +// Portions: +//   Copyright (C) 2024 Carmine Scarpitta (for SRv6) +//  // Permission to use, copy, modify, and/or distribute this software  // for any purpose with or without fee is hereby granted, provided  // that the above copyright notice and this permission notice appear @@ -74,6 +77,136 @@ message AddRoute {    repeated Nexthop nexthops = 9;  } +/* SID Format - as per RFC 8986 section #3.1 */ +message SRv6SIDFormat +{ +	/* Locator block length */ +	required uint32 locator_block_length = 1; +	/* Locator node length */ +	required uint32 locator_node_length = 2; +	/* Function length */ +	required uint32 function_length = 3; +	/* Argument length */ +	required uint32 argument_length = 4; +} + +/* SRv6 Local SID */ +message SRv6LocalSID +{ +	/* SRv6 SID value */ +	required qpb.Ipv6Address sid = 1; + +	/* SID Format - as per RFC 8986 section #3.1 */ +	optional SRv6SIDFormat sid_format = 2; + +	/* SRv6 Endpoint Behavior associated with the SID */ +	oneof end_behavior +	{ +		/* Endpoint */ +		End end = 3; +		/* Endpoint with L3 cross-connect */ +		EndX end_x = 4; +		/* Endpoint with specific IPv6 table lookup */ +		EndT end_t = 5; +		/* Endpoint with decapsulation and IPv6 cross-connect */ +		EndDX6 end_dx6 = 7; +		/* Endpoint with decapsulation and IPv4 cross-connect */ +		EndDX4 end_dx4 = 8; +		/* Endpoint with decapsulation and specific IPv6 table lookup */ +		EndDT6 end_dt6 = 9; +		/* Endpoint with decapsulation and specific IPv4 table lookup */ +		EndDT4 end_dt4 = 10; +		/* Endpoint with decapsulation and specific IP table lookup */ +		EndDT46 end_dt46 = 11; +		/* Endpoint behavior with NEXT-CSID, PSP and USD flavors */ +		UN un = 12; +		/* End.X behavior with NEXT-CSID, PSP and USD flavors */ +		UA ua = 13; +		/* End.DT6 behavior with NEXT-CSID flavor */ +		UDT6 udt6 = 14; +		/* End.DT4 behavior with NEXT-CSID flavor */ +		UDT4 udt4 = 15; +		/* End.DT46 behavior with NEXT-CSID flavor */ +		UDT46 udt46 = 16; +	} + +	/* Endpoint */ +	message End +	{ +	} + +	/* Endpoint with L3 cross-connect */ +	message EndX +	{ +		required Nexthop nexthop = 1; +	} + +	/* Endpoint with specific IPv6 table lookup */ +	message EndT +	{ +		required uint32 vrf_id = 1; +	} + +	/* Endpoint with decapsulation and IPv6 cross-connect */ +	message EndDX6 +	{ +		required Nexthop nexthop = 1; +	} + +	/* Endpoint with decapsulation and IPv4 cross-connect */ +	message EndDX4 +	{ +		required Nexthop nexthop = 1; +	} + +	/* Endpoint with decapsulation and specific IPv6 table lookup */ +	message EndDT6 +	{ +		required uint32 vrf_id = 1; +	} + +	/* Endpoint with decapsulation and specific IPv4 table lookup */ +	message EndDT4 +	{ +		required uint32 vrf_id = 1; +	} + +	/* Endpoint with decapsulation and specific IP table lookup */ +	message EndDT46 +	{ +		required uint32 vrf_id = 1; +	} + +	/* Endpoint behavior with NEXT-CSID, PSP and USD flavors */ +	message UN +	{ +	} + +	/* End.X behavior with NEXT-CSID, PSP and USD flavors */ +	message UA +	{ +		required Nexthop nexthop = 1; +	} + +	/* End.DT6 behavior with NEXT-CSID flavor */ +	message UDT6 +	{ +		required uint32 vrf_id = 1; +	} + +	/* End.DT4 behavior with NEXT-CSID flavor */ +	message UDT4 +	{ +		required uint32 vrf_id = 1; +	} + +	/* End.DT46 behavior with NEXT-CSID flavor */ +	message UDT46 +	{ +		required uint32 vrf_id = 1; +	} +} +  //  // Any message from the FPM.  // @@ -82,10 +215,17 @@ message Message {      UNKNOWN_MSG = 0;      ADD_ROUTE = 1;      DELETE_ROUTE = 2; +    /* Install an SRv6 Local SID */ +    ADD_SRV6_LOCALSID = 3; +    /* Remove an SRv6 Local SID */ +    DELETE_SRV6_LOCALSID = 4;    };    optional Type type = 1;    optional AddRoute add_route = 2;    optional DeleteRoute delete_route = 3; + +  /* SRv6 Local SID */ +  optional SRv6LocalSID srv6_localsid = 4;  }  | 
