mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 06:03:10 +00:00
ripd, ripngd: cli refactor
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
parent
39573b33cb
commit
55c727dd75
@ -1398,26 +1398,16 @@ DEFUN (ip_rip_receive_version_2,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no ip rip receive version (1|2)",
|
|
||||||
* NO_STR
|
|
||||||
* IP_STR
|
|
||||||
* "Routing Information Protocol\n"
|
|
||||||
* "Advertisement reception\n"
|
|
||||||
* "Version control\n"
|
|
||||||
* "Version 1\n"
|
|
||||||
* "Version 2\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_ip_rip_receive_version,
|
DEFUN (no_ip_rip_receive_version,
|
||||||
no_ip_rip_receive_version_cmd,
|
no_ip_rip_receive_version_cmd,
|
||||||
"no ip rip receive version",
|
"no ip rip receive version [(1-1)|(2-2)]",
|
||||||
NO_STR
|
NO_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"Routing Information Protocol\n"
|
"Routing Information Protocol\n"
|
||||||
"Advertisement reception\n"
|
"Advertisement reception\n"
|
||||||
"Version control\n")
|
"Version control\n"
|
||||||
|
"Version 1\n"
|
||||||
|
"Version 2\n")
|
||||||
{
|
{
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct rip_interface *ri;
|
struct rip_interface *ri;
|
||||||
@ -1503,26 +1493,16 @@ DEFUN (ip_rip_send_version_2,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no ip rip send version (1|2)",
|
|
||||||
* NO_STR
|
|
||||||
* IP_STR
|
|
||||||
* "Routing Information Protocol\n"
|
|
||||||
* "Advertisement transmission\n"
|
|
||||||
* "Version control\n"
|
|
||||||
* "Version 1\n"
|
|
||||||
* "Version 2\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_ip_rip_send_version,
|
DEFUN (no_ip_rip_send_version,
|
||||||
no_ip_rip_send_version_cmd,
|
no_ip_rip_send_version_cmd,
|
||||||
"no ip rip send version",
|
"no ip rip send version [(1-1)|(2-2)]",
|
||||||
NO_STR
|
NO_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"Routing Information Protocol\n"
|
"Routing Information Protocol\n"
|
||||||
"Advertisement transmission\n"
|
"Advertisement transmission\n"
|
||||||
"Version control\n")
|
"Version control\n"
|
||||||
|
"Version 1\n"
|
||||||
|
"Version 2\n")
|
||||||
{
|
{
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct rip_interface *ri;
|
struct rip_interface *ri;
|
||||||
@ -1535,31 +1515,21 @@ DEFUN (no_ip_rip_send_version,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "ip rip authentication mode (md5|text) auth-length (rfc|old-ripd)",
|
|
||||||
* IP_STR
|
|
||||||
* "Routing Information Protocol\n"
|
|
||||||
* "Authentication control\n"
|
|
||||||
* "Authentication mode\n"
|
|
||||||
* "Keyed message digest\n"
|
|
||||||
* "Clear text authentication\n"
|
|
||||||
* "MD5 authentication data length\n"
|
|
||||||
* "RFC compatible\n"
|
|
||||||
* "Old ripd compatible\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (ip_rip_authentication_mode,
|
DEFUN (ip_rip_authentication_mode,
|
||||||
ip_rip_authentication_mode_cmd,
|
ip_rip_authentication_mode_cmd,
|
||||||
"ip rip authentication mode <md5|text>",
|
"ip rip authentication mode <md5|text> [auth-length <rfc|old-ripd>]",
|
||||||
IP_STR
|
IP_STR
|
||||||
"Routing Information Protocol\n"
|
"Routing Information Protocol\n"
|
||||||
"Authentication control\n"
|
"Authentication control\n"
|
||||||
"Authentication mode\n"
|
"Authentication mode\n"
|
||||||
"Keyed message digest\n"
|
"Keyed message digest\n"
|
||||||
"Clear text authentication\n")
|
"Clear text authentication\n"
|
||||||
|
"MD5 authentication data length\n"
|
||||||
|
"RFC compatible\n"
|
||||||
|
"Old ripd compatible\n")
|
||||||
{
|
{
|
||||||
int idx_encryption = 4;
|
char *cryptmode = argv[4]->text;
|
||||||
|
char *authlen = (argc > 5) ? argv[6]->text : NULL;
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct rip_interface *ri;
|
struct rip_interface *ri;
|
||||||
int auth_type;
|
int auth_type;
|
||||||
@ -1567,79 +1537,47 @@ DEFUN (ip_rip_authentication_mode,
|
|||||||
ifp = (struct interface *)vty->index;
|
ifp = (struct interface *)vty->index;
|
||||||
ri = ifp->info;
|
ri = ifp->info;
|
||||||
|
|
||||||
if ( (argc < 1) || (argc > 2) )
|
if (strmatch ("md5", cryptmode))
|
||||||
{
|
|
||||||
vty_out (vty, "incorrect argument count%s", VTY_NEWLINE);
|
|
||||||
return CMD_WARNING;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strncmp ("md5", argv[idx_encryption]->arg, strlen (argv[idx_encryption]->arg)) == 0)
|
|
||||||
auth_type = RIP_AUTH_MD5;
|
auth_type = RIP_AUTH_MD5;
|
||||||
else if (strncmp ("text", argv[idx_encryption]->arg, strlen (argv[idx_encryption]->arg)) == 0)
|
else {
|
||||||
|
assert (strmatch ("text", cryptmode));
|
||||||
auth_type = RIP_AUTH_SIMPLE_PASSWORD;
|
auth_type = RIP_AUTH_SIMPLE_PASSWORD;
|
||||||
else
|
}
|
||||||
{
|
|
||||||
vty_out (vty, "mode should be md5 or text%s", VTY_NEWLINE);
|
|
||||||
return CMD_WARNING;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc == 1)
|
ri->auth_type = auth_type;
|
||||||
{
|
|
||||||
ri->auth_type = auth_type;
|
|
||||||
return CMD_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( (argc == 2) && (auth_type != RIP_AUTH_MD5) )
|
if (argc > 5)
|
||||||
|
{
|
||||||
|
if (auth_type != RIP_AUTH_MD5)
|
||||||
{
|
{
|
||||||
vty_out (vty, "auth length argument only valid for md5%s", VTY_NEWLINE);
|
vty_out (vty, "auth length argument only valid for md5%s", VTY_NEWLINE);
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
if (strmatch ("rfc", authlen))
|
||||||
|
ri->md5_auth_len = RIP_AUTH_MD5_SIZE;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assert (strmatch ("old-ripd", authlen));
|
||||||
|
ri->md5_auth_len = RIP_AUTH_MD5_COMPAT_SIZE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (strncmp ("r", argv[6]->arg, 1) == 0)
|
|
||||||
ri->md5_auth_len = RIP_AUTH_MD5_SIZE;
|
|
||||||
else if (strncmp ("o", argv[6]->arg, 1) == 0)
|
|
||||||
ri->md5_auth_len = RIP_AUTH_MD5_COMPAT_SIZE;
|
|
||||||
else
|
|
||||||
return CMD_WARNING;
|
|
||||||
|
|
||||||
ri->auth_type = auth_type;
|
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no ip rip authentication mode (md5|text)",
|
|
||||||
* NO_STR
|
|
||||||
* IP_STR
|
|
||||||
* "Routing Information Protocol\n"
|
|
||||||
* "Authentication control\n"
|
|
||||||
* "Authentication mode\n"
|
|
||||||
* "Keyed message digest\n"
|
|
||||||
* "Clear text authentication\n"
|
|
||||||
*
|
|
||||||
* "no ip rip authentication mode (md5|text) auth-length (rfc|old-ripd)",
|
|
||||||
* NO_STR
|
|
||||||
* IP_STR
|
|
||||||
* "Routing Information Protocol\n"
|
|
||||||
* "Authentication control\n"
|
|
||||||
* "Authentication mode\n"
|
|
||||||
* "Keyed message digest\n"
|
|
||||||
* "Clear text authentication\n"
|
|
||||||
* "MD5 authentication data length\n"
|
|
||||||
* "RFC compatible\n"
|
|
||||||
* "Old ripd compatible\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_ip_rip_authentication_mode,
|
DEFUN (no_ip_rip_authentication_mode,
|
||||||
no_ip_rip_authentication_mode_cmd,
|
no_ip_rip_authentication_mode_cmd,
|
||||||
"no ip rip authentication mode",
|
"no ip rip authentication mode [<md5|text> [auth-length <rfc|old-ripd>]]",
|
||||||
NO_STR
|
NO_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"Routing Information Protocol\n"
|
"Routing Information Protocol\n"
|
||||||
"Authentication control\n"
|
"Authentication control\n"
|
||||||
"Authentication mode\n")
|
"Authentication mode\n"
|
||||||
|
"Keyed message digest\n"
|
||||||
|
"Clear text authentication\n"
|
||||||
|
"MD5 authentication data length\n"
|
||||||
|
"RFC compatible\n"
|
||||||
|
"Old ripd compatible\n")
|
||||||
{
|
{
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct rip_interface *ri;
|
struct rip_interface *ri;
|
||||||
@ -1653,8 +1591,6 @@ DEFUN (no_ip_rip_authentication_mode,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DEFUN (ip_rip_authentication_string,
|
DEFUN (ip_rip_authentication_string,
|
||||||
ip_rip_authentication_string_cmd,
|
ip_rip_authentication_string_cmd,
|
||||||
"ip rip authentication string LINE",
|
"ip rip authentication string LINE",
|
||||||
@ -1692,24 +1628,14 @@ DEFUN (ip_rip_authentication_string,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no ip rip authentication string LINE",
|
|
||||||
* NO_STR
|
|
||||||
* IP_STR
|
|
||||||
* "Routing Information Protocol\n"
|
|
||||||
* "Authentication control\n"
|
|
||||||
* "Authentication string\n"
|
|
||||||
* "Authentication string\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_ip_rip_authentication_string,
|
DEFUN (no_ip_rip_authentication_string,
|
||||||
no_ip_rip_authentication_string_cmd,
|
no_ip_rip_authentication_string_cmd,
|
||||||
"no ip rip authentication string",
|
"no ip rip authentication string [LINE]",
|
||||||
NO_STR
|
NO_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"Routing Information Protocol\n"
|
"Routing Information Protocol\n"
|
||||||
"Authentication control\n"
|
"Authentication control\n"
|
||||||
|
"Authentication string\n"
|
||||||
"Authentication string\n")
|
"Authentication string\n")
|
||||||
{
|
{
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
@ -1758,25 +1684,15 @@ DEFUN (ip_rip_authentication_key_chain,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no ip rip authentication key-chain LINE",
|
|
||||||
* NO_STR
|
|
||||||
* IP_STR
|
|
||||||
* "Routing Information Protocol\n"
|
|
||||||
* "Authentication control\n"
|
|
||||||
* "Authentication key-chain\n"
|
|
||||||
* "name of key-chain\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_ip_rip_authentication_key_chain,
|
DEFUN (no_ip_rip_authentication_key_chain,
|
||||||
no_ip_rip_authentication_key_chain_cmd,
|
no_ip_rip_authentication_key_chain_cmd,
|
||||||
"no ip rip authentication key-chain",
|
"no ip rip authentication key-chain [LINE]",
|
||||||
NO_STR
|
NO_STR
|
||||||
IP_STR
|
IP_STR
|
||||||
"Routing Information Protocol\n"
|
"Routing Information Protocol\n"
|
||||||
"Authentication control\n"
|
"Authentication control\n"
|
||||||
"Authentication key-chain\n")
|
"Authentication key-chain\n"
|
||||||
|
"name of key-chain\n")
|
||||||
{
|
{
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct rip_interface *ri;
|
struct rip_interface *ri;
|
||||||
@ -1871,10 +1787,10 @@ DEFUN (no_ip_rip_split_horizon_poisoned_reverse,
|
|||||||
|
|
||||||
switch( ri->split_horizon )
|
switch( ri->split_horizon )
|
||||||
{
|
{
|
||||||
case RIP_SPLIT_HORIZON_POISONED_REVERSE:
|
case RIP_SPLIT_HORIZON_POISONED_REVERSE:
|
||||||
ri->split_horizon = RIP_SPLIT_HORIZON;
|
ri->split_horizon = RIP_SPLIT_HORIZON;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
@ -1887,18 +1803,15 @@ DEFUN (rip_passive_interface,
|
|||||||
"Interface name\n"
|
"Interface name\n"
|
||||||
"default for all interfaces\n")
|
"default for all interfaces\n")
|
||||||
{
|
{
|
||||||
int idx_ifname = 1;
|
if (argv[1]->type == WORD_TKN) { // user passed 'default'
|
||||||
const char *ifname = argv[idx_ifname]->arg;
|
|
||||||
|
|
||||||
if (!strcmp(ifname,"default")) {
|
|
||||||
passive_default = 1;
|
passive_default = 1;
|
||||||
rip_passive_nondefault_clean();
|
rip_passive_nondefault_clean();
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
if (passive_default)
|
if (passive_default)
|
||||||
return rip_passive_nondefault_unset (vty, ifname);
|
return rip_passive_nondefault_unset (vty, argv[1]->arg);
|
||||||
else
|
else
|
||||||
return rip_passive_nondefault_set (vty, ifname);
|
return rip_passive_nondefault_set (vty, argv[1]->arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFUN (no_rip_passive_interface,
|
DEFUN (no_rip_passive_interface,
|
||||||
@ -1909,18 +1822,15 @@ DEFUN (no_rip_passive_interface,
|
|||||||
"Interface name\n"
|
"Interface name\n"
|
||||||
"default for all interfaces\n")
|
"default for all interfaces\n")
|
||||||
{
|
{
|
||||||
int idx_ifname = 2;
|
if (argv[2]->type == WORD_TKN) {
|
||||||
const char *ifname = argv[idx_ifname]->arg;
|
|
||||||
|
|
||||||
if (!strcmp(ifname,"default")) {
|
|
||||||
passive_default = 0;
|
passive_default = 0;
|
||||||
rip_passive_nondefault_clean();
|
rip_passive_nondefault_clean();
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
if (passive_default)
|
if (passive_default)
|
||||||
return rip_passive_nondefault_set (vty, ifname);
|
return rip_passive_nondefault_set (vty, argv[2]->arg);
|
||||||
else
|
else
|
||||||
return rip_passive_nondefault_unset (vty, ifname);
|
return rip_passive_nondefault_unset (vty, argv[2]->arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write rip configuration of each interface. */
|
/* Write rip configuration of each interface. */
|
||||||
|
41
ripd/ripd.c
41
ripd/ripd.c
@ -2963,19 +2963,12 @@ DEFUN (rip_version,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no version <1-2>",
|
|
||||||
* NO_STR
|
|
||||||
* "Set routing protocol version\n"
|
|
||||||
* "version\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_rip_version,
|
DEFUN (no_rip_version,
|
||||||
no_rip_version_cmd,
|
no_rip_version_cmd,
|
||||||
"no version",
|
"no version [(1-2)]",
|
||||||
NO_STR
|
NO_STR
|
||||||
"Set routing protocol version\n")
|
"Set routing protocol version\n"
|
||||||
|
"Version\n")
|
||||||
{
|
{
|
||||||
/* Set RIP version to the default. */
|
/* Set RIP version to the default. */
|
||||||
rip->version_send = RI_RIP_VERSION_2;
|
rip->version_send = RI_RIP_VERSION_2;
|
||||||
@ -3091,17 +3084,9 @@ DEFUN (rip_default_metric,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no default-metric <1-16>",
|
|
||||||
* NO_STR
|
|
||||||
* "Set a metric of redistribute routes\n"
|
|
||||||
* "Default metric\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_rip_default_metric,
|
DEFUN (no_rip_default_metric,
|
||||||
no_rip_default_metric_cmd,
|
no_rip_default_metric_cmd,
|
||||||
"no default-metric",
|
"no default-metric [(1-16)]",
|
||||||
NO_STR
|
NO_STR
|
||||||
"Set a metric of redistribute routes\n"
|
"Set a metric of redistribute routes\n"
|
||||||
"Default metric\n")
|
"Default metric\n")
|
||||||
@ -3166,23 +3151,15 @@ DEFUN (rip_timers,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no timers basic <0-65535> <0-65535> <0-65535>",
|
|
||||||
* NO_STR
|
|
||||||
* "Adjust routing timers\n"
|
|
||||||
* "Basic routing protocol update timers\n"
|
|
||||||
* "Routing table update timer value in second. Default is 30.\n"
|
|
||||||
* "Routing information timeout timer. Default is 180.\n"
|
|
||||||
* "Garbage collection timer. Default is 120.\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_rip_timers,
|
DEFUN (no_rip_timers,
|
||||||
no_rip_timers_cmd,
|
no_rip_timers_cmd,
|
||||||
"no timers basic",
|
"no timers basic [(0-65535) (0-65535) (0-65535)]",
|
||||||
NO_STR
|
NO_STR
|
||||||
"Adjust routing timers\n"
|
"Adjust routing timers\n"
|
||||||
"Basic routing protocol update timers\n")
|
"Basic routing protocol update timers\n"
|
||||||
|
"Routing table update timer value in second. Default is 30.\n"
|
||||||
|
"Routing information timeout timer. Default is 180.\n"
|
||||||
|
"Garbage collection timer. Default is 120.\n")
|
||||||
{
|
{
|
||||||
/* Set each timer value to the default. */
|
/* Set each timer value to the default. */
|
||||||
rip->update_time = RIP_UPDATE_TIMER_DEFAULT;
|
rip->update_time = RIP_UPDATE_TIMER_DEFAULT;
|
||||||
|
@ -345,44 +345,23 @@ DEFUN (ripng_redistribute_type,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no redistribute <kernel|connected|static|ospf6|isis|bgp|table> metric <0-16> route-map WORD",
|
|
||||||
* NO_STR
|
|
||||||
* "Redistribute\n"
|
|
||||||
* QUAGGA_REDIST_HELP_STR_RIPNGD
|
|
||||||
* "Route map reference\n"
|
|
||||||
* "Pointer to route-map entries\n"
|
|
||||||
*
|
|
||||||
* "no redistribute <kernel|connected|static|ospf6|isis|bgp|table> metric <0-16>",
|
|
||||||
* NO_STR
|
|
||||||
* "Redistribute\n"
|
|
||||||
* QUAGGA_REDIST_HELP_STR_RIPNGD
|
|
||||||
* "Metric\n"
|
|
||||||
* "Metric value\n"
|
|
||||||
*
|
|
||||||
* "no redistribute <kernel|connected|static|ospf6|isis|bgp|table> route-map WORD",
|
|
||||||
* NO_STR
|
|
||||||
* "Redistribute\n"
|
|
||||||
* QUAGGA_REDIST_HELP_STR_RIPNGD
|
|
||||||
* "Route map reference\n"
|
|
||||||
* "Pointer to route-map entries\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_ripng_redistribute_type,
|
DEFUN (no_ripng_redistribute_type,
|
||||||
no_ripng_redistribute_type_cmd,
|
no_ripng_redistribute_type_cmd,
|
||||||
"no redistribute <kernel|connected|static|ospf6|isis|bgp|table>",
|
"no redistribute <kernel|connected|static|ospf6|isis|bgp|table> [metric (0-16)] [route-map WORD]",
|
||||||
NO_STR
|
NO_STR
|
||||||
"Redistribute\n"
|
"Redistribute\n"
|
||||||
QUAGGA_REDIST_HELP_STR_RIPNGD)
|
QUAGGA_REDIST_HELP_STR_RIPNGD
|
||||||
|
"Metric\n"
|
||||||
|
"Metric value\n"
|
||||||
|
"Route map reference\n"
|
||||||
|
"Pointer to route-map entries\n")
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
|
type = proto_redistnum(AFI_IP6, argv[2]->text);
|
||||||
type = proto_redistnum(AFI_IP6, argv[3]->arg);
|
|
||||||
|
|
||||||
if (type < 0)
|
if (type < 0)
|
||||||
{
|
{
|
||||||
vty_out(vty, "Invalid type %s%s", argv[3]->arg, VTY_NEWLINE);
|
vty_out(vty, "Invalid type %s%s", argv[2]->text, VTY_NEWLINE);
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,11 +385,11 @@ DEFUN (ripng_redistribute_type_metric,
|
|||||||
int metric;
|
int metric;
|
||||||
|
|
||||||
metric = atoi (argv[idx_number]->arg);
|
metric = atoi (argv[idx_number]->arg);
|
||||||
type = proto_redistnum(AFI_IP6, argv[idx_protocol]->arg);
|
type = proto_redistnum(AFI_IP6, argv[idx_protocol]->text);
|
||||||
|
|
||||||
if (type < 0)
|
if (type < 0)
|
||||||
{
|
{
|
||||||
vty_out(vty, "Invalid type %s%s", argv[idx_protocol]->arg, VTY_NEWLINE);
|
vty_out(vty, "Invalid type %s%s", argv[idx_protocol]->text, VTY_NEWLINE);
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -433,15 +412,15 @@ DEFUN (ripng_redistribute_type_routemap,
|
|||||||
int idx_word = 3;
|
int idx_word = 3;
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
type = proto_redistnum(AFI_IP6, argv[idx_protocol]->arg);
|
type = proto_redistnum(AFI_IP6, argv[idx_protocol]->text);
|
||||||
|
|
||||||
if (type < 0)
|
if (type < 0)
|
||||||
{
|
{
|
||||||
vty_out(vty, "Invalid type %s%s", argv[idx_protocol]->arg, VTY_NEWLINE);
|
vty_out(vty, "Invalid type %s%s", argv[idx_protocol]->text, VTY_NEWLINE);
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
ripng_redistribute_routemap_set (type, argv[idx_word]->arg);
|
ripng_redistribute_routemap_set (type, argv[idx_word]->text);
|
||||||
zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, AFI_IP6, type, 0,
|
zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, AFI_IP6, type, 0,
|
||||||
VRF_DEFAULT);
|
VRF_DEFAULT);
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
@ -464,17 +443,17 @@ DEFUN (ripng_redistribute_type_metric_routemap,
|
|||||||
int type;
|
int type;
|
||||||
int metric;
|
int metric;
|
||||||
|
|
||||||
type = proto_redistnum(AFI_IP6, argv[idx_protocol]->arg);
|
type = proto_redistnum(AFI_IP6, argv[idx_protocol]->text);
|
||||||
metric = atoi (argv[idx_number]->arg);
|
metric = atoi (argv[idx_number]->arg);
|
||||||
|
|
||||||
if (type < 0)
|
if (type < 0)
|
||||||
{
|
{
|
||||||
vty_out(vty, "Invalid type %s%s", argv[idx_protocol]->arg, VTY_NEWLINE);
|
vty_out(vty, "Invalid type %s%s", argv[idx_protocol]->text, VTY_NEWLINE);
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
ripng_redistribute_metric_set (type, metric);
|
ripng_redistribute_metric_set (type, metric);
|
||||||
ripng_redistribute_routemap_set (type, argv[idx_word]->arg);
|
ripng_redistribute_routemap_set (type, argv[idx_word]->text);
|
||||||
zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, AFI_IP6, type, 0, VRF_DEFAULT);
|
zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, AFI_IP6, type, 0, VRF_DEFAULT);
|
||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -2405,17 +2405,9 @@ DEFUN (ripng_default_metric,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME - The following ALIASes need to be implemented in this DEFUN
|
|
||||||
* "no default-metric <1-16>",
|
|
||||||
* NO_STR
|
|
||||||
* "Set a metric of redistribute routes\n"
|
|
||||||
* "Default metric\n"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEFUN (no_ripng_default_metric,
|
DEFUN (no_ripng_default_metric,
|
||||||
no_ripng_default_metric_cmd,
|
no_ripng_default_metric_cmd,
|
||||||
"no default-metric",
|
"no default-metric [(1-16)]",
|
||||||
NO_STR
|
NO_STR
|
||||||
"Set a metric of redistribute routes\n"
|
"Set a metric of redistribute routes\n"
|
||||||
"Default metric\n")
|
"Default metric\n")
|
||||||
|
Loading…
Reference in New Issue
Block a user