diff options
-rw-r--r-- | lib/srv6.c | 3 | ||||
-rw-r--r-- | lib/srv6.h | 1 | ||||
-rw-r--r-- | zebra/rt_netlink.c | 22 |
3 files changed, 26 insertions, 0 deletions
diff --git a/lib/srv6.c b/lib/srv6.c index 6a658444c..4dd6dd7c4 100644 --- a/lib/srv6.c +++ b/lib/srv6.c @@ -57,6 +57,8 @@ const char *seg6local_action2str(uint32_t action) return "End.AS"; case ZEBRA_SEG6_LOCAL_ACTION_END_AM: return "End.AM"; + case ZEBRA_SEG6_LOCAL_ACTION_END_DT46: + return "End.DT46"; case ZEBRA_SEG6_LOCAL_ACTION_UNSPEC: return "unspec"; default: @@ -105,6 +107,7 @@ const char *seg6local_context2str(char *str, size_t size, case ZEBRA_SEG6_LOCAL_ACTION_END_T: case ZEBRA_SEG6_LOCAL_ACTION_END_DT6: case ZEBRA_SEG6_LOCAL_ACTION_END_DT4: + case ZEBRA_SEG6_LOCAL_ACTION_END_DT46: snprintf(str, size, "table %u", ctx->table); return str; diff --git a/lib/srv6.h b/lib/srv6.h index e0db30cd1..6e0c3ce99 100644 --- a/lib/srv6.h +++ b/lib/srv6.h @@ -60,6 +60,7 @@ enum seg6local_action_t { ZEBRA_SEG6_LOCAL_ACTION_END_AS = 13, ZEBRA_SEG6_LOCAL_ACTION_END_AM = 14, ZEBRA_SEG6_LOCAL_ACTION_END_BPF = 15, + ZEBRA_SEG6_LOCAL_ACTION_END_DT46 = 16, }; struct seg6_segs { diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index e883033d5..3a8f5264f 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -1540,6 +1540,16 @@ static bool _netlink_route_build_singlepath(const struct prefix *p, ctx->table)) return false; break; + case ZEBRA_SEG6_LOCAL_ACTION_END_DT46: + if (!nl_attr_put32(nlmsg, req_size, + SEG6_LOCAL_ACTION, + SEG6_LOCAL_ACTION_END_DT46)) + return false; + if (!nl_attr_put32(nlmsg, req_size, + SEG6_LOCAL_VRFTABLE, + ctx->table)) + return false; + break; default: zlog_err("%s: unsupport seg6local behaviour action=%u", __func__, @@ -2706,6 +2716,18 @@ ssize_t netlink_nexthop_msg_encode(uint16_t cmd, ctx->table)) return 0; break; + case SEG6_LOCAL_ACTION_END_DT46: + if (!nl_attr_put32( + &req->n, buflen, + SEG6_LOCAL_ACTION, + SEG6_LOCAL_ACTION_END_DT46)) + return 0; + if (!nl_attr_put32( + &req->n, buflen, + SEG6_LOCAL_VRFTABLE, + ctx->table)) + return 0; + break; default: zlog_err("%s: unsupport seg6local behaviour action=%u", __func__, action); |