📄 distribute.c
字号:
} /* Get interface name corresponding distribute list. */ dist = distribute_list_set (argv[2], type, argv[0]); return CMD_SUCCESS;} ALIAS (distribute_list, ipv6_distribute_list_cmd, "distribute-list WORD (in|out) WORD", "Filter networks in routing updates\n" "Access-list name\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n" "Interface name\n");DEFUN (no_districute_list, no_distribute_list_cmd, "no distribute-list WORD (in|out) WORD", NO_STR "Filter networks in routing updates\n" "Access-list name\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n" "Interface name\n"){ int ret; enum distribute_type type; /* Check of distribute list type. */ if (strncmp (argv[1], "i", 1) == 0) type = DISTRIBUTE_IN; else if (strncmp (argv[1], "o", 1) == 0) type = DISTRIBUTE_OUT; else { vty_out (vty, "distribute list direction must be [in|out]%s", VTY_NEWLINE); return CMD_WARNING; } ret = distribute_list_unset (argv[2], type, argv[0]); if (! ret) { vty_out (vty, "distribute list doesn't exist%s", VTY_NEWLINE); return CMD_WARNING; } return CMD_SUCCESS;} ALIAS (no_districute_list, no_ipv6_distribute_list_cmd, "no distribute-list WORD (in|out) WORD", NO_STR "Filter networks in routing updates\n" "Access-list name\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n" "Interface name\n");DEFUN (districute_list_prefix_all, distribute_list_prefix_all_cmd, "distribute-list prefix WORD (in|out)", "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n"){ enum distribute_type type; struct distribute *dist; /* Check of distribute list type. */ if (strncmp (argv[1], "i", 1) == 0) type = DISTRIBUTE_IN; else if (strncmp (argv[1], "o", 1) == 0) type = DISTRIBUTE_OUT; else { vty_out (vty, "distribute list direction must be [in|out]%s", VTY_NEWLINE); return CMD_WARNING; } /* Get interface name corresponding distribute list. */ dist = distribute_list_prefix_set (NULL, type, argv[0]); return CMD_SUCCESS;} ALIAS (districute_list_prefix_all, ipv6_distribute_list_prefix_all_cmd, "distribute-list prefix WORD (in|out)", "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n");DEFUN (no_districute_list_prefix_all, no_distribute_list_prefix_all_cmd, "no distribute-list prefix WORD (in|out)", NO_STR "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n"){ int ret; enum distribute_type type; /* Check of distribute list type. */ if (strncmp (argv[1], "i", 1) == 0) type = DISTRIBUTE_IN; else if (strncmp (argv[1], "o", 1) == 0) type = DISTRIBUTE_OUT; else { vty_out (vty, "distribute list direction must be [in|out]%s", VTY_NEWLINE); return CMD_WARNING; } ret = distribute_list_prefix_unset (NULL, type, argv[0]); if (! ret) { vty_out (vty, "distribute list doesn't exist%s", VTY_NEWLINE); return CMD_WARNING; } return CMD_SUCCESS;} ALIAS (no_districute_list_prefix_all, no_ipv6_distribute_list_prefix_all_cmd, "no distribute-list prefix WORD (in|out)", NO_STR "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n");DEFUN (districute_list_prefix, distribute_list_prefix_cmd, "distribute-list prefix WORD (in|out) WORD", "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n" "Interface name\n"){ enum distribute_type type; struct distribute *dist; /* Check of distribute list type. */ if (strncmp (argv[1], "i", 1) == 0) type = DISTRIBUTE_IN; else if (strncmp (argv[1], "o", 1) == 0) type = DISTRIBUTE_OUT; else { vty_out (vty, "distribute list direction must be [in|out]%s", VTY_NEWLINE); return CMD_WARNING; } /* Get interface name corresponding distribute list. */ dist = distribute_list_prefix_set (argv[2], type, argv[0]); return CMD_SUCCESS;} ALIAS (districute_list_prefix, ipv6_distribute_list_prefix_cmd, "distribute-list prefix WORD (in|out) WORD", "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n" "Interface name\n");DEFUN (no_districute_list_prefix, no_distribute_list_prefix_cmd, "no distribute-list prefix WORD (in|out) WORD", NO_STR "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n" "Interface name\n"){ int ret; enum distribute_type type; /* Check of distribute list type. */ if (strncmp (argv[1], "i", 1) == 0) type = DISTRIBUTE_IN; else if (strncmp (argv[1], "o", 1) == 0) type = DISTRIBUTE_OUT; else { vty_out (vty, "distribute list direction must be [in|out]%s", VTY_NEWLINE); return CMD_WARNING; } ret = distribute_list_prefix_unset (argv[2], type, argv[0]); if (! ret) { vty_out (vty, "distribute list doesn't exist%s", VTY_NEWLINE); return CMD_WARNING; } return CMD_SUCCESS;} ALIAS (no_districute_list_prefix, no_ipv6_distribute_list_prefix_cmd, "no distribute-list prefix WORD (in|out) WORD", NO_STR "Filter networks in routing updates\n" "Filter prefixes in routing updates\n" "Name of an IP prefix-list\n" "Filter incoming routing updates\n" "Filter outgoing routing updates\n" "Interface name\n");intconfig_show_distribute (struct vty *vty){ int i; struct hash_backet *mp; struct distribute *dist; /* Output filter configuration. */ dist = distribute_lookup (NULL); if (dist && (dist->list[DISTRIBUTE_OUT] || dist->prefix[DISTRIBUTE_OUT])) { vty_out (vty, " Outgoing update filter list for all interface is"); if (dist->list[DISTRIBUTE_OUT]) vty_out (vty, " %s", dist->list[DISTRIBUTE_OUT]); if (dist->prefix[DISTRIBUTE_OUT]) vty_out (vty, "%s (prefix-list) %s", dist->list[DISTRIBUTE_OUT] ? "," : "", dist->prefix[DISTRIBUTE_OUT]); vty_out (vty, "%s", VTY_NEWLINE); } else vty_out (vty, " Outgoing update filter list for all interface is not set%s", VTY_NEWLINE); for (i = 0; i < disthash->size; i++) for (mp = disthash->index[i]; mp; mp = mp->next) { dist = mp->data; if (dist->ifname) if (dist->list[DISTRIBUTE_OUT] || dist->prefix[DISTRIBUTE_OUT]) { vty_out (vty, " %s filtered by", dist->ifname); if (dist->list[DISTRIBUTE_OUT]) vty_out (vty, " %s", dist->list[DISTRIBUTE_OUT]); if (dist->prefix[DISTRIBUTE_OUT]) vty_out (vty, "%s (prefix-list) %s", dist->list[DISTRIBUTE_OUT] ? "," : "", dist->prefix[DISTRIBUTE_OUT]); vty_out (vty, "%s", VTY_NEWLINE); } } /* Input filter configuration. */ dist = distribute_lookup (NULL); if (dist && (dist->list[DISTRIBUTE_IN] || dist->prefix[DISTRIBUTE_IN])) { vty_out (vty, " Incoming update filter list for all interface is"); if (dist->list[DISTRIBUTE_IN]) vty_out (vty, " %s", dist->list[DISTRIBUTE_IN]); if (dist->prefix[DISTRIBUTE_IN]) vty_out (vty, "%s (prefix-list) %s", dist->list[DISTRIBUTE_IN] ? "," : "", dist->prefix[DISTRIBUTE_IN]); vty_out (vty, "%s", VTY_NEWLINE); } else vty_out (vty, " Incoming update filter list for all interface is not set%s", VTY_NEWLINE); for (i = 0; i < disthash->size; i++) for (mp = disthash->index[i]; mp; mp = mp->next) { dist = mp->data; if (dist->ifname) if (dist->list[DISTRIBUTE_IN] || dist->prefix[DISTRIBUTE_IN]) { vty_out (vty, " %s filtered by", dist->ifname); if (dist->list[DISTRIBUTE_IN]) vty_out (vty, " %s", dist->list[DISTRIBUTE_IN]); if (dist->prefix[DISTRIBUTE_IN]) vty_out (vty, "%s (prefix-list) %s", dist->list[DISTRIBUTE_IN] ? "," : "", dist->prefix[DISTRIBUTE_IN]); vty_out (vty, "%s", VTY_NEWLINE); } } return 0;}/* Configuration write function. */intconfig_write_distribute (struct vty *vty){ int i; struct hash_backet *mp; int write = 0; for (i = 0; i < disthash->size; i++) for (mp = disthash->index[i]; mp; mp = mp->next) { struct distribute *dist; dist = mp->data; if (dist->list[DISTRIBUTE_IN]) { vty_out (vty, " distribute-list %s in %s%s", dist->list[DISTRIBUTE_IN], dist->ifname ? dist->ifname : "", VTY_NEWLINE); write++; } if (dist->list[DISTRIBUTE_OUT]) { vty_out (vty, " distribute-list %s out %s%s", dist->list[DISTRIBUTE_OUT], dist->ifname ? dist->ifname : "", VTY_NEWLINE); write++; } if (dist->prefix[DISTRIBUTE_IN]) { vty_out (vty, " distribute-list prefix %s in %s%s", dist->prefix[DISTRIBUTE_IN], dist->ifname ? dist->ifname : "", VTY_NEWLINE); write++; } if (dist->prefix[DISTRIBUTE_OUT]) { vty_out (vty, " distribute-list prefix %s out %s%s", dist->prefix[DISTRIBUTE_OUT], dist->ifname ? dist->ifname : "", VTY_NEWLINE); write++; } } return write;}/* Clear all distribute list. */voiddistribute_list_reset (){ hash_clean (disthash, (void (*) (void *)) distribute_free);}/* Initialize distribute list related hash. */voiddistribute_list_init (int node){ disthash = hash_create (distribute_hash_make, distribute_cmp); if (node == RIP_NODE) { install_element (RIP_NODE, &distribute_list_all_cmd); install_element (RIP_NODE, &no_distribute_list_all_cmd); install_element (RIP_NODE, &distribute_list_cmd); install_element (RIP_NODE, &no_distribute_list_cmd); install_element (RIP_NODE, &distribute_list_prefix_all_cmd); install_element (RIP_NODE, &no_distribute_list_prefix_all_cmd); install_element (RIP_NODE, &distribute_list_prefix_cmd); install_element (RIP_NODE, &no_distribute_list_prefix_cmd); } else { install_element (RIPNG_NODE, &ipv6_distribute_list_all_cmd); install_element (RIPNG_NODE, &no_ipv6_distribute_list_all_cmd); install_element (RIPNG_NODE, &ipv6_distribute_list_cmd); install_element (RIPNG_NODE, &no_ipv6_distribute_list_cmd); install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_all_cmd); install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_all_cmd); install_element (RIPNG_NODE, &ipv6_distribute_list_prefix_cmd); install_element (RIPNG_NODE, &no_ipv6_distribute_list_prefix_cmd); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -