]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib, staticd, isisd: add B6.Encaps codepoint extensions
authorPhilippe Guibert <philippe.guibert@6wind.com>
Mon, 7 Apr 2025 10:35:31 +0000 (12:35 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 11 Apr 2025 07:36:29 +0000 (09:36 +0200)
Add codepoint extensions for END.B6.Encaps instruction.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
isisd/isis_zebra.c
lib/srv6.h
staticd/static_vty.c
staticd/static_zebra.c

index cb729501cc94d93d8061ebdbf4fa3e467d84c372..9d483c9368acb9bd103e781e3700e22b9d690220 100644 (file)
@@ -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",
index 467f02a3c9e9564c60beef7658973e59adbd29fc..bd80253b55a38a215cda8753451f9a75004a4013 100644 (file)
@@ -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";
        }
index ffa90d5352d880f2dbcbb9edf2d29247efa55332..6fc4f067d900eb62fe550519980997cdf34d02f8 100644 (file)
@@ -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");
index 714f4b89ead128a0d17bdbd3fad396eb201f08c4..f02fe1e95c28c04fbff93c458fe3873938e1fcdd 100644 (file)
@@ -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;
        }