return CMD_SUCCESS;
}
+static void if_autocomplete(vector comps, struct cmd_token *token)
+{
+ struct interface *ifp;
+ struct vrf *vrf = NULL;
+
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ RB_FOREACH (ifp, if_name_head, &vrf->ifaces_by_name) {
+ vector_set(comps, XSTRDUP(MTYPE_COMPLETION, ifp->name));
+ }
+ }
+}
+
+static const struct cmd_variable_handler if_var_handlers[] = {
+ {/* "interface NAME" */
+ .varname = "interface",
+ .completions = if_autocomplete},
+ {.tokenname = "IFNAME", .completions = if_autocomplete},
+ {.tokenname = "INTERFACE", .completions = if_autocomplete},
+ {.completions = NULL}};
+
void if_cmd_init(void)
{
+ cmd_variable_handler_register(if_var_handlers);
+
install_element(CONFIG_NODE, &interface_cmd);
install_element(CONFIG_NODE, &no_interface_cmd);
}
#endif /* ifaddr_ipv4_table */
-static void if_autocomplete(vector comps, struct cmd_token *token)
-{
- struct interface *ifp;
- struct listnode *ln;
- struct vrf *vrf = NULL;
-
- RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
- for (ALL_LIST_ELEMENTS_RO(vrf->iflist, ln, ifp))
- vector_set(comps, XSTRDUP(MTYPE_COMPLETION, ifp->name));
- }
-}
-
-static const struct cmd_variable_handler if_var_handlers[] = {
- {/* "interface NAME" */
- .varname = "interface",
- .completions = if_autocomplete},
- {.tokenname = "IFNAME", .completions = if_autocomplete},
- {.tokenname = "INTERFACE", .completions = if_autocomplete},
- {.completions = NULL}};
-
/* Initialize interface list. */
void if_init(struct list **intf_list)
{
#endif /* ifaddr_ipv4_table */
(*intf_list)->cmp = (int (*)(void *, void *))if_cmp_func;
-
- cmd_variable_handler_register(if_var_handlers);
}
void if_terminate(struct list **intf_list)