summaryrefslogtreecommitdiff
path: root/zebra
diff options
context:
space:
mode:
Diffstat (limited to 'zebra')
-rw-r--r--zebra/zebra_vrf.c41
-rw-r--r--zebra/zebra_vrf.h6
2 files changed, 38 insertions, 9 deletions
diff --git a/zebra/zebra_vrf.c b/zebra/zebra_vrf.c
index b246d445da..c13b3071e9 100644
--- a/zebra/zebra_vrf.c
+++ b/zebra/zebra_vrf.c
@@ -373,6 +373,12 @@ struct zebra_vrf *zebra_vrf_alloc(struct vrf *vrf)
zebra_pw_init(zvrf);
zvrf->table_id = RT_TABLE_MAIN;
/* by default table ID is default one */
+
+ if (DFLT_ZEBRA_IP_NHT_RESOLVE_VIA_DEFAULT) {
+ zvrf->zebra_rnh_ip_default_route = true;
+ zvrf->zebra_rnh_ipv6_default_route = true;
+ }
+
return zvrf;
}
@@ -456,11 +462,20 @@ static int vrf_config_write(struct vty *vty)
zvrf->l3vni)
? " prefix-routes-only"
: "");
- if (zvrf->zebra_rnh_ip_default_route)
- vty_out(vty, "ip nht resolve-via-default\n");
- if (zvrf->zebra_rnh_ipv6_default_route)
- vty_out(vty, "ipv6 nht resolve-via-default\n");
+ if (zvrf->zebra_rnh_ip_default_route !=
+ SAVE_ZEBRA_IP_NHT_RESOLVE_VIA_DEFAULT)
+ vty_out(vty, "%sip nht resolve-via-default\n",
+ zvrf->zebra_rnh_ip_default_route
+ ? ""
+ : "no ");
+
+ if (zvrf->zebra_rnh_ipv6_default_route !=
+ SAVE_ZEBRA_IP_NHT_RESOLVE_VIA_DEFAULT)
+ vty_out(vty, "%sipv6 nht resolve-via-default\n",
+ zvrf->zebra_rnh_ipv6_default_route
+ ? ""
+ : "no ");
if (zvrf->tbl_mgr
&& (zvrf->tbl_mgr->start || zvrf->tbl_mgr->end))
@@ -476,11 +491,19 @@ static int vrf_config_write(struct vty *vty)
? " prefix-routes-only"
: "");
zebra_ns_config_write(vty, (struct ns *)vrf->ns_ctxt);
- if (zvrf->zebra_rnh_ip_default_route)
- vty_out(vty, " ip nht resolve-via-default\n");
-
- if (zvrf->zebra_rnh_ipv6_default_route)
- vty_out(vty, " ipv6 nht resolve-via-default\n");
+ if (zvrf->zebra_rnh_ip_default_route !=
+ SAVE_ZEBRA_IP_NHT_RESOLVE_VIA_DEFAULT)
+ vty_out(vty, " %sip nht resolve-via-default\n",
+ zvrf->zebra_rnh_ip_default_route
+ ? ""
+ : "no ");
+
+ if (zvrf->zebra_rnh_ipv6_default_route !=
+ SAVE_ZEBRA_IP_NHT_RESOLVE_VIA_DEFAULT)
+ vty_out(vty, " %sipv6 nht resolve-via-default\n",
+ zvrf->zebra_rnh_ipv6_default_route
+ ? ""
+ : "no ");
if (zvrf->tbl_mgr && vrf_is_backend_netns()
&& (zvrf->tbl_mgr->start || zvrf->tbl_mgr->end))
diff --git a/zebra/zebra_vrf.h b/zebra/zebra_vrf.h
index aef83cd8f1..5cbfab1ddc 100644
--- a/zebra/zebra_vrf.h
+++ b/zebra/zebra_vrf.h
@@ -13,11 +13,17 @@
#include <zebra/zebra_pw.h>
#include <zebra/rtadv.h>
#include <lib/vxlan.h>
+#include "defaults.h"
#ifdef __cplusplus
extern "C" {
#endif
+FRR_CFG_DEFAULT_BOOL(ZEBRA_IP_NHT_RESOLVE_VIA_DEFAULT,
+ { .val_bool = true, .match_profile = "traditional", },
+ { .val_bool = false },
+);
+
/* MPLS (Segment Routing) global block */
struct mpls_srgb {
uint32_t start_label;