]> git.proxmox.com Git - mirror_frr.git/blobdiff - eigrpd/eigrp_vty.c
zebra: Allow ns delete to happen after under/over flow checks
[mirror_frr.git] / eigrpd / eigrp_vty.c
index 01407a746fcfa73ad8dd39f9116210277e4f3fb7..a0c4fa887a879fa01266b0a787b93d52b10eb228 100644 (file)
 #include "eigrpd/eigrp_dump.h"
 #include "eigrpd/eigrp_const.h"
 
+#ifndef VTYSH_EXTRACT_PL
+#include "eigrpd/eigrp_vty_clippy.c"
+#endif
+
 static int config_write_network(struct vty *vty, struct eigrp *eigrp)
 {
        struct route_node *rn;
@@ -95,36 +99,31 @@ static int config_write_interfaces(struct vty *vty, struct eigrp *eigrp)
        for (ALL_LIST_ELEMENTS_RO(eigrp->eiflist, node, ei)) {
                vty_frame(vty, "interface %s\n", ei->ifp->name);
 
-               if ((IF_DEF_PARAMS(ei->ifp)->auth_type)
-                   == EIGRP_AUTH_TYPE_MD5) {
+               if (ei->params.auth_type == EIGRP_AUTH_TYPE_MD5) {
                        vty_out(vty, " ip authentication mode eigrp %d md5\n",
                                eigrp->AS);
                }
 
-               if ((IF_DEF_PARAMS(ei->ifp)->auth_type)
-                   == EIGRP_AUTH_TYPE_SHA256) {
+               if (ei->params.auth_type == EIGRP_AUTH_TYPE_SHA256) {
                        vty_out(vty,
                                " ip authentication mode eigrp %d hmac-sha-256\n",
                                eigrp->AS);
                }
 
-               if (IF_DEF_PARAMS(ei->ifp)->auth_keychain) {
+               if (ei->params.auth_keychain) {
                        vty_out(vty,
                                " ip authentication key-chain eigrp %d %s\n",
-                               eigrp->AS,
-                               IF_DEF_PARAMS(ei->ifp)->auth_keychain);
+                               eigrp->AS, ei->params.auth_keychain);
                }
 
-               if ((IF_DEF_PARAMS(ei->ifp)->v_hello)
-                   != EIGRP_HELLO_INTERVAL_DEFAULT) {
+               if (ei->params.v_hello != EIGRP_HELLO_INTERVAL_DEFAULT) {
                        vty_out(vty, " ip hello-interval eigrp %d\n",
-                               IF_DEF_PARAMS(ei->ifp)->v_hello);
+                               ei->params.v_hello);
                }
 
-               if ((IF_DEF_PARAMS(ei->ifp)->v_wait)
-                   != EIGRP_HOLD_INTERVAL_DEFAULT) {
+               if (ei->params.v_wait != EIGRP_HOLD_INTERVAL_DEFAULT) {
                        vty_out(vty, " ip hold-time eigrp %d\n",
-                               IF_DEF_PARAMS(ei->ifp)->v_wait);
+                               ei->params.v_wait);
                }
 
                /*Separate this EIGRP interface configuration from the others*/
@@ -136,26 +135,30 @@ static int config_write_interfaces(struct vty *vty, struct eigrp *eigrp)
 
 static int eigrp_write_interface(struct vty *vty)
 {
-       struct listnode *node;
+       struct vrf *vrf = vrf_lookup_by_id(VRF_DEFAULT);
        struct interface *ifp;
+       struct eigrp_interface *ei;
+
+       FOR_ALL_INTERFACES (vrf, ifp) {
+               ei = ifp->info;
+               if (!ei)
+                       continue;
 
-       for (ALL_LIST_ELEMENTS_RO(vrf_iflist(VRF_DEFAULT), node, ifp)) {
                vty_frame(vty, "interface %s\n", ifp->name);
 
                if (ifp->desc)
                        vty_out(vty, " description %s\n", ifp->desc);
 
-               if (IF_DEF_PARAMS(ifp)->bandwidth != EIGRP_BANDWIDTH_DEFAULT)
-                       vty_out(vty, " bandwidth %u\n",
-                               IF_DEF_PARAMS(ifp)->bandwidth);
-               if (IF_DEF_PARAMS(ifp)->delay != EIGRP_DELAY_DEFAULT)
-                       vty_out(vty, " delay %u\n", IF_DEF_PARAMS(ifp)->delay);
-               if (IF_DEF_PARAMS(ifp)->v_hello != EIGRP_HELLO_INTERVAL_DEFAULT)
+               if (ei->params.bandwidth != EIGRP_BANDWIDTH_DEFAULT)
+                       vty_out(vty, " bandwidth %u\n", ei->params.bandwidth);
+               if (ei->params.delay != EIGRP_DELAY_DEFAULT)
+                       vty_out(vty, " delay %u\n", ei->params.delay);
+               if (ei->params.v_hello != EIGRP_HELLO_INTERVAL_DEFAULT)
                        vty_out(vty, " ip hello-interval eigrp %u\n",
-                               IF_DEF_PARAMS(ifp)->v_hello);
-               if (IF_DEF_PARAMS(ifp)->v_wait != EIGRP_HOLD_INTERVAL_DEFAULT)
+                               ei->params.v_hello);
+               if (ei->params.v_wait != EIGRP_HOLD_INTERVAL_DEFAULT)
                        vty_out(vty, " ip hold-time eigrp %u\n",
-                               IF_DEF_PARAMS(ifp)->v_wait);
+                               ei->params.v_wait);
 
                vty_endframe(vty, "!\n");
        }
@@ -291,8 +294,10 @@ DEFUN (eigrp_passive_interface,
        char *ifname = argv[1]->arg;
 
        for (ALL_LIST_ELEMENTS_RO(eigrp->eiflist, node, ei)) {
-               if (strcmp(ifname, ei->ifp->name) == 0)
-                       SET_IF_PARAM(IF_DEF_PARAMS(ei->ifp), passive_interface);
+               if (strcmp(ifname, ei->ifp->name) == 0) {
+                       ei->params.passive_interface = EIGRP_IF_PASSIVE;
+                       return CMD_SUCCESS;
+               }
        }
        return CMD_SUCCESS;
 }
@@ -310,9 +315,10 @@ DEFUN (no_eigrp_passive_interface,
        char *ifname = argv[2]->arg;
 
        for (ALL_LIST_ELEMENTS_RO(eigrp->eiflist, node, ei)) {
-               if (strcmp(ifname, ei->ifp->name) == 0)
-                       UNSET_IF_PARAM(IF_DEF_PARAMS(ei->ifp),
-                                      passive_interface);
+               if (strcmp(ifname, ei->ifp->name) == 0) {
+                       ei->params.passive_interface = EIGRP_IF_ACTIVE;
+                       return CMD_SUCCESS;
+               }
        }
 
        return CMD_SUCCESS;
@@ -394,7 +400,7 @@ DEFUN (eigrp_network,
        struct prefix p;
        int ret;
 
-       str2prefix(argv[1]->arg, &p);
+       (void)str2prefix(argv[1]->arg, &p);
 
        ret = eigrp_network_set(eigrp, &p);
 
@@ -417,7 +423,7 @@ DEFUN (no_eigrp_network,
        struct prefix p;
        int ret;
 
-       str2prefix(argv[2]->arg, &p);
+       (void)str2prefix(argv[2]->arg, &p);
 
        ret = eigrp_network_unset(eigrp, &p);
 
@@ -462,9 +468,10 @@ DEFUN (show_ip_eigrp_topology,
        "Show all links in topology table\n")
 {
        struct eigrp *eigrp;
-       struct listnode *node, *node2;
+       struct listnode *node;
        struct eigrp_prefix_entry *tn;
        struct eigrp_nexthop_entry *te;
+       struct route_node *rn;
        int first;
 
        eigrp = eigrp_lookup();
@@ -475,9 +482,13 @@ DEFUN (show_ip_eigrp_topology,
 
        show_ip_eigrp_topology_header(vty, eigrp);
 
-       for (ALL_LIST_ELEMENTS_RO(eigrp->topology_table, node, tn)) {
+       for (rn = route_top(eigrp->topology_table); rn; rn = route_next(rn)) {
+               if (!rn->info)
+                       continue;
+
+               tn = rn->info;
                first = 1;
-               for (ALL_LIST_ELEMENTS_RO(tn->entries, node2, te)) {
+               for (ALL_LIST_ELEMENTS_RO(tn->entries, node, te)) {
                        if (argc == 5
                            || (((te->flags
                                  & EIGRP_NEXTHOP_ENTRY_SUCCESSOR_FLAG)
@@ -486,7 +497,7 @@ DEFUN (show_ip_eigrp_topology,
                                     & EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG)
                                    == EIGRP_NEXTHOP_ENTRY_FSUCCESSOR_FLAG))) {
                                show_ip_eigrp_nexthop_entry(vty, eigrp, te,
-                                                            &first);
+                                                           &first);
                                first = 0;
                        }
                }
@@ -599,8 +610,9 @@ DEFUN (eigrp_if_delay,
        "Throughput delay (tens of microseconds)\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
-       u_int32_t delay;
+       uint32_t delay;
 
        eigrp = eigrp_lookup();
        if (eigrp == NULL) {
@@ -609,9 +621,13 @@ DEFUN (eigrp_if_delay,
                return CMD_SUCCESS;
        }
 
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
        delay = atoi(argv[1]->arg);
 
-       IF_DEF_PARAMS(ifp)->delay = delay;
+       ei->params.delay = delay;
        eigrp_if_reset(ifp);
 
        return CMD_SUCCESS;
@@ -625,6 +641,7 @@ DEFUN (no_eigrp_if_delay,
        "Throughput delay (tens of microseconds)\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -633,22 +650,26 @@ DEFUN (no_eigrp_if_delay,
 
                return CMD_SUCCESS;
        }
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
 
-       IF_DEF_PARAMS(ifp)->delay = EIGRP_DELAY_DEFAULT;
+       ei->params.delay = EIGRP_DELAY_DEFAULT;
        eigrp_if_reset(ifp);
 
        return CMD_SUCCESS;
 }
 
-DEFUN (eigrp_if_bandwidth,
+DEFPY (eigrp_if_bandwidth,
        eigrp_if_bandwidth_cmd,
-       "eigrp bandwidth (1-10000000)",
+       "eigrp bandwidth (1-10000000)$bw",
        "EIGRP specific commands\n"
        "Set bandwidth informational parameter\n"
        "Bandwidth in kilobits\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
-       u_int32_t bandwidth;
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -657,9 +678,12 @@ DEFUN (eigrp_if_bandwidth,
                return CMD_SUCCESS;
        }
 
-       bandwidth = atoi(argv[1]->arg);
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
 
-       IF_DEF_PARAMS(ifp)->bandwidth = bandwidth;
+       ei->params.bandwidth = bw;
        eigrp_if_reset(ifp);
 
        return CMD_SUCCESS;
@@ -674,6 +698,7 @@ DEFUN (no_eigrp_if_bandwidth,
        "Bandwidth in kilobits\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -682,7 +707,12 @@ DEFUN (no_eigrp_if_bandwidth,
                return CMD_SUCCESS;
        }
 
-       IF_DEF_PARAMS(ifp)->bandwidth = EIGRP_BANDWIDTH_DEFAULT;
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
+
+       ei->params.bandwidth = EIGRP_BANDWIDTH_DEFAULT;
        eigrp_if_reset(ifp);
 
        return CMD_SUCCESS;
@@ -697,7 +727,8 @@ DEFUN (eigrp_if_ip_hellointerval,
        "Seconds between hello transmissions\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
-       u_int32_t hello;
+       struct eigrp_interface *ei = ifp->info;
+       uint32_t hello;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -706,9 +737,14 @@ DEFUN (eigrp_if_ip_hellointerval,
                return CMD_SUCCESS;
        }
 
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
+
        hello = atoi(argv[3]->arg);
 
-       IF_DEF_PARAMS(ifp)->v_hello = hello;
+       ei->params.v_hello = hello;
 
        return CMD_SUCCESS;
 }
@@ -723,9 +759,8 @@ DEFUN (no_eigrp_if_ip_hellointerval,
        "Seconds between hello transmissions\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
-       struct eigrp_interface *ei;
-       struct listnode *node, *nnode;
 
        eigrp = eigrp_lookup();
        if (eigrp == NULL) {
@@ -733,17 +768,16 @@ DEFUN (no_eigrp_if_ip_hellointerval,
                return CMD_SUCCESS;
        }
 
-       IF_DEF_PARAMS(ifp)->v_hello = EIGRP_HELLO_INTERVAL_DEFAULT;
-
-       for (ALL_LIST_ELEMENTS(eigrp->eiflist, node, nnode, ei)) {
-               if (ei->ifp == ifp) {
-                       THREAD_TIMER_OFF(ei->t_hello);
-                       thread_add_timer(master, eigrp_hello_timer, ei, 1,
-                                        &ei->t_hello);
-                       break;
-               }
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
        }
 
+       ei->params.v_hello = EIGRP_HELLO_INTERVAL_DEFAULT;
+
+       THREAD_TIMER_OFF(ei->t_hello);
+       thread_add_timer(master, eigrp_hello_timer, ei, 1, &ei->t_hello);
+
        return CMD_SUCCESS;
 }
 
@@ -756,7 +790,8 @@ DEFUN (eigrp_if_ip_holdinterval,
        "Seconds before neighbor is considered down\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
-       u_int32_t hold;
+       struct eigrp_interface *ei = ifp->info;
+       uint32_t hold;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -765,9 +800,14 @@ DEFUN (eigrp_if_ip_holdinterval,
                return CMD_SUCCESS;
        }
 
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
+
        hold = atoi(argv[3]->arg);
 
-       IF_DEF_PARAMS(ifp)->v_wait = hold;
+       ei->params.v_wait = hold;
 
        return CMD_SUCCESS;
 }
@@ -782,7 +822,7 @@ DEFUN (eigrp_ip_summary_address,
        "Summary <network>/<length>, e.g. 192.168.0.0/16\n")
 {
        // VTY_DECLVAR_CONTEXT(interface, ifp);
-       // u_int32_t AS;
+       // uint32_t AS;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -809,7 +849,7 @@ DEFUN (no_eigrp_ip_summary_address,
        "Summary <network>/<length>, e.g. 192.168.0.0/16\n")
 {
        // VTY_DECLVAR_CONTEXT(interface, ifp);
-       // u_int32_t AS;
+       // uint32_t AS;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -828,13 +868,13 @@ DEFUN (no_eigrp_ip_summary_address,
 DEFUN (no_eigrp_if_ip_holdinterval,
        no_eigrp_if_ip_holdinterval_cmd,
        "no ip hold-time eigrp",
-       "No"
+       NO_STR
        "Interface Internet Protocol config commands\n"
        "Configures EIGRP hello interval\n"
-       "Enhanced Interior Gateway Routing Protocol (EIGRP)\n"
-       "Seconds before neighbor is considered down\n")
+       "Enhanced Interior Gateway Routing Protocol (EIGRP)\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -843,22 +883,27 @@ DEFUN (no_eigrp_if_ip_holdinterval,
                return CMD_SUCCESS;
        }
 
-       IF_DEF_PARAMS(ifp)->v_wait = EIGRP_HOLD_INTERVAL_DEFAULT;
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
+
+       ei->params.v_wait = EIGRP_HOLD_INTERVAL_DEFAULT;
 
        return CMD_SUCCESS;
 }
 
-static int str2auth_type(const char *str, struct interface *ifp)
+static int str2auth_type(const char *str, struct eigrp_interface *ei)
 {
        /* Sanity check. */
        if (str == NULL)
                return CMD_WARNING_CONFIG_FAILED;
 
        if (strncmp(str, "md5", 3) == 0) {
-               IF_DEF_PARAMS(ifp)->auth_type = EIGRP_AUTH_TYPE_MD5;
+               ei->params.auth_type = EIGRP_AUTH_TYPE_MD5;
                return CMD_SUCCESS;
        } else if (strncmp(str, "hmac-sha-256", 12) == 0) {
-               IF_DEF_PARAMS(ifp)->auth_type = EIGRP_AUTH_TYPE_SHA256;
+               ei->params.auth_type = EIGRP_AUTH_TYPE_SHA256;
                return CMD_SUCCESS;
        }
 
@@ -877,6 +922,7 @@ DEFUN (eigrp_authentication_mode,
        "HMAC SHA256 algorithm \n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -885,12 +931,17 @@ DEFUN (eigrp_authentication_mode,
                return CMD_SUCCESS;
        }
 
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
+
        //  if(strncmp(argv[2], "md5",3))
        //    IF_DEF_PARAMS (ifp)->auth_type = EIGRP_AUTH_TYPE_MD5;
        //  else if(strncmp(argv[2], "hmac-sha-256",12))
        //    IF_DEF_PARAMS (ifp)->auth_type = EIGRP_AUTH_TYPE_SHA256;
 
-       return str2auth_type(argv[5]->arg, ifp);
+       return str2auth_type(argv[5]->arg, ei);
 }
 
 DEFUN (no_eigrp_authentication_mode,
@@ -906,6 +957,7 @@ DEFUN (no_eigrp_authentication_mode,
        "HMAC SHA256 algorithm \n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
 
        eigrp = eigrp_lookup();
@@ -914,14 +966,20 @@ DEFUN (no_eigrp_authentication_mode,
                return CMD_SUCCESS;
        }
 
-       IF_DEF_PARAMS(ifp)->auth_type = EIGRP_AUTH_TYPE_NONE;
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
+
+       ei->params.auth_type = EIGRP_AUTH_TYPE_NONE;
 
        return CMD_SUCCESS;
 }
 
-DEFUN (eigrp_authentication_keychain,
+DEFPY (eigrp_authentication_keychain,
        eigrp_authentication_keychain_cmd,
-       "ip authentication key-chain eigrp (1-65535) WORD",
+       "[no] ip authentication key-chain eigrp (1-65535)$as WORD$name",
+       NO_STR
        "Interface Internet Protocol config commands\n"
        "Authentication subcommands\n"
        "Key-chain\n"
@@ -930,6 +988,7 @@ DEFUN (eigrp_authentication_keychain,
        "Name of key-chain\n")
 {
        VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct eigrp_interface *ei = ifp->info;
        struct eigrp *eigrp;
        struct keychain *keychain;
 
@@ -939,48 +998,34 @@ DEFUN (eigrp_authentication_keychain,
                return CMD_SUCCESS;
        }
 
-       keychain = keychain_lookup(argv[4]->arg);
-       if (keychain != NULL) {
-               if (IF_DEF_PARAMS(ifp)->auth_keychain) {
-                       free(IF_DEF_PARAMS(ifp)->auth_keychain);
-                       IF_DEF_PARAMS(ifp)->auth_keychain =
-                               strdup(keychain->name);
-               } else
-                       IF_DEF_PARAMS(ifp)->auth_keychain =
-                               strdup(keychain->name);
-       } else
-               vty_out(vty, "Key chain with specified name not found\n");
-
-       return CMD_SUCCESS;
-}
-
-DEFUN (no_eigrp_authentication_keychain,
-       no_eigrp_authentication_keychain_cmd,
-       "no ip authentication key-chain eigrp (1-65535) WORD",
-       "Disable\n"
-       "Interface Internet Protocol config commands\n"
-       "Authentication subcommands\n"
-       "Key-chain\n"
-       "Enhanced Interior Gateway Routing Protocol (EIGRP)\n"
-       "Autonomous system number\n"
-       "Name of key-chain\n")
-{
-       VTY_DECLVAR_CONTEXT(interface, ifp);
-       struct eigrp *eigrp;
+       if (!ei) {
+               vty_out(vty, " EIGRP not configured on this interface\n");
+               return CMD_SUCCESS;
+       }
 
-       eigrp = eigrp_lookup();
-       if (eigrp == NULL) {
-               vty_out(vty, "EIGRP Routing Process not enabled\n");
+       if (no) {
+               if ((ei->params.auth_keychain != NULL)
+                   && (strcmp(ei->params.auth_keychain, name) == 0)) {
+                       free(ei->params.auth_keychain);
+                       ei->params.auth_keychain = NULL;
+               } else
+                       vty_out(vty,
+                               "Key chain with specified name not configured on interface\n");
                return CMD_SUCCESS;
        }
 
-       if ((IF_DEF_PARAMS(ifp)->auth_keychain != NULL)
-           && (strcmp(IF_DEF_PARAMS(ifp)->auth_keychain, argv[5]->arg) == 0)) {
-               free(IF_DEF_PARAMS(ifp)->auth_keychain);
-               IF_DEF_PARAMS(ifp)->auth_keychain = NULL;
-       } else
+       keychain = keychain_lookup(name);
+       if (keychain != NULL) {
+               if (ei->params.auth_keychain) {
+                       free(ei->params.auth_keychain);
+                       ei->params.auth_keychain = strdup(keychain->name);
+               } else
+                       ei->params.auth_keychain = strdup(keychain->name);
+       } else {
                vty_out(vty,
-                       "Key chain with specified name not configured on interface\n");
+                       "Key chain with specified name not found\n");
+               return CMD_WARNING_CONFIG_FAILED;
+       }
 
        return CMD_SUCCESS;
 }
@@ -1019,7 +1064,7 @@ DEFUN (eigrp_redistribute_source_metric,
 DEFUN (no_eigrp_redistribute_source_metric,
        no_eigrp_redistribute_source_metric_cmd,
        "no redistribute " FRR_REDIST_STR_EIGRPD
-       " metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)",
+       " [metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)]",
        "Disable\n"
        REDIST_STR
        FRR_REDIST_HELP_STR_EIGRPD
@@ -1054,7 +1099,7 @@ DEFUN (eigrp_variance,
        "Metric variance multiplier\n")
 {
        struct eigrp *eigrp;
-       u_char variance;
+       uint8_t variance;
 
        eigrp = eigrp_lookup();
        if (eigrp == NULL) {
@@ -1098,7 +1143,7 @@ DEFUN (eigrp_maximum_paths,
        "Number of paths\n")
 {
        struct eigrp *eigrp;
-       u_char max;
+       uint8_t max;
 
        eigrp = eigrp_lookup();
        if (eigrp == NULL) {
@@ -1268,8 +1313,7 @@ DEFUN (clear_ip_eigrp_neighbors_IP,
        struct in_addr nbr_addr;
 
        if (!inet_aton(argv[4]->arg, &nbr_addr)) {
-               vty_out(vty, "Unable to parse %s",
-                       argv[4]->arg);
+               vty_out(vty, "Unable to parse %s", argv[4]->arg);
                return CMD_WARNING;
        }
 
@@ -1375,8 +1419,7 @@ DEFUN (clear_ip_eigrp_neighbors_IP_soft,
        struct in_addr nbr_addr;
 
        if (!inet_aton(argv[4]->arg, &nbr_addr)) {
-               vty_out(vty, "Unable to parse: %s",
-                       argv[4]->arg);
+               vty_out(vty, "Unable to parse: %s", argv[4]->arg);
                return CMD_WARNING;
        }
 
@@ -1474,7 +1517,6 @@ void eigrp_vty_if_init(void)
        install_element(INTERFACE_NODE, &eigrp_authentication_mode_cmd);
        install_element(INTERFACE_NODE, &no_eigrp_authentication_mode_cmd);
        install_element(INTERFACE_NODE, &eigrp_authentication_keychain_cmd);
-       install_element(INTERFACE_NODE, &no_eigrp_authentication_keychain_cmd);
 
        /*EIGRP Summarization commands*/
        install_element(INTERFACE_NODE, &eigrp_ip_summary_address_cmd);