summaryrefslogtreecommitdiff
path: root/isisd/isis_mt.c
diff options
context:
space:
mode:
authorChristian Franke <chris@opensourcerouting.org>2018-07-22 15:49:02 -0400
committerChristian Franke <chris@opensourcerouting.org>2018-08-03 13:25:39 +0200
commitd43d2df5f3b63a4d364bd1136a246dd74647913c (patch)
tree99a128870f0ccd0e65d6981430fc061a2da1fa57 /isisd/isis_mt.c
parentc9b0e434bc640ca7fe3700d4c3e26d1a295a9546 (diff)
isisd: learn and advertise IPv6 dst-src routes
Receive IPv6 dst-src routes from zebra and advertise them in our LSPs if so configured. Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Diffstat (limited to 'isisd/isis_mt.c')
-rw-r--r--isisd/isis_mt.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/isisd/isis_mt.c b/isisd/isis_mt.c
index d13f2a13f3..2155bf584e 100644
--- a/isisd/isis_mt.c
+++ b/isisd/isis_mt.c
@@ -33,6 +33,14 @@ DEFINE_MTYPE_STATIC(ISISD, MT_AREA_SETTING, "ISIS MT Area Setting")
DEFINE_MTYPE_STATIC(ISISD, MT_CIRCUIT_SETTING, "ISIS MT Circuit Setting")
DEFINE_MTYPE_STATIC(ISISD, MT_ADJ_INFO, "ISIS MT Adjacency Info")
+bool isis_area_ipv6_dstsrc_enabled(struct isis_area *area)
+{
+ struct isis_area_mt_setting *area_mt_setting;
+ area_mt_setting = area_lookup_mt_setting(area, ISIS_MT_IPV6_DSTSRC);
+
+ return (area_mt_setting && area_mt_setting->enabled);
+}
+
uint16_t isis_area_ipv6_topology(struct isis_area *area)
{
struct isis_area_mt_setting *area_mt_setting;
@@ -61,6 +69,8 @@ const char *isis_mtid2str(uint16_t mtid)
return "ipv6-multicast";
case ISIS_MT_IPV6_MGMT:
return "ipv6-mgmt";
+ case ISIS_MT_IPV6_DSTSRC:
+ return "ipv6-dstsrc";
default:
snprintf(buf, sizeof(buf), "%" PRIu16, mtid);
return buf;
@@ -81,6 +91,8 @@ uint16_t isis_str2mtid(const char *name)
return ISIS_MT_IPV6_MULTICAST;
if (!strcmp(name, "ipv6-mgmt"))
return ISIS_MT_IPV6_MGMT;
+ if (!strcmp(name, "ipv6-dstsrc"))
+ return ISIS_MT_IPV6_DSTSRC;
return -1;
}