diff options
| author | Carmine Scarpitta <cscarpit@cisco.com> | 2025-02-13 11:02:23 +0100 | 
|---|---|---|
| committer | Carmine Scarpitta <cscarpit@cisco.com> | 2025-02-26 07:19:51 +0100 | 
| commit | cc84e522810542105d9b358b3cbefe4fdf694c5c (patch) | |
| tree | 3ac6be5b463c3540c65382f13ce9e9e764ad5b47 /staticd/static_zebra.c | |
| parent | ec5ff367b120e67c9e7bd87ffa8baa2334e75628 (diff) | |
staticd: Extend `static_zebra_release_srv6_sid` to release SRv6 uA SIDs
When removing an SRv6 uA SID, staticd should ask SRv6 SID Manager to
release the SID.
Currently, `static_zebra_release_srv6_sid` does not allow to release uA
SIDs.
This commit extends `static_zebra_release_srv6_sid` to allow staticd to
release SRv6 uA SIDs.
Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
Diffstat (limited to 'staticd/static_zebra.c')
| -rw-r--r-- | staticd/static_zebra.c | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/staticd/static_zebra.c b/staticd/static_zebra.c index d3ff5ee45f..ec425a4afc 100644 --- a/staticd/static_zebra.c +++ b/staticd/static_zebra.c @@ -977,6 +977,7 @@ extern void static_zebra_release_srv6_sid(struct static_srv6_sid *sid)  	struct srv6_sid_ctx ctx = {};  	struct vrf *vrf;  	int ret = 0; +	struct interface *ifp;  	if (!sid || !CHECK_FLAG(sid->flags, STATIC_FLAG_SRV6_SID_VALID))  		return; @@ -1028,12 +1029,22 @@ extern void static_zebra_release_srv6_sid(struct static_srv6_sid *sid)  		}  		break; +	case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID: +		ctx.behavior = ZEBRA_SEG6_LOCAL_ACTION_END_X; +		ctx.nh6 = sid->attributes.nh6; +		ifp = if_lookup_by_name(sid->attributes.ifname, VRF_DEFAULT); +		if (!ifp) { +			zlog_warn("Failed to request SRv6 SID %pFX: interface %s does not exist", +				  &sid->addr, sid->attributes.ifname); +			return; +		} +		ctx.ifindex = ifp->ifindex; +		break;  	case SRV6_ENDPOINT_BEHAVIOR_END_PSP_USD:  	case SRV6_ENDPOINT_BEHAVIOR_END_NEXT_CSID_PSP_USD:  	case SRV6_ENDPOINT_BEHAVIOR_END_X:  	case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP:  	case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD: -	case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID:  	case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP:  	case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:  	case SRV6_ENDPOINT_BEHAVIOR_OPAQUE:  | 
