summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2025-04-07 12:35:31 +0200
committerPhilippe Guibert <philippe.guibert@6wind.com>2025-04-11 09:36:29 +0200
commit27fa9ac4dbae5e9797528e8e261455d8087db0ce (patch)
tree08da246282a8c25e85f32179ff4dbd68b622c613
parentdc37bff8c0ade4f4f5465078f65e6b56b16b70e7 (diff)
lib, staticd, isisd: add B6.Encaps codepoint extensions
Add codepoint extensions for END.B6.Encaps instruction. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
-rw-r--r--isisd/isis_zebra.c16
-rw-r--r--lib/srv6.h12
-rw-r--r--staticd/static_vty.c12
-rw-r--r--staticd/static_zebra.c16
4 files changed, 56 insertions, 0 deletions
diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c
index cb729501cc..9d483c9368 100644
--- a/isisd/isis_zebra.c
+++ b/isisd/isis_zebra.c
@@ -1007,6 +1007,10 @@ void isis_zebra_srv6_sid_install(struct isis_area *area,
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
default:
zlog_err(
"ISIS-SRv6 (%s): unsupported SRv6 endpoint behavior %u",
@@ -1072,6 +1076,10 @@ void isis_zebra_srv6_sid_uninstall(struct isis_area *area,
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
default:
zlog_err(
"ISIS-SRv6 (%s): unsupported SRv6 endpoint behavior %u",
@@ -1145,6 +1153,10 @@ void isis_zebra_srv6_adj_sid_install(struct srv6_adjacency *sra)
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
default:
zlog_err(
"ISIS-SRv6 (%s): unsupported SRv6 endpoint behavior %u",
@@ -1199,6 +1211,10 @@ void isis_zebra_srv6_adj_sid_uninstall(struct srv6_adjacency *sra)
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
default:
zlog_err(
"ISIS-SRv6 (%s): unsupported SRv6 endpoint behavior %u",
diff --git a/lib/srv6.h b/lib/srv6.h
index 467f02a3c9..bd80253b55 100644
--- a/lib/srv6.h
+++ b/lib/srv6.h
@@ -179,9 +179,11 @@ enum srv6_endpoint_behavior_codepoint {
SRV6_ENDPOINT_BEHAVIOR_END_PSP = 0x0002,
SRV6_ENDPOINT_BEHAVIOR_END_X = 0x0005,
SRV6_ENDPOINT_BEHAVIOR_END_X_PSP = 0x0006,
+ SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS = 0x000E,
SRV6_ENDPOINT_BEHAVIOR_END_DT6 = 0x0012,
SRV6_ENDPOINT_BEHAVIOR_END_DT4 = 0x0013,
SRV6_ENDPOINT_BEHAVIOR_END_DT46 = 0x0014,
+ SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED = 0x001B,
SRV6_ENDPOINT_BEHAVIOR_END_PSP_USD = 0x001D,
SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD = 0x0021,
SRV6_ENDPOINT_BEHAVIOR_END_NEXT_CSID = 0x002B,
@@ -193,6 +195,8 @@ enum srv6_endpoint_behavior_codepoint {
SRV6_ENDPOINT_BEHAVIOR_END_DT6_USID = 0x003E,
SRV6_ENDPOINT_BEHAVIOR_END_DT4_USID = 0x003F,
SRV6_ENDPOINT_BEHAVIOR_END_DT46_USID = 0x0040,
+ SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID = 0x005D,
+ SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID = 0x005E,
SRV6_ENDPOINT_BEHAVIOR_OPAQUE = 0xFFFF,
};
@@ -215,6 +219,8 @@ srv6_endpoint_behavior_codepoint2str(enum srv6_endpoint_behavior_codepoint behav
return "End.X";
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP:
return "End.X PSP";
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ return "End.B6.Encaps";
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD:
return "End.X PSP/USD";
case SRV6_ENDPOINT_BEHAVIOR_END_DT6:
@@ -223,6 +229,8 @@ srv6_endpoint_behavior_codepoint2str(enum srv6_endpoint_behavior_codepoint behav
return "End.DT4";
case SRV6_ENDPOINT_BEHAVIOR_END_DT46:
return "End.DT46";
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ return "End.B6.Encaps.Red";
case SRV6_ENDPOINT_BEHAVIOR_END_NEXT_CSID:
return "uN";
case SRV6_ENDPOINT_BEHAVIOR_END_NEXT_CSID_PSP:
@@ -241,6 +249,10 @@ srv6_endpoint_behavior_codepoint2str(enum srv6_endpoint_behavior_codepoint behav
return "uDT4";
case SRV6_ENDPOINT_BEHAVIOR_END_DT46_USID:
return "uDT46";
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ return "uB6.Encaps";
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
+ return "uB6.Encaps.Red";
case SRV6_ENDPOINT_BEHAVIOR_OPAQUE:
return "Opaque";
}
diff --git a/staticd/static_vty.c b/staticd/static_vty.c
index ffa90d5352..6fc4f067d9 100644
--- a/staticd/static_vty.c
+++ b/staticd/static_vty.c
@@ -1752,6 +1752,9 @@ static void srv6_sid_cli_show(struct vty *vty, const struct lyd_node *sid, bool
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP:
vty_out(vty, " behavior End.X PSP");
break;
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ vty_out(vty, " behavior End.B6.Encaps");
+ break;
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD:
vty_out(vty, " behavior End.X PSP/USD");
break;
@@ -1764,6 +1767,9 @@ static void srv6_sid_cli_show(struct vty *vty, const struct lyd_node *sid, bool
case SRV6_ENDPOINT_BEHAVIOR_END_DT46:
vty_out(vty, " behavior End.DT46");
break;
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ vty_out(vty, " behavior End.B6.Encaps.Red");
+ break;
case SRV6_ENDPOINT_BEHAVIOR_END_NEXT_CSID:
vty_out(vty, " behavior uN");
break;
@@ -1791,6 +1797,12 @@ static void srv6_sid_cli_show(struct vty *vty, const struct lyd_node *sid, bool
case SRV6_ENDPOINT_BEHAVIOR_END_DT46_USID:
vty_out(vty, " behavior uDT46");
break;
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ vty_out(vty, " behavior uB6.Encaps");
+ break;
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
+ vty_out(vty, " behavior uB6.Encaps.Red");
+ break;
case SRV6_ENDPOINT_BEHAVIOR_RESERVED:
case SRV6_ENDPOINT_BEHAVIOR_OPAQUE:
vty_out(vty, " behavior unknown");
diff --git a/staticd/static_zebra.c b/staticd/static_zebra.c
index 714f4b89ea..f02fe1e95c 100644
--- a/staticd/static_zebra.c
+++ b/staticd/static_zebra.c
@@ -730,6 +730,10 @@ void static_zebra_srv6_sid_install(struct static_srv6_sid *sid)
case SRV6_ENDPOINT_BEHAVIOR_END_X_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP:
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
case SRV6_ENDPOINT_BEHAVIOR_OPAQUE:
case SRV6_ENDPOINT_BEHAVIOR_RESERVED:
zlog_warn("unsupported behavior: %u", sid->behavior);
@@ -853,6 +857,10 @@ void static_zebra_srv6_sid_uninstall(struct static_srv6_sid *sid)
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_OPAQUE:
case SRV6_ENDPOINT_BEHAVIOR_RESERVED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
zlog_warn("unsupported behavior: %u", sid->behavior);
break;
}
@@ -999,6 +1007,10 @@ extern void static_zebra_request_srv6_sid(struct static_srv6_sid *sid)
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_OPAQUE:
case SRV6_ENDPOINT_BEHAVIOR_RESERVED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
zlog_warn("unsupported behavior: %u", sid->behavior);
return;
}
@@ -1087,6 +1099,10 @@ extern void static_zebra_release_srv6_sid(struct static_srv6_sid *sid)
case SRV6_ENDPOINT_BEHAVIOR_END_X_NEXT_CSID_PSP_USD:
case SRV6_ENDPOINT_BEHAVIOR_OPAQUE:
case SRV6_ENDPOINT_BEHAVIOR_RESERVED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_NEXT_CSID:
+ case SRV6_ENDPOINT_BEHAVIOR_END_B6_ENCAPS_RED_NEXT_CSID:
zlog_warn("unsupported behavior: %u", sid->behavior);
return;
}