diff options
Diffstat (limited to 'ripd/rip_interface.c')
| -rw-r--r-- | ripd/rip_interface.c | 346 |
1 files changed, 124 insertions, 222 deletions
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c index 6d6cb0c686..4c750faf4c 100644 --- a/ripd/rip_interface.c +++ b/ripd/rip_interface.c @@ -86,8 +86,7 @@ ipv4_multicast_join (int sock, ifindex); if (ret < 0) - zlog (NULL, LOG_INFO, "can't setsockopt IP_ADD_MEMBERSHIP %s", - safe_strerror (errno)); + zlog_info("can't setsockopt IP_ADD_MEMBERSHIP %s", safe_strerror(errno)); return ret; } @@ -108,7 +107,7 @@ ipv4_multicast_leave (int sock, ifindex); if (ret < 0) - zlog (NULL, LOG_INFO, "can't setsockopt IP_DROP_MEMBERSHIP"); + zlog_info("can't setsockopt IP_DROP_MEMBERSHIP"); return ret; } @@ -122,9 +121,9 @@ rip_interface_new (void) struct rip_interface *ri; ri = XCALLOC (MTYPE_RIP_INTERFACE, sizeof (struct rip_interface)); - + rip_interface_reset (ri); - + return ri; } @@ -556,7 +555,7 @@ rip_interface_reset (struct rip_interface *ri) ri->prefix[RIP_FILTER_IN] = NULL; ri->prefix[RIP_FILTER_OUT] = NULL; - + ri->recv_badpackets = 0; ri->recv_badroutes = 0; ri->sent_updates = 0; @@ -585,24 +584,26 @@ rip_if_down(struct interface *ifp) struct list *list = NULL; struct listnode *listnode = NULL, *nextnode = NULL; if (rip) - for (rp = route_top (rip->table); rp; rp = route_next (rp)) - if ((list = rp->info) != NULL) - for (ALL_LIST_ELEMENTS (list, listnode, nextnode, rinfo)) - if (rinfo->ifindex == ifp->ifindex) - rip_ecmp_delete (rinfo); + { + for (rp = route_top (rip->table); rp; rp = route_next (rp)) + if ((list = rp->info) != NULL) + for (ALL_LIST_ELEMENTS (list, listnode, nextnode, rinfo)) + if (rinfo->ifindex == ifp->ifindex) + rip_ecmp_delete (rinfo); - ri = ifp->info; + ri = ifp->info; - if (ri->running) - { - if (IS_RIP_DEBUG_EVENT) - zlog_debug ("turn off %s", ifp->name); + if (ri->running) + { + if (IS_RIP_DEBUG_EVENT) + zlog_debug ("turn off %s", ifp->name); - /* Leave from multicast group. */ - rip_multicast_leave (ifp, rip->sock); + /* Leave from multicast group. */ + rip_multicast_leave (ifp, rip->sock); - ri->running = 0; - } + ri->running = 0; + } + } return 0; } @@ -1216,24 +1217,25 @@ rip_passive_nondefault_clean (void) /* RIP enable network or interface configuration. */ DEFUN (rip_network, rip_network_cmd, - "network (A.B.C.D/M|WORD)", + "network <A.B.C.D/M|WORD>", "Enable routing on an IP network\n" "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" "Interface name\n") { + int idx_ipv4_word = 1; int ret; struct prefix_ipv4 p; - ret = str2prefix_ipv4 (argv[0], &p); + ret = str2prefix_ipv4 (argv[idx_ipv4_word]->arg, &p); if (ret) ret = rip_enable_network_add ((struct prefix *) &p); else - ret = rip_enable_if_add (argv[0]); + ret = rip_enable_if_add (argv[idx_ipv4_word]->arg); if (ret < 0) { - vty_out (vty, "There is a same network configuration %s%s", argv[0], + vty_out (vty, "There is a same network configuration %s%s", argv[idx_ipv4_word]->arg, VTY_NEWLINE); return CMD_WARNING; } @@ -1244,25 +1246,26 @@ DEFUN (rip_network, /* RIP enable network or interface configuration. */ DEFUN (no_rip_network, no_rip_network_cmd, - "no network (A.B.C.D/M|WORD)", + "no network <A.B.C.D/M|WORD>", NO_STR "Enable routing on an IP network\n" "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n" "Interface name\n") { + int idx_ipv4_word = 2; int ret; struct prefix_ipv4 p; - ret = str2prefix_ipv4 (argv[0], &p); + ret = str2prefix_ipv4 (argv[idx_ipv4_word]->arg, &p); if (ret) ret = rip_enable_network_delete ((struct prefix *) &p); else - ret = rip_enable_if_delete (argv[0]); + ret = rip_enable_if_delete (argv[idx_ipv4_word]->arg); if (ret < 0) { - vty_out (vty, "Can't find network configuration %s%s", argv[0], + vty_out (vty, "Can't find network configuration %s%s", argv[idx_ipv4_word]->arg, VTY_NEWLINE); return CMD_WARNING; } @@ -1277,10 +1280,11 @@ DEFUN (rip_neighbor, "Specify a neighbor router\n" "Neighbor address\n") { + int idx_ipv4 = 1; int ret; struct prefix_ipv4 p; - ret = str2prefix_ipv4 (argv[0], &p); + ret = str2prefix_ipv4 (argv[idx_ipv4]->arg, &p); if (ret <= 0) { @@ -1301,10 +1305,11 @@ DEFUN (no_rip_neighbor, "Specify a neighbor router\n" "Neighbor address\n") { + int idx_ipv4 = 2; int ret; struct prefix_ipv4 p; - ret = str2prefix_ipv4 (argv[0], &p); + ret = str2prefix_ipv4 (argv[idx_ipv4]->arg, &p); if (ret <= 0) { @@ -1319,7 +1324,7 @@ DEFUN (no_rip_neighbor, DEFUN (ip_rip_receive_version, ip_rip_receive_version_cmd, - "ip rip receive version (1|2|none)", + "ip rip receive version <(1-2)|none>", IP_STR "Routing Information Protocol\n" "Advertisement reception\n" @@ -1328,13 +1333,13 @@ DEFUN (ip_rip_receive_version, "RIP version 2\n" "None\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); + int idx_type = 4; struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; - switch (*argv[0]) + switch (argv[idx_type]->arg[0]) { case '1': ri->ri_receive = RI_RIP_VERSION_1; @@ -1354,7 +1359,7 @@ DEFUN (ip_rip_receive_version, DEFUN (ip_rip_receive_version_1, ip_rip_receive_version_1_cmd, - "ip rip receive version 1 2", + "ip rip receive version (1-1) (2-2)", IP_STR "Routing Information Protocol\n" "Advertisement reception\n" @@ -1362,10 +1367,9 @@ DEFUN (ip_rip_receive_version_1, "RIP version 1\n" "RIP version 2\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; /* Version 1 and 2. */ @@ -1375,7 +1379,7 @@ DEFUN (ip_rip_receive_version_1, DEFUN (ip_rip_receive_version_2, ip_rip_receive_version_2_cmd, - "ip rip receive version 2 1", + "ip rip receive version (2-2) (1-1)", IP_STR "Routing Information Protocol\n" "Advertisement reception\n" @@ -1383,10 +1387,9 @@ DEFUN (ip_rip_receive_version_2, "RIP version 2\n" "RIP version 1\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; /* Version 1 and 2. */ @@ -1396,37 +1399,28 @@ DEFUN (ip_rip_receive_version_2, DEFUN (no_ip_rip_receive_version, no_ip_rip_receive_version_cmd, - "no ip rip receive version", + "no ip rip receive version [(1-2)]", NO_STR IP_STR "Routing Information Protocol\n" "Advertisement reception\n" - "Version control\n") + "Version control\n" + "Version 1\n" + "Version 2\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; ri->ri_receive = RI_RIP_UNSPEC; return CMD_SUCCESS; } -ALIAS (no_ip_rip_receive_version, - no_ip_rip_receive_version_num_cmd, - "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 (ip_rip_send_version, ip_rip_send_version_cmd, - "ip rip send version (1|2)", + "ip rip send version (1-2)", IP_STR "Routing Information Protocol\n" "Advertisement transmission\n" @@ -1434,19 +1428,19 @@ DEFUN (ip_rip_send_version, "RIP version 1\n" "RIP version 2\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); + int idx_type = 4; struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; /* Version 1. */ - if (atoi (argv[0]) == 1) + if (atoi (argv[idx_type]->arg) == 1) { ri->ri_send = RI_RIP_VERSION_1; return CMD_SUCCESS; } - if (atoi (argv[0]) == 2) + if (atoi (argv[idx_type]->arg) == 2) { ri->ri_send = RI_RIP_VERSION_2; return CMD_SUCCESS; @@ -1456,7 +1450,7 @@ DEFUN (ip_rip_send_version, DEFUN (ip_rip_send_version_1, ip_rip_send_version_1_cmd, - "ip rip send version 1 2", + "ip rip send version (1-1) (2-2)", IP_STR "Routing Information Protocol\n" "Advertisement transmission\n" @@ -1464,10 +1458,9 @@ DEFUN (ip_rip_send_version_1, "RIP version 1\n" "RIP version 2\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; /* Version 1 and 2. */ @@ -1477,7 +1470,7 @@ DEFUN (ip_rip_send_version_1, DEFUN (ip_rip_send_version_2, ip_rip_send_version_2_cmd, - "ip rip send version 2 1", + "ip rip send version (2-2) (1-1)", IP_STR "Routing Information Protocol\n" "Advertisement transmission\n" @@ -1485,10 +1478,9 @@ DEFUN (ip_rip_send_version_2, "RIP version 2\n" "RIP version 1\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; /* Version 1 and 2. */ @@ -1498,33 +1490,24 @@ DEFUN (ip_rip_send_version_2, DEFUN (no_ip_rip_send_version, no_ip_rip_send_version_cmd, - "no ip rip send version", + "no ip rip send version [(1-2)]", NO_STR IP_STR "Routing Information Protocol\n" "Advertisement transmission\n" - "Version control\n") + "Version control\n" + "Version 1\n" + "Version 2\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; ri->ri_send = RI_RIP_UNSPEC; return CMD_SUCCESS; } -ALIAS (no_ip_rip_send_version, - no_ip_rip_send_version_num_cmd, - "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 (ip_rip_v2_broadcast, ip_rip_v2_broadcast_cmd, @@ -1533,10 +1516,9 @@ DEFUN (ip_rip_v2_broadcast, "Routing Information Protocol\n" "Send ip broadcast v2 update\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; ri->v2_broadcast = 1; @@ -1551,10 +1533,9 @@ DEFUN (no_ip_rip_v2_broadcast, "Routing Information Protocol\n" "Send ip broadcast v2 update\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; ri->v2_broadcast = 0; @@ -1563,64 +1544,57 @@ DEFUN (no_ip_rip_v2_broadcast, DEFUN (ip_rip_authentication_mode, ip_rip_authentication_mode_cmd, - "ip rip authentication mode (md5|text)", + "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") + "Clear text authentication\n" + "MD5 authentication data length\n" + "RFC compatible\n" + "Old ripd compatible\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); + char *cryptmode = argv[4]->text; + char *authlen = (argc > 5) ? argv[6]->text : NULL; struct rip_interface *ri; int auth_type; - ifp = (struct interface *)vty->index; ri = ifp->info; - if ( (argc < 1) || (argc > 2) ) - { - vty_out (vty, "incorrect argument count%s", VTY_NEWLINE); - return CMD_WARNING; - } - - if (strncmp ("md5", argv[0], strlen (argv[0])) == 0) + if (strmatch ("md5", cryptmode)) auth_type = RIP_AUTH_MD5; - else if (strncmp ("text", argv[0], strlen (argv[0])) == 0) + else { + assert (strmatch ("text", cryptmode)); 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; - return CMD_SUCCESS; - } + ri->auth_type = auth_type; - 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); 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[1], 1) == 0) - ri->md5_auth_len = RIP_AUTH_MD5_SIZE; - else if (strncmp ("o", argv[1], 1) == 0) - ri->md5_auth_len = RIP_AUTH_MD5_COMPAT_SIZE; - else - return CMD_WARNING; - - ri->auth_type = auth_type; - return CMD_SUCCESS; } -ALIAS (ip_rip_authentication_mode, - ip_rip_authentication_mode_authlen_cmd, - "ip rip authentication mode (md5|text) auth-length (rfc|old-ripd)", +DEFUN (no_ip_rip_authentication_mode, + no_ip_rip_authentication_mode_cmd, + "no ip rip authentication mode [<md5|text> [auth-length <rfc|old-ripd>]]", + NO_STR IP_STR "Routing Information Protocol\n" "Authentication control\n" @@ -1630,20 +1604,10 @@ ALIAS (ip_rip_authentication_mode, "MD5 authentication data length\n" "RFC compatible\n" "Old ripd compatible\n") - -DEFUN (no_ip_rip_authentication_mode, - no_ip_rip_authentication_mode_cmd, - "no ip rip authentication mode", - NO_STR - IP_STR - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication mode\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; ri->auth_type = RIP_NO_AUTH; @@ -1652,31 +1616,6 @@ DEFUN (no_ip_rip_authentication_mode, return CMD_SUCCESS; } -ALIAS (no_ip_rip_authentication_mode, - no_ip_rip_authentication_mode_type_cmd, - "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") - -ALIAS (no_ip_rip_authentication_mode, - no_ip_rip_authentication_mode_type_authlen_cmd, - "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 (ip_rip_authentication_string, ip_rip_authentication_string_cmd, "ip rip authentication string LINE", @@ -1686,13 +1625,13 @@ DEFUN (ip_rip_authentication_string, "Authentication string\n" "Authentication string\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); + int idx_line = 4; struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; - if (strlen (argv[0]) > 16) + if (strlen (argv[idx_line]->arg) > 16) { vty_out (vty, "%% RIPv2 authentication string must be shorter than 16%s", VTY_NEWLINE); @@ -1708,24 +1647,24 @@ DEFUN (ip_rip_authentication_string, if (ri->auth_str) free (ri->auth_str); - ri->auth_str = strdup (argv[0]); + ri->auth_str = strdup (argv[idx_line]->arg); return CMD_SUCCESS; } DEFUN (no_ip_rip_authentication_string, no_ip_rip_authentication_string_cmd, - "no ip rip authentication string", + "no ip rip authentication string [LINE]", NO_STR IP_STR "Routing Information Protocol\n" "Authentication control\n" + "Authentication string\n" "Authentication string\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *)vty->index; ri = ifp->info; if (ri->auth_str) @@ -1736,15 +1675,6 @@ DEFUN (no_ip_rip_authentication_string, return CMD_SUCCESS; } -ALIAS (no_ip_rip_authentication_string, - no_ip_rip_authentication_string2_cmd, - "no ip rip authentication string LINE", - NO_STR - IP_STR - "Routing Information Protocol\n" - "Authentication control\n" - "Authentication string\n" - "Authentication string\n") DEFUN (ip_rip_authentication_key_chain, ip_rip_authentication_key_chain_cmd, @@ -1755,10 +1685,10 @@ DEFUN (ip_rip_authentication_key_chain, "Authentication key-chain\n" "name of key-chain\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); + int idx_line = 4; struct rip_interface *ri; - ifp = (struct interface *) vty->index; ri = ifp->info; if (ri->auth_str) @@ -1771,24 +1701,24 @@ DEFUN (ip_rip_authentication_key_chain, if (ri->key_chain) free (ri->key_chain); - ri->key_chain = strdup (argv[0]); + ri->key_chain = strdup (argv[idx_line]->arg); return CMD_SUCCESS; } DEFUN (no_ip_rip_authentication_key_chain, no_ip_rip_authentication_key_chain_cmd, - "no ip rip authentication key-chain", + "no ip rip authentication key-chain [LINE]", NO_STR IP_STR "Routing Information Protocol\n" "Authentication control\n" - "Authentication key-chain\n") + "Authentication key-chain\n" + "name of key-chain\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = (struct interface *) vty->index; ri = ifp->info; if (ri->key_chain) @@ -1799,15 +1729,6 @@ DEFUN (no_ip_rip_authentication_key_chain, return CMD_SUCCESS; } -ALIAS (no_ip_rip_authentication_key_chain, - no_ip_rip_authentication_key_chain2_cmd, - "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") /* CHANGED: ip rip split-horizon Cisco and Zebra's command is @@ -1820,10 +1741,9 @@ DEFUN (ip_rip_split_horizon, "Routing Information Protocol\n" "Perform split horizon\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = vty->index; ri = ifp->info; ri->split_horizon = RIP_SPLIT_HORIZON; @@ -1838,10 +1758,9 @@ DEFUN (ip_rip_split_horizon_poisoned_reverse, "Perform split horizon\n" "With poisoned-reverse\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = vty->index; ri = ifp->info; ri->split_horizon = RIP_SPLIT_HORIZON_POISONED_REVERSE; @@ -1860,10 +1779,9 @@ DEFUN (no_ip_rip_split_horizon, "Routing Information Protocol\n" "Perform split horizon\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = vty->index; ri = ifp->info; ri->split_horizon = RIP_NO_SPLIT_HORIZON; @@ -1879,18 +1797,17 @@ DEFUN (no_ip_rip_split_horizon_poisoned_reverse, "Perform split horizon\n" "With poisoned-reverse\n") { - struct interface *ifp; + VTY_DECLVAR_CONTEXT(interface, ifp); struct rip_interface *ri; - ifp = vty->index; ri = ifp->info; switch( ri->split_horizon ) { - case RIP_SPLIT_HORIZON_POISONED_REVERSE: - ri->split_horizon = RIP_SPLIT_HORIZON; - default: - break; + case RIP_SPLIT_HORIZON_POISONED_REVERSE: + ri->split_horizon = RIP_SPLIT_HORIZON; + default: + break; } return CMD_SUCCESS; @@ -1898,43 +1815,39 @@ DEFUN (no_ip_rip_split_horizon_poisoned_reverse, DEFUN (rip_passive_interface, rip_passive_interface_cmd, - "passive-interface (IFNAME|default)", + "passive-interface <IFNAME|default>", "Suppress routing updates on an interface\n" "Interface name\n" "default for all interfaces\n") { - const char *ifname = argv[0]; - - if (!strcmp(ifname,"default")) { + if (argv[1]->type == WORD_TKN) { // user passed 'default' passive_default = 1; rip_passive_nondefault_clean(); return CMD_SUCCESS; } if (passive_default) - return rip_passive_nondefault_unset (vty, ifname); + return rip_passive_nondefault_unset (vty, argv[1]->arg); else - return rip_passive_nondefault_set (vty, ifname); + return rip_passive_nondefault_set (vty, argv[1]->arg); } DEFUN (no_rip_passive_interface, no_rip_passive_interface_cmd, - "no passive-interface (IFNAME|default)", + "no passive-interface <IFNAME|default>", NO_STR "Suppress routing updates on an interface\n" "Interface name\n" "default for all interfaces\n") { - const char *ifname = argv[0]; - - if (!strcmp(ifname,"default")) { + if (argv[2]->type == WORD_TKN) { passive_default = 0; rip_passive_nondefault_clean(); return CMD_SUCCESS; } if (passive_default) - return rip_passive_nondefault_set (vty, ifname); + return rip_passive_nondefault_set (vty, argv[2]->arg); else - return rip_passive_nondefault_unset (vty, ifname); + return rip_passive_nondefault_unset (vty, argv[2]->arg); } /* Write rip configuration of each interface. */ @@ -2119,13 +2032,9 @@ rip_if_init (void) /* Install interface node. */ install_node (&interface_node, rip_interface_config_write); + if_cmd_init (); /* Install commands. */ - install_element (CONFIG_NODE, &interface_cmd); - install_element (CONFIG_NODE, &no_interface_cmd); - install_default (INTERFACE_NODE); - install_element (INTERFACE_NODE, &interface_desc_cmd); - install_element (INTERFACE_NODE, &no_interface_desc_cmd); install_element (RIP_NODE, &rip_network_cmd); install_element (RIP_NODE, &no_rip_network_cmd); install_element (RIP_NODE, &rip_neighbor_cmd); @@ -2138,30 +2047,23 @@ rip_if_init (void) install_element (INTERFACE_NODE, &ip_rip_send_version_1_cmd); install_element (INTERFACE_NODE, &ip_rip_send_version_2_cmd); install_element (INTERFACE_NODE, &no_ip_rip_send_version_cmd); - install_element (INTERFACE_NODE, &no_ip_rip_send_version_num_cmd); install_element (INTERFACE_NODE, &ip_rip_receive_version_cmd); install_element (INTERFACE_NODE, &ip_rip_receive_version_1_cmd); install_element (INTERFACE_NODE, &ip_rip_receive_version_2_cmd); install_element (INTERFACE_NODE, &no_ip_rip_receive_version_cmd); - install_element (INTERFACE_NODE, &no_ip_rip_receive_version_num_cmd); install_element (INTERFACE_NODE, &ip_rip_v2_broadcast_cmd); install_element (INTERFACE_NODE, &no_ip_rip_v2_broadcast_cmd); install_element (INTERFACE_NODE, &ip_rip_authentication_mode_cmd); - install_element (INTERFACE_NODE, &ip_rip_authentication_mode_authlen_cmd); install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_cmd); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_type_cmd); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_mode_type_authlen_cmd); install_element (INTERFACE_NODE, &ip_rip_authentication_key_chain_cmd); install_element (INTERFACE_NODE, &no_ip_rip_authentication_key_chain_cmd); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_key_chain2_cmd); install_element (INTERFACE_NODE, &ip_rip_authentication_string_cmd); install_element (INTERFACE_NODE, &no_ip_rip_authentication_string_cmd); - install_element (INTERFACE_NODE, &no_ip_rip_authentication_string2_cmd); install_element (INTERFACE_NODE, &ip_rip_split_horizon_cmd); install_element (INTERFACE_NODE, &ip_rip_split_horizon_poisoned_reverse_cmd); |
