📄 ospf_vty.c
字号:
struct in_addr area_id; int ret, format; VTY_GET_OSPF_AREA_ID_NO_BB ("stub", area_id, format, argv[0]); ret = ospf_area_stub_set (ospf, area_id); if (ret == 0) { vty_out (vty, "%% Area cannot be nssa as it contains a virtual link%s", VTY_NEWLINE); return CMD_WARNING; } ospf_area_no_summary_set (ospf, area_id); return CMD_SUCCESS;}DEFUN (no_ospf_area_stub, no_ospf_area_stub_cmd, "no area (A.B.C.D|<0-4294967295>) stub", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as stub\n"){ struct ospf *ospf = vty->index; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("stub", area_id, format, argv[0]); ospf_area_stub_unset (ospf, area_id); ospf_area_no_summary_unset (ospf, area_id); return CMD_SUCCESS;}DEFUN (no_ospf_area_stub_no_summary, no_ospf_area_stub_no_summary_cmd, "no area (A.B.C.D|<0-4294967295>) stub no-summary", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as stub\n" "Do not inject inter-area routes into area\n"){ struct ospf *ospf = vty->index; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("stub", area_id, format, argv[0]); ospf_area_no_summary_unset (ospf, area_id); return CMD_SUCCESS;}#ifdef HAVE_NSSADEFUN (ospf_area_nssa, ospf_area_nssa_cmd, "area (A.B.C.D|<0-4294967295>) nssa", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as nssa\n"){ struct ospf *ospf = vty->index; struct in_addr area_id; int ret, format; VTY_GET_OSPF_AREA_ID_NO_BB ("NSSA", area_id, format, argv[0]); ret = ospf_area_nssa_set (ospf, area_id); if (ret == 0) { vty_out (vty, "%% Area cannot be nssa as it contains a virtual link%s", VTY_NEWLINE); return CMD_WARNING; } if (argc > 1) { if (strncmp (argv[1], "translate-c", 11) == 0) ospf_area_nssa_translator_role_set (ospf, area_id, OSPF_NSSA_ROLE_CANDIDATE); else if (strncmp (argv[1], "translate-n", 11) == 0) ospf_area_nssa_translator_role_set (ospf, area_id, OSPF_NSSA_ROLE_NEVER); else if (strncmp (argv[1], "translate-a", 11) == 0) ospf_area_nssa_translator_role_set (ospf, area_id, OSPF_NSSA_ROLE_ALWAYS); } if (argc > 2) ospf_area_no_summary_set (ospf, area_id); return CMD_SUCCESS;}ALIAS (ospf_area_nssa, ospf_area_nssa_translate_no_summary_cmd, "area (A.B.C.D|<0-4294967295>) nssa (translate-candidate|translate-never|translate-always) (no-summary|)", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as nssa\n" "Configure NSSA-ABR for translate election (default)\n" "Configure NSSA-ABR to never translate\n" "Configure NSSA-ABR to always translate\n" "Do not inject inter-area routes into nssa\n" "dummy\n");ALIAS (ospf_area_nssa, ospf_area_nssa_translate_cmd, "area (A.B.C.D|<0-4294967295>) nssa (translate-candidate|translate-never|translate-always)", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as nssa\n" "Configure NSSA-ABR for translate election (default)\n" "Configure NSSA-ABR to never translate\n" "Configure NSSA-ABR to always translate\n");DEFUN (ospf_area_nssa_no_summary, ospf_area_nssa_no_summary_cmd, "area (A.B.C.D|<0-4294967295>) nssa no-summary", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as nssa\n" "Do not inject inter-area routes into nssa\n"){ struct ospf *ospf = vty->index; struct in_addr area_id; int ret, format; VTY_GET_OSPF_AREA_ID_NO_BB ("NSSA", area_id, format, argv[0]); ret = ospf_area_nssa_set (ospf, area_id); if (ret == 0) { vty_out (vty, "%% Area cannot be nssa as it contains a virtual link%s", VTY_NEWLINE); return CMD_WARNING; } ospf_area_no_summary_set (ospf, area_id); return CMD_SUCCESS;}DEFUN (no_ospf_area_nssa, no_ospf_area_nssa_cmd, "no area (A.B.C.D|<0-4294967295>) nssa", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as nssa\n"){ struct ospf *ospf = vty->index; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("NSSA", area_id, format, argv[0]); ospf_area_nssa_unset (ospf, area_id); ospf_area_no_summary_unset (ospf, area_id); return CMD_SUCCESS;}DEFUN (no_ospf_area_nssa_no_summary, no_ospf_area_nssa_no_summary_cmd, "no area (A.B.C.D|<0-4294967295>) nssa no-summary", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Configure OSPF area as nssa\n" "Do not inject inter-area routes into nssa\n"){ struct ospf *ospf = vty->index; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("NSSA", area_id, format, argv[0]); ospf_area_no_summary_unset (ospf, area_id); return CMD_SUCCESS;}#endif /* HAVE_NSSA */DEFUN (ospf_area_default_cost, ospf_area_default_cost_cmd, "area (A.B.C.D|<0-4294967295>) default-cost <0-16777215>", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Set the summary-default cost of a NSSA or stub area\n" "Stub's advertised default summary cost\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; u_int32_t cost; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("default-cost", area_id, format, argv[0]); VTY_GET_INTEGER_RANGE ("stub default cost", cost, argv[1], 0, 16777215); area = ospf_area_get (ospf, area_id, format); if (area->external_routing == OSPF_AREA_DEFAULT) { vty_out (vty, "The area is neither stub, nor NSSA%s", VTY_NEWLINE); return CMD_WARNING; } area->default_cost = cost; return CMD_SUCCESS;}DEFUN (no_ospf_area_default_cost, no_ospf_area_default_cost_cmd, "no area (A.B.C.D|<0-4294967295>) default-cost <0-16777215>", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Set the summary-default cost of a NSSA or stub area\n" "Stub's advertised default summary cost\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; u_int32_t cost; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("default-cost", area_id, format, argv[0]); VTY_GET_INTEGER_RANGE ("stub default cost", cost, argv[1], 0, 16777215); area = ospf_area_lookup_by_area_id (ospf, area_id); if (area == NULL) return CMD_SUCCESS; if (area->external_routing == OSPF_AREA_DEFAULT) { vty_out (vty, "The area is neither stub, nor NSSA%s", VTY_NEWLINE); return CMD_WARNING; } area->default_cost = 1; ospf_area_check_free (ospf, area_id); return CMD_SUCCESS;}DEFUN (ospf_area_export_list, ospf_area_export_list_cmd, "area (A.B.C.D|<0-4294967295>) export-list NAME", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Set the filter for networks announced to other areas\n" "Name of the access-list\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("export-list", area_id, format, argv[0]); area = ospf_area_get (ospf, area_id, format); ospf_area_export_list_set (ospf, area, argv[1]); return CMD_SUCCESS;}DEFUN (no_ospf_area_export_list, no_ospf_area_export_list_cmd, "no area (A.B.C.D|<0-4294967295>) export-list NAME", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Unset the filter for networks announced to other areas\n" "Name of the access-list\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("export-list", area_id, format, argv[0]); area = ospf_area_lookup_by_area_id (ospf, area_id); if (area == NULL) return CMD_SUCCESS; ospf_area_export_list_unset (ospf, area); return CMD_SUCCESS;}DEFUN (ospf_area_import_list, ospf_area_import_list_cmd, "area (A.B.C.D|<0-4294967295>) import-list NAME", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Set the filter for networks from other areas announced to the specified one\n" "Name of the access-list\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("import-list", area_id, format, argv[0]); area = ospf_area_get (ospf, area_id, format); ospf_area_import_list_set (ospf, area, argv[1]); return CMD_SUCCESS;}DEFUN (no_ospf_area_import_list, no_ospf_area_import_list_cmd, "no area (A.B.C.D|<0-4294967295>) import-list NAME", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Unset the filter for networks announced to other areas\n" "Name of the access-list\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID_NO_BB ("import-list", area_id, format, argv[0]); area = ospf_area_lookup_by_area_id (ospf, area_id); if (area == NULL) return CMD_SUCCESS; ospf_area_import_list_unset (ospf, area); return CMD_SUCCESS;}DEFUN (ospf_area_filter_list, ospf_area_filter_list_cmd, "area (A.B.C.D|<0-4294967295>) filter-list prefix WORD (in|out)", "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Filter networks between OSPF areas\n" "Filter prefixes between OSPF areas\n" "Name of an IP prefix-list\n" "Filter networks sent to this area\n" "Filter networks sent from this area\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; struct prefix_list *plist; int format; VTY_GET_OSPF_AREA_ID (area_id, format, argv[0]); area = ospf_area_get (ospf, area_id, format); plist = prefix_list_lookup (AFI_IP, argv[1]); if (strncmp (argv[2], "in", 2) == 0) { PREFIX_LIST_IN (area) = plist; if (PREFIX_NAME_IN (area)) free (PREFIX_NAME_IN (area)); PREFIX_NAME_IN (area) = strdup (argv[1]); ospf_schedule_abr_task (ospf); } else { PREFIX_LIST_OUT (area) = plist; if (PREFIX_NAME_OUT (area)) free (PREFIX_NAME_OUT (area)); PREFIX_NAME_OUT (area) = strdup (argv[1]); ospf_schedule_abr_task (ospf); } return CMD_SUCCESS;}DEFUN (no_ospf_area_filter_list, no_ospf_area_filter_list_cmd, "no area (A.B.C.D|<0-4294967295>) filter-list prefix WORD (in|out)", NO_STR "OSPF area parameters\n" "OSPF area ID in IP address format\n" "OSPF area ID as a decimal value\n" "Filter networks between OSPF areas\n" "Filter prefixes between OSPF areas\n" "Name of an IP prefix-list\n" "Filter networks sent to this area\n" "Filter networks sent from this area\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; struct prefix_list *plist; int format; VTY_GET_OSPF_AREA_ID (area_id, format, argv[0]); area = ospf_area_lookup_by_area_id (ospf, area_id); plist = prefix_list_lookup (AFI_IP, argv[1]); if (strncmp (argv[2], "in", 2) == 0) { if (PREFIX_NAME_IN (area)) if (strcmp (PREFIX_NAME_IN (area), argv[1]) != 0) return CMD_SUCCESS; PREFIX_LIST_IN (area) = NULL; if (PREFIX_NAME_IN (area)) free (PREFIX_NAME_IN (area)); PREFIX_NAME_IN (area) = NULL; ospf_schedule_abr_task (ospf); } else { if (PREFIX_NAME_OUT (area)) if (strcmp (PREFIX_NAME_OUT (area), argv[1]) != 0) return CMD_SUCCESS; PREFIX_LIST_OUT (area) = NULL; if (PREFIX_NAME_OUT (area)) free (PREFIX_NAME_OUT (area)); PREFIX_NAME_OUT (area) = NULL; ospf_schedule_abr_task (ospf); } return CMD_SUCCESS;}DEFUN (ospf_area_authentication_message_digest, ospf_area_authentication_message_digest_cmd, "area (A.B.C.D|<0-4294967295>) authentication message-digest", "OSPF area parameters\n" "Enable authentication\n" "Use message-digest authentication\n"){ struct ospf *ospf = vty->index; struct ospf_area *area; struct in_addr area_id; int format; VTY_GET_OSPF_AREA_ID (area_id, format, argv[0]); area = ospf_area_get (ospf, area_id, format);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -