summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/srv6.c3
-rw-r--r--lib/srv6.h1
-rw-r--r--zebra/rt_netlink.c22
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);