diff options
author | Emanuele Di Pascale <emanuele@voltanet.io> | 2018-11-14 12:12:32 +0100 |
---|---|---|
committer | Emanuele Di Pascale <emanuele@voltanet.io> | 2018-12-18 15:23:49 +0100 |
commit | 8b104c10640892c645d34091fc1b13d98f99784d (patch) | |
tree | 53c2cece5902324e51896fbadc9dcec5d2ff9402 /isisd/isis_redist.c | |
parent | isisd: retrofit the mpls-te commands (diff) | |
download | frr-8b104c10640892c645d34091fc1b13d98f99784d.tar.xz frr-8b104c10640892c645d34091fc1b13d98f99784d.zip |
isisd: retrofit the 'default-originate' command
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
Diffstat (limited to 'isisd/isis_redist.c')
-rw-r--r-- | isisd/isis_redist.c | 49 |
1 files changed, 12 insertions, 37 deletions
diff --git a/isisd/isis_redist.c b/isisd/isis_redist.c index 6564149a4..71540e9e0 100644 --- a/isisd/isis_redist.c +++ b/isisd/isis_redist.c @@ -388,9 +388,8 @@ static void isis_redist_update_zebra_subscriptions(struct isis *isis) } } -static void isis_redist_set(struct isis_area *area, int level, int family, - int type, uint32_t metric, const char *routemap, - int originate_type) +void isis_redist_set(struct isis_area *area, int level, int family, int type, + uint32_t metric, const char *routemap, int originate_type) { int protocol = redist_protocol(family); struct isis_redist *redist = @@ -445,8 +444,7 @@ static void isis_redist_set(struct isis_area *area, int level, int family, } } -static void isis_redist_unset(struct isis_area *area, int level, int family, - int type) +void isis_redist_unset(struct isis_area *area, int level, int family, int type) { struct isis_redist *redist = get_redist_settings(area, family, type, level); @@ -638,21 +636,15 @@ DEFUN (no_isis_redistribute, return 0; } +#ifdef FABRICD DEFUN (isis_default_originate, isis_default_originate_cmd, "default-information originate <ipv4|ipv6>" -#ifndef FABRICD - " <level-1|level-2>" -#endif " [always] [<metric (0-16777215)|route-map WORD>]", "Control distribution of default information\n" "Distribute a default route\n" "Distribute default route for IPv4\n" "Distribute default route for IPv6\n" -#ifndef FABRICD - "Distribute default route into level-1\n" - "Distribute default route into level-2\n" -#endif "Always advertise default route\n" "Metric for default route\n" "ISIS default metric\n" @@ -660,7 +652,6 @@ DEFUN (isis_default_originate, "Pointer to route-map entries\n") { int idx_afi = 2; - int idx_level = 3; int idx_always = fabricd ? 3 : 4; int idx_metric_rmap = fabricd ? 3 : 4; VTY_DECLVAR_CONTEXT(isis_area, area); @@ -674,10 +665,7 @@ DEFUN (isis_default_originate, if (family < 0) return CMD_WARNING_CONFIG_FAILED; - if (fabricd) - level = 2; - else - level = strmatch("level-1", argv[idx_level]->text) ? 1 : 2; + level = 2; if ((area->is_type & level) != level) { vty_out(vty, "Node is not a level-%d IS\n", level); @@ -711,23 +699,14 @@ DEFUN (isis_default_originate, DEFUN (no_isis_default_originate, no_isis_default_originate_cmd, - "no default-information originate <ipv4|ipv6>" -#ifndef FABRICD - " <level-1|level-2>" -#endif - , NO_STR + "no default-information originate <ipv4|ipv6>", + NO_STR "Control distribution of default information\n" "Distribute a default route\n" "Distribute default route for IPv4\n" - "Distribute default route for IPv6\n" -#ifndef FABRICD - "Distribute default route into level-1\n" - "Distribute default route into level-2\n" -#endif - ) + "Distribute default route for IPv6\n") { int idx_afi = 3; - int idx_level = 4; VTY_DECLVAR_CONTEXT(isis_area, area); int family; int level; @@ -736,18 +715,12 @@ DEFUN (no_isis_default_originate, if (family < 0) return CMD_WARNING_CONFIG_FAILED; - if (fabricd) - level = 2; - else if (strmatch("level-1", argv[idx_level]->text)) - level = 1; - else if (strmatch("level-2", argv[idx_level]->text)) - level = 2; - else - return CMD_WARNING_CONFIG_FAILED; + level = 2; isis_redist_unset(area, level, family, DEFAULT_ROUTE); return 0; } +#endif /* ifdef FABRICD */ int isis_redist_config_write(struct vty *vty, struct isis_area *area, int family) @@ -812,6 +785,8 @@ void isis_redist_init(void) { install_element(ROUTER_NODE, &isis_redistribute_cmd); install_element(ROUTER_NODE, &no_isis_redistribute_cmd); +#ifdef FABRICD install_element(ROUTER_NODE, &isis_default_originate_cmd); install_element(ROUTER_NODE, &no_isis_default_originate_cmd); +#endif /* ifdef FABRICD */ } |