|
version 1.1.1.1, 2012/02/21 17:26:12
|
version 1.1.1.4, 2016/11/02 10:09:12
|
|
Line 49
|
Line 49
|
| #include "ospfd/ospf_vty.h" |
#include "ospfd/ospf_vty.h" |
| #include "ospfd/ospf_dump.h" |
#include "ospfd/ospf_dump.h" |
| |
|
| |
| static const char *ospf_network_type_str[] = |
static const char *ospf_network_type_str[] = |
| { |
{ |
| "Null", |
"Null", |
|
Line 61 static const char *ospf_network_type_str[] =
|
Line 61 static const char *ospf_network_type_str[] =
|
| "LOOPBACK" |
"LOOPBACK" |
| }; |
}; |
| |
|
| |
| /* Utility functions. */ |
/* Utility functions. */ |
| static int |
static int |
| ospf_str2area_id (const char *str, struct in_addr *area_id, int *format) |
ospf_str2area_id (const char *str, struct in_addr *area_id, int *format) |
|
Line 80 ospf_str2area_id (const char *str, struct in_addr *are
|
Line 80 ospf_str2area_id (const char *str, struct in_addr *are
|
| /* match "<0-4294967295>". */ |
/* match "<0-4294967295>". */ |
| else |
else |
| { |
{ |
| |
if (*str == '-') |
| |
return -1; |
| |
errno = 0; |
| ret = strtoul (str, &endptr, 10); |
ret = strtoul (str, &endptr, 10); |
| if (*endptr != '\0' || (ret == ULONG_MAX && errno == ERANGE)) | if (*endptr != '\0' || errno || ret > UINT32_MAX) |
| return -1; |
return -1; |
| |
|
| area_id->s_addr = htonl (ret); |
area_id->s_addr = htonl (ret); |
|
Line 91 ospf_str2area_id (const char *str, struct in_addr *are
|
Line 94 ospf_str2area_id (const char *str, struct in_addr *are
|
| return 0; |
return 0; |
| } |
} |
| |
|
| |
|
| static int |
|
| str2distribute_source (const char *str, int *source) |
|
| { |
|
| /* Sanity check. */ |
|
| if (str == NULL) |
|
| return 0; |
|
| |
|
| if (strncmp (str, "k", 1) == 0) |
|
| *source = ZEBRA_ROUTE_KERNEL; |
|
| else if (strncmp (str, "c", 1) == 0) |
|
| *source = ZEBRA_ROUTE_CONNECT; |
|
| else if (strncmp (str, "s", 1) == 0) |
|
| *source = ZEBRA_ROUTE_STATIC; |
|
| else if (strncmp (str, "r", 1) == 0) |
|
| *source = ZEBRA_ROUTE_RIP; |
|
| else if (strncmp (str, "b", 1) == 0) |
|
| *source = ZEBRA_ROUTE_BGP; |
|
| else |
|
| return 0; |
|
| |
|
| return 1; |
|
| } |
|
| |
|
| static int |
static int |
| str2metric (const char *str, int *metric) |
str2metric (const char *str, int *metric) |
| { |
{ |
|
Line 162 ospf_oi_count (struct interface *ifp)
|
Line 142 ospf_oi_count (struct interface *ifp)
|
| return i; |
return i; |
| } |
} |
| |
|
| |
| DEFUN (router_ospf, |
DEFUN (router_ospf, |
| router_ospf_cmd, |
router_ospf_cmd, |
| "router ospf", |
"router ospf", |
|
Line 274 ospf_passive_interface_default (struct ospf *ospf, u_c
|
Line 254 ospf_passive_interface_default (struct ospf *ospf, u_c
|
| } |
} |
| |
|
| static void |
static void |
| ospf_passive_interface_update (struct ospf *ospf, struct interface *ifp, | ospf_passive_interface_update_addr (struct ospf *ospf, struct interface *ifp, |
| struct in_addr addr, | struct ospf_if_params *params, u_char value, |
| struct ospf_if_params *params, u_char value) | struct in_addr addr) |
| { |
{ |
| u_char dflt; |
u_char dflt; |
| |
|
|
Line 296 ospf_passive_interface_update (struct ospf *ospf, stru
|
Line 276 ospf_passive_interface_update (struct ospf *ospf, stru
|
| ospf_free_if_params (ifp, addr); |
ospf_free_if_params (ifp, addr); |
| ospf_if_update_params (ifp, addr); |
ospf_if_update_params (ifp, addr); |
| } |
} |
| else | } |
| | |
| | static void |
| | ospf_passive_interface_update (struct ospf *ospf, struct interface *ifp, |
| | struct ospf_if_params *params, u_char value) |
| | { |
| | params->passive_interface = value; |
| | if (params == IF_DEF_PARAMS (ifp)) |
| { |
{ |
| if (value != ospf->passive_interface_default) |
if (value != ospf->passive_interface_default) |
| SET_IF_PARAM (params, passive_interface); |
SET_IF_PARAM (params, passive_interface); |
|
Line 305 ospf_passive_interface_update (struct ospf *ospf, stru
|
Line 292 ospf_passive_interface_update (struct ospf *ospf, stru
|
| } |
} |
| } |
} |
| |
|
| |
/* get the appropriate ospf parameters structure, checking if |
| |
* there's a valid interface address at the argi'th argv index |
| |
*/ |
| |
enum { |
| |
VTY_SET = 0, |
| |
VTY_UNSET, |
| |
}; |
| |
#define OSPF_VTY_GET_IF_PARAMS(ifp,params,argi,addr,set) \ |
| |
(params) = IF_DEF_PARAMS ((ifp)); \ |
| |
\ |
| |
if (argc == (argi) + 1) \ |
| |
{ \ |
| |
int ret = inet_aton(argv[(argi)], &(addr)); \ |
| |
if (!ret) \ |
| |
{ \ |
| |
vty_out (vty, "Please specify interface address by A.B.C.D%s", \ |
| |
VTY_NEWLINE); \ |
| |
return CMD_WARNING; \ |
| |
} \ |
| |
(params) = ospf_get_if_params ((ifp), (addr)); \ |
| |
\ |
| |
if (set) \ |
| |
ospf_if_update_params ((ifp), (addr)); \ |
| |
else if ((params) == NULL) \ |
| |
return CMD_SUCCESS; \ |
| |
} |
| |
|
| |
#define OSPF_VTY_PARAM_UNSET(params,var,ifp,addr) \ |
| |
UNSET_IF_PARAM ((params), var); \ |
| |
if ((params) != IF_DEF_PARAMS ((ifp))) \ |
| |
{ \ |
| |
ospf_free_if_params ((ifp), (addr)); \ |
| |
ospf_if_update_params ((ifp), (addr)); \ |
| |
} |
| |
|
| DEFUN (ospf_passive_interface, |
DEFUN (ospf_passive_interface, |
| ospf_passive_interface_addr_cmd, |
ospf_passive_interface_addr_cmd, |
| "passive-interface IFNAME A.B.C.D", |
"passive-interface IFNAME A.B.C.D", |
|
Line 340 DEFUN (ospf_passive_interface,
|
Line 362 DEFUN (ospf_passive_interface,
|
| |
|
| params = ospf_get_if_params (ifp, addr); |
params = ospf_get_if_params (ifp, addr); |
| ospf_if_update_params (ifp, addr); |
ospf_if_update_params (ifp, addr); |
| |
ospf_passive_interface_update_addr (ospf, ifp, params, |
| |
OSPF_IF_PASSIVE, addr); |
| } |
} |
| ospf_passive_interface_update (ospf, ifp, addr, params, OSPF_IF_PASSIVE); | |
| | ospf_passive_interface_update (ospf, ifp, params, OSPF_IF_PASSIVE); |
| |
|
| /* XXX We should call ospf_if_set_multicast on exactly those |
/* XXX We should call ospf_if_set_multicast on exactly those |
| * interfaces for which the passive property changed. It is too much |
* interfaces for which the passive property changed. It is too much |
|
Line 417 DEFUN (no_ospf_passive_interface,
|
Line 442 DEFUN (no_ospf_passive_interface,
|
| params = ospf_lookup_if_params (ifp, addr); |
params = ospf_lookup_if_params (ifp, addr); |
| if (params == NULL) |
if (params == NULL) |
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| |
ospf_passive_interface_update_addr (ospf, ifp, params, OSPF_IF_ACTIVE, |
| |
addr); |
| } |
} |
| ospf_passive_interface_update (ospf, ifp, addr, params, OSPF_IF_ACTIVE); | ospf_passive_interface_update (ospf, ifp, params, OSPF_IF_ACTIVE); |
| |
| /* XXX We should call ospf_if_set_multicast on exactly those |
/* XXX We should call ospf_if_set_multicast on exactly those |
| * interfaces for which the passive property changed. It is too much |
* interfaces for which the passive property changed. It is too much |
| * work to determine this set, so we do this for every interface. |
* work to determine this set, so we do this for every interface. |
|
Line 461 DEFUN (ospf_network_area,
|
Line 488 DEFUN (ospf_network_area,
|
| "OSPF area ID in IP address format\n" |
"OSPF area ID in IP address format\n" |
| "OSPF area ID as a decimal value\n") |
"OSPF area ID as a decimal value\n") |
| { |
{ |
| struct ospf *ospf= vty->index; | struct ospf *ospf = vty->index; |
| struct prefix_ipv4 p; |
struct prefix_ipv4 p; |
| struct in_addr area_id; |
struct in_addr area_id; |
| int ret, format; |
int ret, format; |
|
Line 510 DEFUN (no_ospf_network_area,
|
Line 537 DEFUN (no_ospf_network_area,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| DEFUN (ospf_area_range, |
DEFUN (ospf_area_range, |
| ospf_area_range_cmd, |
ospf_area_range_cmd, |
| "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M", |
"area (A.B.C.D|<0-4294967295>) range A.B.C.D/M", |
|
Line 654 ALIAS (no_ospf_area_range,
|
Line 681 ALIAS (no_ospf_area_range,
|
| "Advertise this range (default)\n" |
"Advertise this range (default)\n" |
| "User specified metric for this range\n" |
"User specified metric for this range\n" |
| "Advertised metric for this range\n") |
"Advertised metric for this range\n") |
| |
| DEFUN (ospf_area_range_substitute, |
DEFUN (ospf_area_range_substitute, |
| ospf_area_range_substitute_cmd, |
ospf_area_range_substitute_cmd, |
| "area (A.B.C.D|<0-4294967295>) range A.B.C.D/M substitute A.B.C.D/M", |
"area (A.B.C.D|<0-4294967295>) range A.B.C.D/M substitute A.B.C.D/M", |
|
Line 706 DEFUN (no_ospf_area_range_substitute,
|
Line 733 DEFUN (no_ospf_area_range_substitute,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| /* Command Handler Logic in VLink stuff is delicate!! |
/* Command Handler Logic in VLink stuff is delicate!! |
| |
|
| ALTER AT YOUR OWN RISK!!!! |
ALTER AT YOUR OWN RISK!!!! |
|
Line 791 ospf_find_vl_data (struct ospf *ospf, struct ospf_vl_c
|
Line 818 ospf_find_vl_data (struct ospf *ospf, struct ospf_vl_c
|
| { |
{ |
| vl_data->vl_oi = ospf_vl_new (ospf, vl_data); |
vl_data->vl_oi = ospf_vl_new (ospf, vl_data); |
| ospf_vl_add (ospf, vl_data); |
ospf_vl_add (ospf, vl_data); |
| ospf_spf_calculate_schedule (ospf); | ospf_spf_calculate_schedule (ospf, SPF_FLAG_CONFIG_CHANGE); |
| } |
} |
| } |
} |
| return vl_data; |
return vl_data; |
|
Line 1402 ALIAS (no_ospf_area_vlink,
|
Line 1429 ALIAS (no_ospf_area_vlink,
|
| VLINK_HELPSTR_AUTHTYPE_SIMPLE |
VLINK_HELPSTR_AUTHTYPE_SIMPLE |
| VLINK_HELPSTR_AUTH_MD5) |
VLINK_HELPSTR_AUTH_MD5) |
| |
|
| |
| DEFUN (ospf_area_shortcut, |
DEFUN (ospf_area_shortcut, |
| ospf_area_shortcut_cmd, |
ospf_area_shortcut_cmd, |
| "area (A.B.C.D|<0-4294967295>) shortcut (default|enable|disable)", |
"area (A.B.C.D|<0-4294967295>) shortcut (default|enable|disable)", |
|
Line 1470 DEFUN (no_ospf_area_shortcut,
|
Line 1497 DEFUN (no_ospf_area_shortcut,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| DEFUN (ospf_area_stub, |
DEFUN (ospf_area_stub, |
| ospf_area_stub_cmd, |
ospf_area_stub_cmd, |
| "area (A.B.C.D|<0-4294967295>) stub", |
"area (A.B.C.D|<0-4294967295>) stub", |
|
Line 1762 DEFUN (no_ospf_area_default_cost,
|
Line 1789 DEFUN (no_ospf_area_default_cost,
|
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| struct ospf_area *area; |
struct ospf_area *area; |
| struct in_addr area_id; |
struct in_addr area_id; |
| u_int32_t cost; |
|
| int format; |
int format; |
| struct prefix_ipv4 p; |
struct prefix_ipv4 p; |
| |
|
| VTY_GET_OSPF_AREA_ID_NO_BB ("default-cost", area_id, format, argv[0]); |
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); | VTY_CHECK_INTEGER_RANGE ("stub default cost", argv[1], 0, OSPF_LS_INFINITY); |
| |
|
| area = ospf_area_lookup_by_area_id (ospf, area_id); |
area = ospf_area_lookup_by_area_id (ospf, area_id); |
| if (area == NULL) |
if (area == NULL) |
|
Line 1953 DEFUN (no_ospf_area_filter_list,
|
Line 1979 DEFUN (no_ospf_area_filter_list,
|
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| struct ospf_area *area; |
struct ospf_area *area; |
| struct in_addr area_id; |
struct in_addr area_id; |
| struct prefix_list *plist; |
|
| int format; |
int format; |
| |
|
| VTY_GET_OSPF_AREA_ID (area_id, format, argv[0]); |
VTY_GET_OSPF_AREA_ID (area_id, format, argv[0]); |
|
Line 1961 DEFUN (no_ospf_area_filter_list,
|
Line 1986 DEFUN (no_ospf_area_filter_list,
|
| if ((area = ospf_area_lookup_by_area_id (ospf, area_id)) == NULL) |
if ((area = ospf_area_lookup_by_area_id (ospf, area_id)) == NULL) |
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| |
|
| plist = prefix_list_lookup (AFI_IP, argv[1]); |
|
| if (strncmp (argv[2], "in", 2) == 0) |
if (strncmp (argv[2], "in", 2) == 0) |
| { |
{ |
| if (PREFIX_NAME_IN (area)) |
if (PREFIX_NAME_IN (area)) |
|
Line 1994 DEFUN (no_ospf_area_filter_list,
|
Line 2018 DEFUN (no_ospf_area_filter_list,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| DEFUN (ospf_area_authentication_message_digest, |
DEFUN (ospf_area_authentication_message_digest, |
| ospf_area_authentication_message_digest_cmd, |
ospf_area_authentication_message_digest_cmd, |
| "area (A.B.C.D|<0-4294967295>) authentication message-digest", |
"area (A.B.C.D|<0-4294967295>) authentication message-digest", |
| "OSPF area parameters\n" |
"OSPF area parameters\n" |
| |
"OSPF area ID in IP address format\n" |
| |
"OSPF area ID as a decimal value\n" |
| "Enable authentication\n" |
"Enable authentication\n" |
| "Use message-digest authentication\n") |
"Use message-digest authentication\n") |
| { |
{ |
|
Line 2063 DEFUN (no_ospf_area_authentication,
|
Line 2089 DEFUN (no_ospf_area_authentication,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| DEFUN (ospf_abr_type, |
DEFUN (ospf_abr_type, |
| ospf_abr_type_cmd, |
ospf_abr_type_cmd, |
| "ospf abr-type (cisco|ibm|shortcut|standard)", |
"ospf abr-type (cisco|ibm|shortcut|standard)", |
|
Line 2193 DEFUN (ospf_compatible_rfc1583,
|
Line 2219 DEFUN (ospf_compatible_rfc1583,
|
| if (!CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE)) |
if (!CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE)) |
| { |
{ |
| SET_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE); |
SET_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE); |
| ospf_spf_calculate_schedule (ospf); | ospf_spf_calculate_schedule (ospf, SPF_FLAG_CONFIG_CHANGE); |
| } |
} |
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
|
Line 2210 DEFUN (no_ospf_compatible_rfc1583,
|
Line 2236 DEFUN (no_ospf_compatible_rfc1583,
|
| if (CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE)) |
if (CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE)) |
| { |
{ |
| UNSET_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE); |
UNSET_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE); |
| ospf_spf_calculate_schedule (ospf); | ospf_spf_calculate_schedule (ospf, SPF_FLAG_CONFIG_CHANGE); |
| } |
} |
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
|
Line 2227 ALIAS (no_ospf_compatible_rfc1583,
|
Line 2253 ALIAS (no_ospf_compatible_rfc1583,
|
| NO_STR |
NO_STR |
| "OSPF specific commands\n" |
"OSPF specific commands\n" |
| "Disable the RFC1583Compatibility flag\n") |
"Disable the RFC1583Compatibility flag\n") |
| |
| static int |
static int |
| ospf_timers_spf_set (struct vty *vty, unsigned int delay, |
ospf_timers_spf_set (struct vty *vty, unsigned int delay, |
| unsigned int hold, |
unsigned int hold, |
|
Line 2242 ospf_timers_spf_set (struct vty *vty, unsigned int del
|
Line 2268 ospf_timers_spf_set (struct vty *vty, unsigned int del
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
DEFUN (ospf_timers_min_ls_interval, |
| |
ospf_timers_min_ls_interval_cmd, |
| |
"timers throttle lsa all <0-5000>", |
| |
"Adjust routing timers\n" |
| |
"Throttling adaptive timer\n" |
| |
"LSA delay between transmissions\n" |
| |
NO_STR |
| |
"Delay (msec) between sending LSAs\n") |
| |
{ |
| |
struct ospf *ospf = vty->index; |
| |
unsigned int interval; |
| |
|
| |
if (argc != 1) |
| |
{ |
| |
vty_out (vty, "Insufficient arguments%s", VTY_NEWLINE); |
| |
return CMD_WARNING; |
| |
} |
| |
|
| |
VTY_GET_INTEGER ("LSA interval", interval, argv[0]); |
| |
|
| |
ospf->min_ls_interval = interval; |
| |
|
| |
return CMD_SUCCESS; |
| |
} |
| |
|
| |
DEFUN (no_ospf_timers_min_ls_interval, |
| |
no_ospf_timers_min_ls_interval_cmd, |
| |
"no timers throttle lsa all", |
| |
NO_STR |
| |
"Adjust routing timers\n" |
| |
"Throttling adaptive timer\n" |
| |
"LSA delay between transmissions\n") |
| |
{ |
| |
struct ospf *ospf = vty->index; |
| |
ospf->min_ls_interval = OSPF_MIN_LS_INTERVAL; |
| |
|
| |
return CMD_SUCCESS; |
| |
} |
| |
|
| |
DEFUN (ospf_timers_min_ls_arrival, |
| |
ospf_timers_min_ls_arrival_cmd, |
| |
"timers lsa arrival <0-1000>", |
| |
"Adjust routing timers\n" |
| |
"Throttling link state advertisement delays\n" |
| |
"OSPF minimum arrival interval delay\n" |
| |
"Delay (msec) between accepted LSAs\n") |
| |
{ |
| |
struct ospf *ospf = vty->index; |
| |
unsigned int arrival; |
| |
|
| |
if (argc != 1) |
| |
{ |
| |
vty_out (vty, "Insufficient arguments%s", VTY_NEWLINE); |
| |
return CMD_WARNING; |
| |
} |
| |
|
| |
VTY_GET_INTEGER_RANGE ("minimum LSA inter-arrival time", arrival, argv[0], 0, 1000); |
| |
|
| |
ospf->min_ls_arrival = arrival; |
| |
|
| |
return CMD_SUCCESS; |
| |
} |
| |
|
| |
DEFUN (no_ospf_timers_min_ls_arrival, |
| |
no_ospf_timers_min_ls_arrival_cmd, |
| |
"no timers lsa arrival", |
| |
NO_STR |
| |
"Adjust routing timers\n" |
| |
"Throttling link state advertisement delays\n" |
| |
"OSPF minimum arrival interval delay\n") |
| |
{ |
| |
struct ospf *ospf = vty->index; |
| |
ospf->min_ls_arrival = OSPF_MIN_LS_ARRIVAL; |
| |
|
| |
return CMD_SUCCESS; |
| |
} |
| |
|
| DEFUN (ospf_timers_throttle_spf, |
DEFUN (ospf_timers_throttle_spf, |
| ospf_timers_throttle_spf_cmd, |
ospf_timers_throttle_spf_cmd, |
| "timers throttle spf <0-600000> <0-600000> <0-600000>", |
"timers throttle spf <0-600000> <0-600000> <0-600000>", |
|
Line 2318 ALIAS_DEPRECATED (no_ospf_timers_throttle_spf,
|
Line 2421 ALIAS_DEPRECATED (no_ospf_timers_throttle_spf,
|
| NO_STR |
NO_STR |
| "Adjust routing timers\n" |
"Adjust routing timers\n" |
| "OSPF SPF timers\n") |
"OSPF SPF timers\n") |
| |
| DEFUN (ospf_neighbor, |
DEFUN (ospf_neighbor, |
| ospf_neighbor_cmd, |
ospf_neighbor_cmd, |
| "neighbor A.B.C.D", |
"neighbor A.B.C.D", |
|
Line 2342 DEFUN (ospf_neighbor,
|
Line 2445 DEFUN (ospf_neighbor,
|
| if (argc > 1) |
if (argc > 1) |
| ospf_nbr_nbma_priority_set (ospf, nbr_addr, priority); |
ospf_nbr_nbma_priority_set (ospf, nbr_addr, priority); |
| if (argc > 2) |
if (argc > 2) |
| ospf_nbr_nbma_poll_interval_set (ospf, nbr_addr, priority); | ospf_nbr_nbma_poll_interval_set (ospf, nbr_addr, interval); |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
|
Line 2414 DEFUN (no_ospf_neighbor,
|
Line 2517 DEFUN (no_ospf_neighbor,
|
| { |
{ |
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| struct in_addr nbr_addr; |
struct in_addr nbr_addr; |
| int ret; |
|
| |
|
| VTY_GET_IPV4_ADDRESS ("neighbor address", nbr_addr, argv[0]); |
VTY_GET_IPV4_ADDRESS ("neighbor address", nbr_addr, argv[0]); |
| |
|
| ret = ospf_nbr_nbma_unset (ospf, nbr_addr); | (void)ospf_nbr_nbma_unset (ospf, nbr_addr); |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
|
Line 2452 ALIAS (no_ospf_neighbor,
|
Line 2554 ALIAS (no_ospf_neighbor,
|
| "Dead Neighbor Polling interval\n" |
"Dead Neighbor Polling interval\n" |
| "Seconds\n") |
"Seconds\n") |
| |
|
| |
| DEFUN (ospf_refresh_timer, ospf_refresh_timer_cmd, |
DEFUN (ospf_refresh_timer, ospf_refresh_timer_cmd, |
| "refresh timer <10-1800>", |
"refresh timer <10-1800>", |
| "Adjust refresh parameters\n" |
"Adjust refresh parameters\n" |
|
Line 2570 const char *ospf_shortcut_mode_descr_str[] =
|
Line 2672 const char *ospf_shortcut_mode_descr_str[] =
|
| }; |
}; |
| |
|
| |
|
| |
| static void |
static void |
| show_ip_ospf_area (struct vty *vty, struct ospf_area *area) |
show_ip_ospf_area (struct vty *vty, struct ospf_area *area) |
| { |
{ |
|
Line 2684 show_ip_ospf_area (struct vty *vty, struct ospf_area *
|
Line 2786 show_ip_ospf_area (struct vty *vty, struct ospf_area *
|
| vty_out (vty, " Number of NSSA LSA %ld. Checksum Sum 0x%08x%s", |
vty_out (vty, " Number of NSSA LSA %ld. Checksum Sum 0x%08x%s", |
| ospf_lsdb_count (area->lsdb, OSPF_AS_NSSA_LSA), |
ospf_lsdb_count (area->lsdb, OSPF_AS_NSSA_LSA), |
| ospf_lsdb_checksum (area->lsdb, OSPF_AS_NSSA_LSA), VTY_NEWLINE); |
ospf_lsdb_checksum (area->lsdb, OSPF_AS_NSSA_LSA), VTY_NEWLINE); |
| #ifdef HAVE_OPAQUE_LSA |
|
| vty_out (vty, " Number of opaque link LSA %ld. Checksum Sum 0x%08x%s", |
vty_out (vty, " Number of opaque link LSA %ld. Checksum Sum 0x%08x%s", |
| ospf_lsdb_count (area->lsdb, OSPF_OPAQUE_LINK_LSA), |
ospf_lsdb_count (area->lsdb, OSPF_OPAQUE_LINK_LSA), |
| ospf_lsdb_checksum (area->lsdb, OSPF_OPAQUE_LINK_LSA), VTY_NEWLINE); |
ospf_lsdb_checksum (area->lsdb, OSPF_OPAQUE_LINK_LSA), VTY_NEWLINE); |
| vty_out (vty, " Number of opaque area LSA %ld. Checksum Sum 0x%08x%s", |
vty_out (vty, " Number of opaque area LSA %ld. Checksum Sum 0x%08x%s", |
| ospf_lsdb_count (area->lsdb, OSPF_OPAQUE_AREA_LSA), |
ospf_lsdb_count (area->lsdb, OSPF_OPAQUE_AREA_LSA), |
| ospf_lsdb_checksum (area->lsdb, OSPF_OPAQUE_AREA_LSA), VTY_NEWLINE); |
ospf_lsdb_checksum (area->lsdb, OSPF_OPAQUE_AREA_LSA), VTY_NEWLINE); |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| vty_out (vty, "%s", VTY_NEWLINE); |
vty_out (vty, "%s", VTY_NEWLINE); |
| } |
} |
| |
|
|
Line 2732 DEFUN (show_ip_ospf,
|
Line 2832 DEFUN (show_ip_ospf,
|
| vty_out (vty, " RFC1583Compatibility flag is %s%s", |
vty_out (vty, " RFC1583Compatibility flag is %s%s", |
| CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE) ? |
CHECK_FLAG (ospf->config, OSPF_RFC1583_COMPATIBLE) ? |
| "enabled" : "disabled", VTY_NEWLINE); |
"enabled" : "disabled", VTY_NEWLINE); |
| #ifdef HAVE_OPAQUE_LSA | vty_out (vty, " OpaqueCapability flag is %s%s", |
| vty_out (vty, " OpaqueCapability flag is %s%s%s", | |
| CHECK_FLAG (ospf->config, OSPF_OPAQUE_CAPABLE) ? |
CHECK_FLAG (ospf->config, OSPF_OPAQUE_CAPABLE) ? |
| "enabled" : "disabled", |
"enabled" : "disabled", |
| IS_OPAQUE_LSA_ORIGINATION_BLOCKED (ospf->opaque) ? |
|
| " (origination blocked)" : "", |
|
| VTY_NEWLINE); |
VTY_NEWLINE); |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| |
|
| /* Show stub-router configuration */ |
/* Show stub-router configuration */ |
| if (ospf->stub_router_startup_time != OSPF_STUB_ROUTER_UNCONFIGURED |
if (ospf->stub_router_startup_time != OSPF_STUB_ROUTER_UNCONFIGURED |
|
Line 2771 DEFUN (show_ip_ospf,
|
Line 2867 DEFUN (show_ip_ospf,
|
| vty_out (vty, "last executed %s ago%s", |
vty_out (vty, "last executed %s ago%s", |
| ospf_timeval_dump (&result, timebuf, sizeof (timebuf)), |
ospf_timeval_dump (&result, timebuf, sizeof (timebuf)), |
| VTY_NEWLINE); |
VTY_NEWLINE); |
| |
vty_out (vty, " Last SPF duration %s%s", |
| |
ospf_timeval_dump (&ospf->ts_spf_duration, timebuf, sizeof (timebuf)), |
| |
VTY_NEWLINE); |
| } |
} |
| else |
else |
| vty_out (vty, "has not been run%s", VTY_NEWLINE); |
vty_out (vty, "has not been run%s", VTY_NEWLINE); |
|
Line 2796 DEFUN (show_ip_ospf,
|
Line 2895 DEFUN (show_ip_ospf,
|
| vty_out (vty, " Number of external LSA %ld. Checksum Sum 0x%08x%s", |
vty_out (vty, " Number of external LSA %ld. Checksum Sum 0x%08x%s", |
| ospf_lsdb_count (ospf->lsdb, OSPF_AS_EXTERNAL_LSA), |
ospf_lsdb_count (ospf->lsdb, OSPF_AS_EXTERNAL_LSA), |
| ospf_lsdb_checksum (ospf->lsdb, OSPF_AS_EXTERNAL_LSA), VTY_NEWLINE); |
ospf_lsdb_checksum (ospf->lsdb, OSPF_AS_EXTERNAL_LSA), VTY_NEWLINE); |
| #ifdef HAVE_OPAQUE_LSA |
|
| vty_out (vty, " Number of opaque AS LSA %ld. Checksum Sum 0x%08x%s", |
vty_out (vty, " Number of opaque AS LSA %ld. Checksum Sum 0x%08x%s", |
| ospf_lsdb_count (ospf->lsdb, OSPF_OPAQUE_AS_LSA), |
ospf_lsdb_count (ospf->lsdb, OSPF_OPAQUE_AS_LSA), |
| ospf_lsdb_checksum (ospf->lsdb, OSPF_OPAQUE_AS_LSA), VTY_NEWLINE); |
ospf_lsdb_checksum (ospf->lsdb, OSPF_OPAQUE_AS_LSA), VTY_NEWLINE); |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| /* Show number of areas attached. */ |
/* Show number of areas attached. */ |
| vty_out (vty, " Number of areas attached to this router: %d%s", |
vty_out (vty, " Number of areas attached to this router: %d%s", |
| listcount (ospf->areas), VTY_NEWLINE); |
listcount (ospf->areas), VTY_NEWLINE); |
|
Line 2822 DEFUN (show_ip_ospf,
|
Line 2919 DEFUN (show_ip_ospf,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| static void |
static void |
| show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf, |
show_ip_ospf_interface_sub (struct vty *vty, struct ospf *ospf, |
| struct interface *ifp) |
struct interface *ifp) |
|
Line 3451 DEFUN (show_ip_ospf_neighbor_int_detail,
|
Line 3548 DEFUN (show_ip_ospf_neighbor_int_detail,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| /* Show functions */ |
/* Show functions */ |
| static int |
static int |
| show_lsa_summary (struct vty *vty, struct ospf_lsa *lsa, int self) |
show_lsa_summary (struct vty *vty, struct ospf_lsa *lsa, int self) |
|
Line 3503 show_lsa_summary (struct vty *vty, struct ospf_lsa *ls
|
Line 3600 show_lsa_summary (struct vty *vty, struct ospf_lsa *ls
|
| break; |
break; |
| case OSPF_NETWORK_LSA: |
case OSPF_NETWORK_LSA: |
| case OSPF_ASBR_SUMMARY_LSA: |
case OSPF_ASBR_SUMMARY_LSA: |
| #ifdef HAVE_OPAQUE_LSA |
|
| case OSPF_OPAQUE_LINK_LSA: |
case OSPF_OPAQUE_LINK_LSA: |
| case OSPF_OPAQUE_AREA_LSA: |
case OSPF_OPAQUE_AREA_LSA: |
| case OSPF_OPAQUE_AS_LSA: |
case OSPF_OPAQUE_AS_LSA: |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| default: |
default: |
| break; |
break; |
| } |
} |
|
Line 3527 static const char *show_database_desc[] =
|
Line 3622 static const char *show_database_desc[] =
|
| "AS External Link States", |
"AS External Link States", |
| "Group Membership LSA", |
"Group Membership LSA", |
| "NSSA-external Link States", |
"NSSA-external Link States", |
| #ifdef HAVE_OPAQUE_LSA |
|
| "Type-8 LSA", |
"Type-8 LSA", |
| "Link-Local Opaque-LSA", |
"Link-Local Opaque-LSA", |
| "Area-Local Opaque-LSA", |
"Area-Local Opaque-LSA", |
| "AS-external Opaque-LSA", |
"AS-external Opaque-LSA", |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| }; |
}; |
| |
|
| static const char *show_database_header[] = |
static const char *show_database_header[] = |
|
Line 3545 static const char *show_database_header[] =
|
Line 3638 static const char *show_database_header[] =
|
| "Link ID ADV Router Age Seq# CkSum Route", |
"Link ID ADV Router Age Seq# CkSum Route", |
| " --- header for Group Member ----", |
" --- header for Group Member ----", |
| "Link ID ADV Router Age Seq# CkSum Route", |
"Link ID ADV Router Age Seq# CkSum Route", |
| #ifdef HAVE_OPAQUE_LSA |
|
| " --- type-8 ---", |
" --- type-8 ---", |
| "Opaque-Type/Id ADV Router Age Seq# CkSum", |
"Opaque-Type/Id ADV Router Age Seq# CkSum", |
| "Opaque-Type/Id ADV Router Age Seq# CkSum", |
"Opaque-Type/Id ADV Router Age Seq# CkSum", |
| "Opaque-Type/Id ADV Router Age Seq# CkSum", |
"Opaque-Type/Id ADV Router Age Seq# CkSum", |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| }; |
}; |
| |
|
| static void |
static void |
|
Line 3626 static void
|
Line 3717 static void
|
| show_ip_ospf_database_router_links (struct vty *vty, |
show_ip_ospf_database_router_links (struct vty *vty, |
| struct router_lsa *rl) |
struct router_lsa *rl) |
| { |
{ |
| int len, i, type; | int len, type; |
| | unsigned int i; |
| |
|
| len = ntohs (rl->header.length) - 4; |
len = ntohs (rl->header.length) - 4; |
| for (i = 0; i < ntohs (rl->links) && len > 0; len -= 12, i++) |
for (i = 0; i < ntohs (rl->links) && len > 0; len -= 12, i++) |
|
Line 3761 show_as_external_lsa_detail (struct vty *vty, struct o
|
Line 3853 show_as_external_lsa_detail (struct vty *vty, struct o
|
| return 0; |
return 0; |
| } |
} |
| |
|
| /* N.B. This function currently seems to be unused. */ | #if 0 |
| static int |
static int |
| show_as_external_lsa_stdvty (struct ospf_lsa *lsa) |
show_as_external_lsa_stdvty (struct ospf_lsa *lsa) |
| { |
{ |
|
Line 3785 show_as_external_lsa_stdvty (struct ospf_lsa *lsa)
|
Line 3877 show_as_external_lsa_stdvty (struct ospf_lsa *lsa)
|
| |
|
| return 0; |
return 0; |
| } |
} |
| |
#endif |
| |
|
| /* Show AS-NSSA-LSA detail information. */ |
/* Show AS-NSSA-LSA detail information. */ |
| static int |
static int |
|
Line 3820 show_func_dummy (struct vty *vty, struct ospf_lsa *lsa
|
Line 3913 show_func_dummy (struct vty *vty, struct ospf_lsa *lsa
|
| return 0; |
return 0; |
| } |
} |
| |
|
| #ifdef HAVE_OPAQUE_LSA |
|
| static int |
static int |
| show_opaque_lsa_detail (struct vty *vty, struct ospf_lsa *lsa) |
show_opaque_lsa_detail (struct vty *vty, struct ospf_lsa *lsa) |
| { |
{ |
|
Line 3833 show_opaque_lsa_detail (struct vty *vty, struct ospf_l
|
Line 3925 show_opaque_lsa_detail (struct vty *vty, struct ospf_l
|
| } |
} |
| return 0; |
return 0; |
| } |
} |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| |
|
| int (*show_function[])(struct vty *, struct ospf_lsa *) = |
int (*show_function[])(struct vty *, struct ospf_lsa *) = |
| { |
{ |
|
Line 3845 int (*show_function[])(struct vty *, struct ospf_lsa *
|
Line 3936 int (*show_function[])(struct vty *, struct ospf_lsa *
|
| show_as_external_lsa_detail, |
show_as_external_lsa_detail, |
| show_func_dummy, |
show_func_dummy, |
| show_as_nssa_lsa_detail, /* almost same as external */ |
show_as_nssa_lsa_detail, /* almost same as external */ |
| #ifdef HAVE_OPAQUE_LSA |
|
| NULL, /* type-8 */ |
NULL, /* type-8 */ |
| show_opaque_lsa_detail, |
show_opaque_lsa_detail, |
| show_opaque_lsa_detail, |
show_opaque_lsa_detail, |
| show_opaque_lsa_detail, |
show_opaque_lsa_detail, |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| }; |
}; |
| |
|
| static void |
static void |
|
Line 3909 show_lsa_detail (struct vty *vty, struct ospf *ospf, i
|
Line 3998 show_lsa_detail (struct vty *vty, struct ospf *ospf, i
|
| switch (type) |
switch (type) |
| { |
{ |
| case OSPF_AS_EXTERNAL_LSA: |
case OSPF_AS_EXTERNAL_LSA: |
| #ifdef HAVE_OPAQUE_LSA |
|
| case OSPF_OPAQUE_AS_LSA: |
case OSPF_OPAQUE_AS_LSA: |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| vty_out (vty, " %s %s%s", |
vty_out (vty, " %s %s%s", |
| show_database_desc[type], |
show_database_desc[type], |
| VTY_NEWLINE, VTY_NEWLINE); |
VTY_NEWLINE, VTY_NEWLINE); |
|
Line 3958 show_lsa_detail_adv_router (struct vty *vty, struct os
|
Line 4045 show_lsa_detail_adv_router (struct vty *vty, struct os
|
| switch (type) |
switch (type) |
| { |
{ |
| case OSPF_AS_EXTERNAL_LSA: |
case OSPF_AS_EXTERNAL_LSA: |
| #ifdef HAVE_OPAQUE_LSA |
|
| case OSPF_OPAQUE_AS_LSA: |
case OSPF_OPAQUE_AS_LSA: |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| vty_out (vty, " %s %s%s", |
vty_out (vty, " %s %s%s", |
| show_database_desc[type], |
show_database_desc[type], |
| VTY_NEWLINE, VTY_NEWLINE); |
VTY_NEWLINE, VTY_NEWLINE); |
|
Line 3996 show_ip_ospf_database_summary (struct vty *vty, struct
|
Line 4081 show_ip_ospf_database_summary (struct vty *vty, struct
|
| switch (type) |
switch (type) |
| { |
{ |
| case OSPF_AS_EXTERNAL_LSA: |
case OSPF_AS_EXTERNAL_LSA: |
| #ifdef HAVE_OPAQUE_LSA |
|
| case OSPF_OPAQUE_AS_LSA: |
case OSPF_OPAQUE_AS_LSA: |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| continue; |
continue; |
| default: |
default: |
| break; |
break; |
|
Line 4025 show_ip_ospf_database_summary (struct vty *vty, struct
|
Line 4108 show_ip_ospf_database_summary (struct vty *vty, struct
|
| switch (type) |
switch (type) |
| { |
{ |
| case OSPF_AS_EXTERNAL_LSA: |
case OSPF_AS_EXTERNAL_LSA: |
| #ifdef HAVE_OPAQUE_LSA |
|
| case OSPF_OPAQUE_AS_LSA: |
case OSPF_OPAQUE_AS_LSA: |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| break; |
break; |
| default: |
default: |
| continue; |
continue; |
|
Line 4054 show_ip_ospf_database_summary (struct vty *vty, struct
|
Line 4135 show_ip_ospf_database_summary (struct vty *vty, struct
|
| static void |
static void |
| show_ip_ospf_database_maxage (struct vty *vty, struct ospf *ospf) |
show_ip_ospf_database_maxage (struct vty *vty, struct ospf *ospf) |
| { |
{ |
| struct listnode *node; | struct route_node *rn; |
| struct ospf_lsa *lsa; | |
| |
|
| vty_out (vty, "%s MaxAge Link States:%s%s", |
vty_out (vty, "%s MaxAge Link States:%s%s", |
| VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE); |
VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE); |
| |
|
| for (ALL_LIST_ELEMENTS_RO (ospf->maxage_lsa, node, lsa)) | for (rn = route_top (ospf->maxage_lsa); rn; rn = route_next (rn)) |
| { |
{ |
| vty_out (vty, "Link type: %d%s", lsa->data->type, VTY_NEWLINE); | struct ospf_lsa *lsa; |
| vty_out (vty, "Link State ID: %s%s", | |
| inet_ntoa (lsa->data->id), VTY_NEWLINE); | if ((lsa = rn->info) != NULL) |
| vty_out (vty, "Advertising Router: %s%s", | { |
| inet_ntoa (lsa->data->adv_router), VTY_NEWLINE); | vty_out (vty, "Link type: %d%s", lsa->data->type, VTY_NEWLINE); |
| vty_out (vty, "LSA lock count: %d%s", lsa->lock, VTY_NEWLINE); | vty_out (vty, "Link State ID: %s%s", |
| vty_out (vty, "%s", VTY_NEWLINE); | inet_ntoa (lsa->data->id), VTY_NEWLINE); |
| | vty_out (vty, "Advertising Router: %s%s", |
| | inet_ntoa (lsa->data->adv_router), VTY_NEWLINE); |
| | vty_out (vty, "LSA lock count: %d%s", lsa->lock, VTY_NEWLINE); |
| | vty_out (vty, "%s", VTY_NEWLINE); |
| | } |
| } |
} |
| } |
} |
| |
|
| #define OSPF_LSA_TYPE_NSSA_DESC "NSSA external link state\n" |
#define OSPF_LSA_TYPE_NSSA_DESC "NSSA external link state\n" |
| #define OSPF_LSA_TYPE_NSSA_CMD_STR "|nssa-external" |
#define OSPF_LSA_TYPE_NSSA_CMD_STR "|nssa-external" |
| |
|
| #ifdef HAVE_OPAQUE_LSA |
|
| #define OSPF_LSA_TYPE_OPAQUE_LINK_DESC "Link local Opaque-LSA\n" |
#define OSPF_LSA_TYPE_OPAQUE_LINK_DESC "Link local Opaque-LSA\n" |
| #define OSPF_LSA_TYPE_OPAQUE_AREA_DESC "Link area Opaque-LSA\n" |
#define OSPF_LSA_TYPE_OPAQUE_AREA_DESC "Link area Opaque-LSA\n" |
| #define OSPF_LSA_TYPE_OPAQUE_AS_DESC "Link AS Opaque-LSA\n" |
#define OSPF_LSA_TYPE_OPAQUE_AS_DESC "Link AS Opaque-LSA\n" |
| #define OSPF_LSA_TYPE_OPAQUE_CMD_STR "|opaque-link|opaque-area|opaque-as" |
#define OSPF_LSA_TYPE_OPAQUE_CMD_STR "|opaque-link|opaque-area|opaque-as" |
| #else /* HAVE_OPAQUE_LSA */ |
|
| #define OSPF_LSA_TYPE_OPAQUE_LINK_DESC "" |
|
| #define OSPF_LSA_TYPE_OPAQUE_AREA_DESC "" |
|
| #define OSPF_LSA_TYPE_OPAQUE_AS_DESC "" |
|
| #define OSPF_LSA_TYPE_OPAQUE_CMD_STR "" |
|
| #endif /* HAVE_OPAQUE_LSA */ |
|
| |
|
| #define OSPF_LSA_TYPES_CMD_STR \ |
#define OSPF_LSA_TYPES_CMD_STR \ |
| "asbr-summary|external|network|router|summary" \ |
"asbr-summary|external|network|router|summary" \ |
|
Line 4155 DEFUN (show_ip_ospf_database,
|
Line 4233 DEFUN (show_ip_ospf_database,
|
| show_ip_ospf_database_maxage (vty, ospf); |
show_ip_ospf_database_maxage (vty, ospf); |
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| #ifdef HAVE_OPAQUE_LSA |
|
| else if (strncmp (argv[0], "opaque-l", 8) == 0) |
else if (strncmp (argv[0], "opaque-l", 8) == 0) |
| type = OSPF_OPAQUE_LINK_LSA; |
type = OSPF_OPAQUE_LINK_LSA; |
| else if (strncmp (argv[0], "opaque-ar", 9) == 0) |
else if (strncmp (argv[0], "opaque-ar", 9) == 0) |
| type = OSPF_OPAQUE_AREA_LSA; |
type = OSPF_OPAQUE_AREA_LSA; |
| else if (strncmp (argv[0], "opaque-as", 9) == 0) |
else if (strncmp (argv[0], "opaque-as", 9) == 0) |
| type = OSPF_OPAQUE_AS_LSA; |
type = OSPF_OPAQUE_AS_LSA; |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| else |
else |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
|
Line 4282 DEFUN (show_ip_ospf_database_type_adv_router,
|
Line 4358 DEFUN (show_ip_ospf_database_type_adv_router,
|
| type = OSPF_ASBR_SUMMARY_LSA; |
type = OSPF_ASBR_SUMMARY_LSA; |
| else if (strncmp (argv[0], "e", 1) == 0) |
else if (strncmp (argv[0], "e", 1) == 0) |
| type = OSPF_AS_EXTERNAL_LSA; |
type = OSPF_AS_EXTERNAL_LSA; |
| #ifdef HAVE_OPAQUE_LSA |
|
| else if (strncmp (argv[0], "opaque-l", 8) == 0) |
else if (strncmp (argv[0], "opaque-l", 8) == 0) |
| type = OSPF_OPAQUE_LINK_LSA; |
type = OSPF_OPAQUE_LINK_LSA; |
| else if (strncmp (argv[0], "opaque-ar", 9) == 0) |
else if (strncmp (argv[0], "opaque-ar", 9) == 0) |
| type = OSPF_OPAQUE_AREA_LSA; |
type = OSPF_OPAQUE_AREA_LSA; |
| else if (strncmp (argv[0], "opaque-as", 9) == 0) |
else if (strncmp (argv[0], "opaque-as", 9) == 0) |
| type = OSPF_OPAQUE_AS_LSA; |
type = OSPF_OPAQUE_AS_LSA; |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| else |
else |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
|
Line 4318 ALIAS (show_ip_ospf_database_type_adv_router,
|
Line 4392 ALIAS (show_ip_ospf_database_type_adv_router,
|
| OSPF_LSA_TYPES_DESC |
OSPF_LSA_TYPES_DESC |
| "Self-originated link states\n") |
"Self-originated link states\n") |
| |
|
| |
| DEFUN (ip_ospf_authentication_args, |
DEFUN (ip_ospf_authentication_args, |
| ip_ospf_authentication_args_addr_cmd, |
ip_ospf_authentication_args_addr_cmd, |
| "ip ospf authentication (null|message-digest) A.B.C.D", |
"ip ospf authentication (null|message-digest) A.B.C.D", |
|
Line 5325 DEFUN (ip_ospf_network,
|
Line 5399 DEFUN (ip_ospf_network,
|
| struct interface *ifp = vty->index; |
struct interface *ifp = vty->index; |
| int old_type = IF_DEF_PARAMS (ifp)->type; |
int old_type = IF_DEF_PARAMS (ifp)->type; |
| struct route_node *rn; |
struct route_node *rn; |
| | |
| | if (old_type == OSPF_IFTYPE_LOOPBACK) |
| | { |
| | vty_out (vty, "This is a loopback interface. Can't set network type.%s", VTY_NEWLINE); |
| | return CMD_WARNING; |
| | } |
| | |
| if (strncmp (argv[0], "b", 1) == 0) |
if (strncmp (argv[0], "b", 1) == 0) |
| IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_BROADCAST; |
IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_BROADCAST; |
| else if (strncmp (argv[0], "n", 1) == 0) |
else if (strncmp (argv[0], "n", 1) == 0) |
|
Line 5422 DEFUN (ip_ospf_priority,
|
Line 5502 DEFUN (ip_ospf_priority,
|
| "Address of interface") |
"Address of interface") |
| { |
{ |
| struct interface *ifp = vty->index; |
struct interface *ifp = vty->index; |
| u_int32_t priority; | long priority; |
| struct route_node *rn; |
struct route_node *rn; |
| struct in_addr addr; |
struct in_addr addr; |
| int ret; |
int ret; |
|
Line 5803 ALIAS (no_ip_ospf_transmit_delay,
|
Line 5883 ALIAS (no_ip_ospf_transmit_delay,
|
| "OSPF interface commands\n" |
"OSPF interface commands\n" |
| "Link state transmit delay\n") |
"Link state transmit delay\n") |
| |
|
| DEFUN (ip_ospf_area, |
| DEFUN (ospf_redistribute_source_metric_type, | ip_ospf_area_cmd, |
| ospf_redistribute_source_metric_type_routemap_cmd, | "ip ospf area (A.B.C.D|<0-4294967295>) [A.B.C.D]", |
| "redistribute " QUAGGA_REDIST_STR_OSPFD | "IP Information\n" |
| " metric <0-16777214> metric-type (1|2) route-map WORD", | "OSPF interface commands\n" |
| REDIST_STR | "Enable OSPF on this interface\n" |
| QUAGGA_REDIST_HELP_STR_OSPFD | "OSPF area ID in IP address format\n" |
| "Metric for redistributed routes\n" | "OSPF area ID as a decimal value\n" |
| "OSPF default metric\n" | "Address of interface\n") |
| "OSPF exterior metric type for redistributed routes\n" | |
| "Set OSPF External Type 1 metrics\n" | |
| "Set OSPF External Type 2 metrics\n" | |
| "Route map reference\n" | |
| "Pointer to route-map entries\n") | |
| { |
{ |
| struct ospf *ospf = vty->index; | struct interface *ifp = vty->index; |
| int source; | struct in_addr area_id; |
| int type = -1; | struct in_addr addr; |
| int metric = -1; | int format; |
| | struct ospf_if_params *params; |
| |
|
| /* Get distribute source. */ | VTY_GET_OSPF_AREA_ID (area_id, format, argv[0]); |
| if (!str2distribute_source (argv[0], &source)) | |
| return CMD_WARNING; | |
| |
|
| /* Get metric value. */ | OSPF_VTY_GET_IF_PARAMS(ifp, params, 1, addr, VTY_SET); |
| if (argc >= 2) | |
| if (!str2metric (argv[1], &metric)) | if (OSPF_IF_PARAM_CONFIGURED(params, if_area)) |
| | { |
| | vty_out (vty, "There is already an interface area statement.%s", |
| | VTY_NEWLINE); |
| return CMD_WARNING; |
return CMD_WARNING; |
| } |
| /* Get metric type. */ | if (memcmp (ifp->name, "VLINK", 5) == 0) |
| if (argc >= 3) | { |
| if (!str2metric_type (argv[2], &type)) | vty_out (vty, "Cannot enable OSPF on a virtual link.%s", VTY_NEWLINE); |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
} |
| |
|
| |
SET_IF_PARAM (params, if_area); |
| |
params->if_area = area_id; |
| |
ospf_interface_area_set (ifp); |
| |
|
| if (argc == 4) | return CMD_SUCCESS; |
| ospf_routemap_set (ospf, source, argv[3]); | } |
| else | |
| ospf_routemap_unset (ospf, source); | DEFUN (no_ip_ospf_area, |
| | no_ip_ospf_area_cmd, |
| | "no ip ospf area [A.B.C.D]", |
| | NO_STR |
| | "IP Information\n" |
| | "OSPF interface commands\n" |
| | "Disable OSPF on this interface\n" |
| | "Address of interface\n") |
| | { |
| | struct interface *ifp = vty->index; |
| | struct ospf_if_params *params; |
| | struct in_addr addr; |
| | |
| | OSPF_VTY_GET_IF_PARAMS(ifp, params, 0, addr, VTY_UNSET); |
| |
|
| return ospf_redistribute_set (ospf, source, type, metric); | if (!OSPF_IF_PARAM_CONFIGURED(params, if_area)) |
| | return CMD_SUCCESS; |
| | |
| | OSPF_VTY_PARAM_UNSET(params, if_area, ifp, addr); |
| | |
| | ospf_interface_area_unset (ifp); |
| | |
| | return CMD_SUCCESS; |
| } |
} |
| |
|
| ALIAS (ospf_redistribute_source_metric_type, | DEFUN (ospf_redistribute_source, |
| ospf_redistribute_source_metric_type_cmd, | ospf_redistribute_source_cmd, |
| "redistribute " QUAGGA_REDIST_STR_OSPFD | "redistribute " QUAGGA_REDIST_STR_OSPFD |
| " metric <0-16777214> metric-type (1|2)", | " {metric <0-16777214>|metric-type (1|2)|route-map WORD}", |
| REDIST_STR |
REDIST_STR |
| QUAGGA_REDIST_HELP_STR_OSPFD |
QUAGGA_REDIST_HELP_STR_OSPFD |
| "Metric for redistributed routes\n" |
"Metric for redistributed routes\n" |
| "OSPF default metric\n" |
"OSPF default metric\n" |
| "OSPF exterior metric type for redistributed routes\n" |
"OSPF exterior metric type for redistributed routes\n" |
| "Set OSPF External Type 1 metrics\n" |
"Set OSPF External Type 1 metrics\n" |
| "Set OSPF External Type 2 metrics\n") |
|
| |
|
| ALIAS (ospf_redistribute_source_metric_type, |
|
| ospf_redistribute_source_metric_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD " metric <0-16777214>", |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD |
|
| "Metric for redistributed routes\n" |
|
| "OSPF default metric\n") |
|
| |
|
| DEFUN (ospf_redistribute_source_type_metric, |
|
| ospf_redistribute_source_type_metric_routemap_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD |
|
| " metric-type (1|2) metric <0-16777214> route-map WORD", |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD |
|
| "OSPF exterior metric type for redistributed routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
"Set OSPF External Type 2 metrics\n" |
| "Metric for redistributed routes\n" |
|
| "OSPF default metric\n" |
|
| "Route map reference\n" |
"Route map reference\n" |
| "Pointer to route-map entries\n") |
"Pointer to route-map entries\n") |
| { |
{ |
|
Line 5884 DEFUN (ospf_redistribute_source_type_metric,
|
Line 5966 DEFUN (ospf_redistribute_source_type_metric,
|
| int type = -1; |
int type = -1; |
| int metric = -1; |
int metric = -1; |
| |
|
| |
if (argc < 4) |
| |
return CMD_WARNING; /* should not happen */ |
| |
|
| /* Get distribute source. */ |
/* Get distribute source. */ |
| if (!str2distribute_source (argv[0], &source)) | source = proto_redistnum(AFI_IP, argv[0]); |
| | if (source < 0 || source == ZEBRA_ROUTE_OSPF) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| /* Get metric value. */ |
/* Get metric value. */ |
| if (argc >= 2) | if (argv[1] != NULL) |
| if (!str2metric_type (argv[1], &type)) | if (!str2metric (argv[1], &metric)) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| /* Get metric type. */ |
/* Get metric type. */ |
| if (argc >= 3) | if (argv[2] != NULL) |
| if (!str2metric (argv[2], &metric)) | if (!str2metric_type (argv[2], &type)) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| if (argc == 4) | if (argv[3] != NULL) |
| ospf_routemap_set (ospf, source, argv[3]); |
ospf_routemap_set (ospf, source, argv[3]); |
| else |
else |
| ospf_routemap_unset (ospf, source); |
ospf_routemap_unset (ospf, source); |
|
Line 5906 DEFUN (ospf_redistribute_source_type_metric,
|
Line 5992 DEFUN (ospf_redistribute_source_type_metric,
|
| return ospf_redistribute_set (ospf, source, type, metric); |
return ospf_redistribute_set (ospf, source, type, metric); |
| } |
} |
| |
|
| ALIAS (ospf_redistribute_source_type_metric, |
|
| ospf_redistribute_source_type_metric_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD |
|
| " metric-type (1|2) metric <0-16777214>", |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD |
|
| "OSPF exterior metric type for redistributed routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "Metric for redistributed routes\n" |
|
| "OSPF default metric\n") |
|
| |
|
| ALIAS (ospf_redistribute_source_type_metric, |
|
| ospf_redistribute_source_type_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD " metric-type (1|2)", |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD |
|
| "OSPF exterior metric type for redistributed routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n") |
|
| |
|
| ALIAS (ospf_redistribute_source_type_metric, |
|
| ospf_redistribute_source_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD, |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD) |
|
| |
|
| DEFUN (ospf_redistribute_source_metric_routemap, |
|
| ospf_redistribute_source_metric_routemap_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD |
|
| " metric <0-16777214> route-map WORD", |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD |
|
| "Metric for redistributed routes\n" |
|
| "OSPF default metric\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int source; |
|
| int metric = -1; |
|
| |
|
| /* Get distribute source. */ |
|
| if (!str2distribute_source (argv[0], &source)) |
|
| return CMD_WARNING; |
|
| |
|
| /* Get metric value. */ |
|
| if (argc >= 2) |
|
| if (!str2metric (argv[1], &metric)) |
|
| return CMD_WARNING; |
|
| |
|
| if (argc == 3) |
|
| ospf_routemap_set (ospf, source, argv[2]); |
|
| else |
|
| ospf_routemap_unset (ospf, source); |
|
| |
|
| return ospf_redistribute_set (ospf, source, -1, metric); |
|
| } |
|
| |
|
| DEFUN (ospf_redistribute_source_type_routemap, |
|
| ospf_redistribute_source_type_routemap_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD |
|
| " metric-type (1|2) route-map WORD", |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD |
|
| "OSPF exterior metric type for redistributed routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int source; |
|
| int type = -1; |
|
| |
|
| /* Get distribute source. */ |
|
| if (!str2distribute_source (argv[0], &source)) |
|
| return CMD_WARNING; |
|
| |
|
| /* Get metric value. */ |
|
| if (argc >= 2) |
|
| if (!str2metric_type (argv[1], &type)) |
|
| return CMD_WARNING; |
|
| |
|
| if (argc == 3) |
|
| ospf_routemap_set (ospf, source, argv[2]); |
|
| else |
|
| ospf_routemap_unset (ospf, source); |
|
| |
|
| return ospf_redistribute_set (ospf, source, type, -1); |
|
| } |
|
| |
|
| DEFUN (ospf_redistribute_source_routemap, |
|
| ospf_redistribute_source_routemap_cmd, |
|
| "redistribute " QUAGGA_REDIST_STR_OSPFD " route-map WORD", |
|
| REDIST_STR |
|
| QUAGGA_REDIST_HELP_STR_OSPFD |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int source; |
|
| |
|
| /* Get distribute source. */ |
|
| if (!str2distribute_source (argv[0], &source)) |
|
| return CMD_WARNING; |
|
| |
|
| if (argc == 2) |
|
| ospf_routemap_set (ospf, source, argv[1]); |
|
| else |
|
| ospf_routemap_unset (ospf, source); |
|
| |
|
| return ospf_redistribute_set (ospf, source, -1, -1); |
|
| } |
|
| |
|
| DEFUN (no_ospf_redistribute_source, |
DEFUN (no_ospf_redistribute_source, |
| no_ospf_redistribute_source_cmd, |
no_ospf_redistribute_source_cmd, |
| "no redistribute " QUAGGA_REDIST_STR_OSPFD, |
"no redistribute " QUAGGA_REDIST_STR_OSPFD, |
|
Line 6031 DEFUN (no_ospf_redistribute_source,
|
Line 6002 DEFUN (no_ospf_redistribute_source,
|
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| int source; |
int source; |
| |
|
| if (!str2distribute_source (argv[0], &source)) | source = proto_redistnum(AFI_IP, argv[0]); |
| | if (source < 0 || source == ZEBRA_ROUTE_OSPF) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| ospf_routemap_unset (ospf, source); |
ospf_routemap_unset (ospf, source); |
|
Line 6050 DEFUN (ospf_distribute_list_out,
|
Line 6022 DEFUN (ospf_distribute_list_out,
|
| int source; |
int source; |
| |
|
| /* Get distribute source. */ |
/* Get distribute source. */ |
| if (!str2distribute_source (argv[1], &source)) | source = proto_redistnum(AFI_IP, argv[1]); |
| | if (source < 0 || source == ZEBRA_ROUTE_OSPF) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| return ospf_distribute_list_out_set (ospf, source, argv[0]); |
return ospf_distribute_list_out_set (ospf, source, argv[0]); |
|
Line 6068 DEFUN (no_ospf_distribute_list_out,
|
Line 6041 DEFUN (no_ospf_distribute_list_out,
|
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| int source; |
int source; |
| |
|
| if (!str2distribute_source (argv[1], &source)) | source = proto_redistnum(AFI_IP, argv[1]); |
| | if (source < 0 || source == ZEBRA_ROUTE_OSPF) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| return ospf_distribute_list_out_unset (ospf, source, argv[0]); |
return ospf_distribute_list_out_unset (ospf, source, argv[0]); |
| } |
} |
| |
|
| /* Default information originate. */ |
/* Default information originate. */ |
| DEFUN (ospf_default_information_originate_metric_type_routemap, | DEFUN (ospf_default_information_originate, |
| ospf_default_information_originate_metric_type_routemap_cmd, | |
| "default-information originate metric <0-16777214> metric-type (1|2) route-map WORD", | |
| "Control distribution of default information\n" | |
| "Distribute a default route\n" | |
| "OSPF default metric\n" | |
| "OSPF metric\n" | |
| "OSPF metric type for default routes\n" | |
| "Set OSPF External Type 1 metrics\n" | |
| "Set OSPF External Type 2 metrics\n" | |
| "Route map reference\n" | |
| "Pointer to route-map entries\n") | |
| { | |
| struct ospf *ospf = vty->index; | |
| int type = -1; | |
| int metric = -1; | |
| |
| /* Get metric value. */ | |
| if (argc >= 1) | |
| if (!str2metric (argv[0], &metric)) | |
| return CMD_WARNING; | |
| |
| /* Get metric type. */ | |
| if (argc >= 2) | |
| if (!str2metric_type (argv[1], &type)) | |
| return CMD_WARNING; | |
| |
| if (argc == 3) | |
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]); | |
| else | |
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); | |
| |
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA, | |
| type, metric); | |
| } | |
| |
| ALIAS (ospf_default_information_originate_metric_type_routemap, | |
| ospf_default_information_originate_metric_type_cmd, | |
| "default-information originate metric <0-16777214> metric-type (1|2)", | |
| "Control distribution of default information\n" | |
| "Distribute a default route\n" | |
| "OSPF default metric\n" | |
| "OSPF metric\n" | |
| "OSPF metric type for default routes\n" | |
| "Set OSPF External Type 1 metrics\n" | |
| "Set OSPF External Type 2 metrics\n") | |
| |
| ALIAS (ospf_default_information_originate_metric_type_routemap, | |
| ospf_default_information_originate_metric_cmd, | |
| "default-information originate metric <0-16777214>", | |
| "Control distribution of default information\n" | |
| "Distribute a default route\n" | |
| "OSPF default metric\n" | |
| "OSPF metric\n") | |
| |
| ALIAS (ospf_default_information_originate_metric_type_routemap, | |
| ospf_default_information_originate_cmd, |
ospf_default_information_originate_cmd, |
| "default-information originate", | "default-information originate " |
| | "{always|metric <0-16777214>|metric-type (1|2)|route-map WORD}", |
| "Control distribution of default information\n" |
"Control distribution of default information\n" |
| "Distribute a default route\n") |
|
| |
|
| /* Default information originate. */ |
|
| DEFUN (ospf_default_information_originate_metric_routemap, |
|
| ospf_default_information_originate_metric_routemap_cmd, |
|
| "default-information originate metric <0-16777214> route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
"Distribute a default route\n" |
| "OSPF default metric\n" |
|
| "OSPF metric\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int metric = -1; |
|
| |
|
| /* Get metric value. */ |
|
| if (argc >= 1) |
|
| if (!str2metric (argv[0], &metric)) |
|
| return CMD_WARNING; |
|
| |
|
| if (argc == 2) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA, |
|
| -1, metric); |
|
| } |
|
| |
|
| /* Default information originate. */ |
|
| DEFUN (ospf_default_information_originate_routemap, |
|
| ospf_default_information_originate_routemap_cmd, |
|
| "default-information originate route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| if (argc == 1) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[0]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA, -1, -1); |
|
| } |
|
| |
|
| DEFUN (ospf_default_information_originate_type_metric_routemap, |
|
| ospf_default_information_originate_type_metric_routemap_cmd, |
|
| "default-information originate metric-type (1|2) metric <0-16777214> route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "OSPF default metric\n" |
|
| "OSPF metric\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int type = -1; |
|
| int metric = -1; |
|
| |
|
| /* Get metric type. */ |
|
| if (argc >= 1) |
|
| if (!str2metric_type (argv[0], &type)) |
|
| return CMD_WARNING; |
|
| |
|
| /* Get metric value. */ |
|
| if (argc >= 2) |
|
| if (!str2metric (argv[1], &metric)) |
|
| return CMD_WARNING; |
|
| |
|
| if (argc == 3) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA, |
|
| type, metric); |
|
| } |
|
| |
|
| ALIAS (ospf_default_information_originate_type_metric_routemap, |
|
| ospf_default_information_originate_type_metric_cmd, |
|
| "default-information originate metric-type (1|2) metric <0-16777214>", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "OSPF default metric\n" |
|
| "OSPF metric\n") |
|
| |
|
| ALIAS (ospf_default_information_originate_type_metric_routemap, |
|
| ospf_default_information_originate_type_cmd, |
|
| "default-information originate metric-type (1|2)", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n") |
|
| |
|
| DEFUN (ospf_default_information_originate_type_routemap, |
|
| ospf_default_information_originate_type_routemap_cmd, |
|
| "default-information originate metric-type (1|2) route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int type = -1; |
|
| |
|
| /* Get metric type. */ |
|
| if (argc >= 1) |
|
| if (!str2metric_type (argv[0], &type)) |
|
| return CMD_WARNING; |
|
| |
|
| if (argc == 2) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA, |
|
| type, -1); |
|
| } |
|
| |
|
| DEFUN (ospf_default_information_originate_always_metric_type_routemap, |
|
| ospf_default_information_originate_always_metric_type_routemap_cmd, |
|
| "default-information originate always metric <0-16777214> metric-type (1|2) route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
"Always advertise default route\n" |
| "OSPF default metric\n" |
"OSPF default metric\n" |
| "OSPF metric\n" |
"OSPF metric\n" |
|
Line 6282 DEFUN (ospf_default_information_originate_always_metri
|
Line 6065 DEFUN (ospf_default_information_originate_always_metri
|
| "Pointer to route-map entries\n") |
"Pointer to route-map entries\n") |
| { |
{ |
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| |
int default_originate = DEFAULT_ORIGINATE_ZEBRA; |
| int type = -1; |
int type = -1; |
| int metric = -1; |
int metric = -1; |
| |
|
| /* Get metric value. */ | if (argc < 4) |
| if (argc >= 1) | return CMD_WARNING; /* this should not happen */ |
| if (!str2metric (argv[0], &metric)) | |
| return CMD_WARNING; | |
| |
|
| /* Get metric type. */ | /* Check whether "always" was specified */ |
| if (argc >= 2) | if (argv[0] != NULL) |
| if (!str2metric_type (argv[1], &type)) | default_originate = DEFAULT_ORIGINATE_ALWAYS; |
| return CMD_WARNING; | |
| |
|
| if (argc == 3) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS, |
|
| type, metric); |
|
| } |
|
| |
|
| ALIAS (ospf_default_information_originate_always_metric_type_routemap, |
|
| ospf_default_information_originate_always_metric_type_cmd, |
|
| "default-information originate always metric <0-16777214> metric-type (1|2)", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "OSPF default metric\n" |
|
| "OSPF metric\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n") |
|
| |
|
| ALIAS (ospf_default_information_originate_always_metric_type_routemap, |
|
| ospf_default_information_originate_always_metric_cmd, |
|
| "default-information originate always metric <0-16777214>", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "OSPF default metric\n" |
|
| "OSPF metric\n" |
|
| "OSPF metric type for default routes\n") |
|
| |
|
| ALIAS (ospf_default_information_originate_always_metric_type_routemap, |
|
| ospf_default_information_originate_always_cmd, |
|
| "default-information originate always", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n") |
|
| |
|
| DEFUN (ospf_default_information_originate_always_metric_routemap, |
|
| ospf_default_information_originate_always_metric_routemap_cmd, |
|
| "default-information originate always metric <0-16777214> route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "OSPF default metric\n" |
|
| "OSPF metric\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int metric = -1; |
|
| |
|
| /* Get metric value. */ |
/* Get metric value. */ |
| if (argc >= 1) | if (argv[1] != NULL) |
| if (!str2metric (argv[0], &metric)) | if (!str2metric (argv[1], &metric)) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| if (argc == 2) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS, |
|
| -1, metric); |
|
| } |
|
| |
|
| DEFUN (ospf_default_information_originate_always_routemap, |
|
| ospf_default_information_originate_always_routemap_cmd, |
|
| "default-information originate always route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| if (argc == 1) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[0]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS, -1, -1); |
|
| } |
|
| |
|
| DEFUN (ospf_default_information_originate_always_type_metric_routemap, |
|
| ospf_default_information_originate_always_type_metric_routemap_cmd, |
|
| "default-information originate always metric-type (1|2) metric <0-16777214> route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "OSPF default metric\n" |
|
| "OSPF metric\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int type = -1; |
|
| int metric = -1; |
|
| |
|
| /* Get metric type. */ |
/* Get metric type. */ |
| if (argc >= 1) | if (argv[2] != NULL) |
| if (!str2metric_type (argv[0], &type)) | if (!str2metric_type (argv[2], &type)) |
| return CMD_WARNING; |
return CMD_WARNING; |
| |
|
| /* Get metric value. */ | if (argv[3] != NULL) |
| if (argc >= 2) | ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[3]); |
| if (!str2metric (argv[1], &metric)) | |
| return CMD_WARNING; | |
| |
| if (argc == 3) | |
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]); | |
| else |
else |
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS, | return ospf_redistribute_default_set (ospf, default_originate, |
| type, metric); |
type, metric); |
| } |
} |
| |
|
| ALIAS (ospf_default_information_originate_always_type_metric_routemap, |
|
| ospf_default_information_originate_always_type_metric_cmd, |
|
| "default-information originate always metric-type (1|2) metric <0-16777214>", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "OSPF default metric\n" |
|
| "OSPF metric\n") |
|
| |
|
| ALIAS (ospf_default_information_originate_always_type_metric_routemap, |
|
| ospf_default_information_originate_always_type_cmd, |
|
| "default-information originate always metric-type (1|2)", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n") |
|
| |
|
| DEFUN (ospf_default_information_originate_always_type_routemap, |
|
| ospf_default_information_originate_always_type_routemap_cmd, |
|
| "default-information originate always metric-type (1|2) route-map WORD", |
|
| "Control distribution of default information\n" |
|
| "Distribute a default route\n" |
|
| "Always advertise default route\n" |
|
| "OSPF metric type for default routes\n" |
|
| "Set OSPF External Type 1 metrics\n" |
|
| "Set OSPF External Type 2 metrics\n" |
|
| "Route map reference\n" |
|
| "Pointer to route-map entries\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| int type = -1; |
|
| |
|
| /* Get metric type. */ |
|
| if (argc >= 1) |
|
| if (!str2metric_type (argv[0], &type)) |
|
| return CMD_WARNING; |
|
| |
|
| if (argc == 2) |
|
| ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]); |
|
| else |
|
| ospf_routemap_unset (ospf, DEFAULT_ROUTE); |
|
| |
|
| return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS, |
|
| type, -1); |
|
| } |
|
| |
|
| DEFUN (no_ospf_default_information_originate, |
DEFUN (no_ospf_default_information_originate, |
| no_ospf_default_information_originate_cmd, |
no_ospf_default_information_originate_cmd, |
| "no default-information originate", |
"no default-information originate", |
|
Line 6560 DEFUN (no_ospf_distance,
|
Line 6187 DEFUN (no_ospf_distance,
|
| |
|
| DEFUN (no_ospf_distance_ospf, |
DEFUN (no_ospf_distance_ospf, |
| no_ospf_distance_ospf_cmd, |
no_ospf_distance_ospf_cmd, |
| "no distance ospf", | "no distance ospf {intra-area|inter-area|external}", |
| NO_STR |
NO_STR |
| "Define an administrative distance\n" |
"Define an administrative distance\n" |
| "OSPF Administrative distance\n" |
"OSPF Administrative distance\n" |
| "OSPF Distance\n") | "OSPF Distance\n" |
| { | |
| struct ospf *ospf = vty->index; | |
| |
| ospf->distance_intra = 0; | |
| ospf->distance_inter = 0; | |
| ospf->distance_external = 0; | |
| |
| return CMD_SUCCESS; | |
| } | |
| |
| DEFUN (ospf_distance_ospf_intra, | |
| ospf_distance_ospf_intra_cmd, | |
| "distance ospf intra-area <1-255>", | |
| "Define an administrative distance\n" | |
| "OSPF Administrative distance\n" | |
| "Intra-area routes\n" |
"Intra-area routes\n" |
| "Distance for intra-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_intra = atoi (argv[0]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_intra_inter, |
|
| ospf_distance_ospf_intra_inter_cmd, |
|
| "distance ospf intra-area <1-255> inter-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "Intra-area routes\n" |
|
| "Distance for intra-area routes\n" |
|
| "Inter-area routes\n" |
"Inter-area routes\n" |
| "Distance for inter-area routes\n") | "External routes\n") |
| { |
{ |
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| |
|
| ospf->distance_intra = atoi (argv[0]); | if (argc < 3) |
| ospf->distance_inter = atoi (argv[1]); | return CMD_WARNING; |
| |
|
| return CMD_SUCCESS; | if (argv[0] != NULL) |
| } | ospf->distance_intra = 0; |
| |
|
| DEFUN (ospf_distance_ospf_intra_external, | if (argv[1] != NULL) |
| ospf_distance_ospf_intra_external_cmd, | ospf->distance_inter = 0; |
| "distance ospf intra-area <1-255> external <1-255>", | |
| "Define an administrative distance\n" | |
| "OSPF Administrative distance\n" | |
| "Intra-area routes\n" | |
| "Distance for intra-area routes\n" | |
| "External routes\n" | |
| "Distance for external routes\n") | |
| { | |
| struct ospf *ospf = vty->index; | |
| |
|
| ospf->distance_intra = atoi (argv[0]); | if (argv[2] != NULL) |
| ospf->distance_external = atoi (argv[1]); | ospf->distance_external = 0; |
| |
|
| return CMD_SUCCESS; | if (argv[0] || argv[1] || argv[2]) |
| } | return CMD_SUCCESS; |
| |
|
| DEFUN (ospf_distance_ospf_intra_inter_external, | /* If no arguments are given, clear all distance information */ |
| ospf_distance_ospf_intra_inter_external_cmd, | ospf->distance_intra = 0; |
| "distance ospf intra-area <1-255> inter-area <1-255> external <1-255>", | ospf->distance_inter = 0; |
| "Define an administrative distance\n" | ospf->distance_external = 0; |
| "OSPF Administrative distance\n" | |
| "Intra-area routes\n" | |
| "Distance for intra-area routes\n" | |
| "Inter-area routes\n" | |
| "Distance for inter-area routes\n" | |
| "External routes\n" | |
| "Distance for external routes\n") | |
| { | |
| struct ospf *ospf = vty->index; | |
| |
|
| ospf->distance_intra = atoi (argv[0]); |
|
| ospf->distance_inter = atoi (argv[1]); |
|
| ospf->distance_external = atoi (argv[2]); |
|
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| DEFUN (ospf_distance_ospf_intra_external_inter, | DEFUN (ospf_distance_ospf, |
| ospf_distance_ospf_intra_external_inter_cmd, | ospf_distance_ospf_cmd, |
| "distance ospf intra-area <1-255> external <1-255> inter-area <1-255>", | "distance ospf " |
| | "{intra-area <1-255>|inter-area <1-255>|external <1-255>}", |
| "Define an administrative distance\n" |
"Define an administrative distance\n" |
| "OSPF Administrative distance\n" |
"OSPF Administrative distance\n" |
| "Intra-area routes\n" |
"Intra-area routes\n" |
| "Distance for intra-area routes\n" |
"Distance for intra-area routes\n" |
| "External routes\n" |
|
| "Distance for external routes\n" |
|
| "Inter-area routes\n" |
"Inter-area routes\n" |
| "Distance for inter-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_intra = atoi (argv[0]); |
|
| ospf->distance_external = atoi (argv[1]); |
|
| ospf->distance_inter = atoi (argv[2]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_inter, |
|
| ospf_distance_ospf_inter_cmd, |
|
| "distance ospf inter-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "Inter-area routes\n" |
|
| "Distance for inter-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_inter = atoi (argv[0]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_inter_intra, |
|
| ospf_distance_ospf_inter_intra_cmd, |
|
| "distance ospf inter-area <1-255> intra-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "Inter-area routes\n" |
|
| "Distance for inter-area routes\n" |
"Distance for inter-area routes\n" |
| "Intra-area routes\n" |
|
| "Distance for intra-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_inter = atoi (argv[0]); |
|
| ospf->distance_intra = atoi (argv[1]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_inter_external, |
|
| ospf_distance_ospf_inter_external_cmd, |
|
| "distance ospf inter-area <1-255> external <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "Inter-area routes\n" |
|
| "Distance for inter-area routes\n" |
|
| "External routes\n" |
"External routes\n" |
| "Distance for external routes\n") |
"Distance for external routes\n") |
| { |
{ |
| struct ospf *ospf = vty->index; |
struct ospf *ospf = vty->index; |
| |
|
| ospf->distance_inter = atoi (argv[0]); | if (argc < 3) /* should not happen */ |
| ospf->distance_external = atoi (argv[1]); | return CMD_WARNING; |
| |
|
| return CMD_SUCCESS; | if (!argv[0] && !argv[1] && !argv[2]) |
| } | { |
| | vty_out(vty, "%% Command incomplete. (Arguments required)%s", |
| | VTY_NEWLINE); |
| | return CMD_WARNING; |
| | } |
| |
|
| DEFUN (ospf_distance_ospf_inter_intra_external, | if (argv[0] != NULL) |
| ospf_distance_ospf_inter_intra_external_cmd, | ospf->distance_intra = atoi(argv[0]); |
| "distance ospf inter-area <1-255> intra-area <1-255> external <1-255>", | |
| "Define an administrative distance\n" | |
| "OSPF Administrative distance\n" | |
| "Inter-area routes\n" | |
| "Distance for inter-area routes\n" | |
| "Intra-area routes\n" | |
| "Distance for intra-area routes\n" | |
| "External routes\n" | |
| "Distance for external routes\n") | |
| { | |
| struct ospf *ospf = vty->index; | |
| |
|
| ospf->distance_inter = atoi (argv[0]); | if (argv[1] != NULL) |
| ospf->distance_intra = atoi (argv[1]); | ospf->distance_inter = atoi(argv[1]); |
| ospf->distance_external = atoi (argv[2]); | |
| |
|
| return CMD_SUCCESS; | if (argv[2] != NULL) |
| } | ospf->distance_external = atoi(argv[2]); |
| |
|
| DEFUN (ospf_distance_ospf_inter_external_intra, |
|
| ospf_distance_ospf_inter_external_intra_cmd, |
|
| "distance ospf inter-area <1-255> external <1-255> intra-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "Inter-area routes\n" |
|
| "Distance for inter-area routes\n" |
|
| "External routes\n" |
|
| "Distance for external routes\n" |
|
| "Intra-area routes\n" |
|
| "Distance for intra-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_inter = atoi (argv[0]); |
|
| ospf->distance_external = atoi (argv[1]); |
|
| ospf->distance_intra = atoi (argv[2]); |
|
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| DEFUN (ospf_distance_ospf_external, |
|
| ospf_distance_ospf_external_cmd, |
|
| "distance ospf external <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "External routes\n" |
|
| "Distance for external routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_external = atoi (argv[0]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_external_intra, |
|
| ospf_distance_ospf_external_intra_cmd, |
|
| "distance ospf external <1-255> intra-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "External routes\n" |
|
| "Distance for external routes\n" |
|
| "Intra-area routes\n" |
|
| "Distance for intra-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_external = atoi (argv[0]); |
|
| ospf->distance_intra = atoi (argv[1]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_external_inter, |
|
| ospf_distance_ospf_external_inter_cmd, |
|
| "distance ospf external <1-255> inter-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "External routes\n" |
|
| "Distance for external routes\n" |
|
| "Inter-area routes\n" |
|
| "Distance for inter-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_external = atoi (argv[0]); |
|
| ospf->distance_inter = atoi (argv[1]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_external_intra_inter, |
|
| ospf_distance_ospf_external_intra_inter_cmd, |
|
| "distance ospf external <1-255> intra-area <1-255> inter-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "External routes\n" |
|
| "Distance for external routes\n" |
|
| "Intra-area routes\n" |
|
| "Distance for intra-area routes\n" |
|
| "Inter-area routes\n" |
|
| "Distance for inter-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_external = atoi (argv[0]); |
|
| ospf->distance_intra = atoi (argv[1]); |
|
| ospf->distance_inter = atoi (argv[2]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_ospf_external_inter_intra, |
|
| ospf_distance_ospf_external_inter_intra_cmd, |
|
| "distance ospf external <1-255> inter-area <1-255> intra-area <1-255>", |
|
| "Define an administrative distance\n" |
|
| "OSPF Administrative distance\n" |
|
| "External routes\n" |
|
| "Distance for external routes\n" |
|
| "Inter-area routes\n" |
|
| "Distance for inter-area routes\n" |
|
| "Intra-area routes\n" |
|
| "Distance for intra-area routes\n") |
|
| { |
|
| struct ospf *ospf = vty->index; |
|
| |
|
| ospf->distance_external = atoi (argv[0]); |
|
| ospf->distance_inter = atoi (argv[1]); |
|
| ospf->distance_intra = atoi (argv[2]); |
|
| |
|
| return CMD_SUCCESS; |
|
| } |
|
| |
|
| DEFUN (ospf_distance_source, |
DEFUN (ospf_distance_source, |
| ospf_distance_source_cmd, |
ospf_distance_source_cmd, |
| "distance <1-255> A.B.C.D/M", |
"distance <1-255> A.B.C.D/M", |
|
Line 7012 ALIAS (no_ip_ospf_mtu_ignore,
|
Line 6416 ALIAS (no_ip_ospf_mtu_ignore,
|
| "IP Information\n" |
"IP Information\n" |
| "OSPF interface commands\n" |
"OSPF interface commands\n" |
| "Disable mtu mismatch detection\n") |
"Disable mtu mismatch detection\n") |
| |
| DEFUN (ospf_max_metric_router_lsa_admin, |
DEFUN (ospf_max_metric_router_lsa_admin, |
| ospf_max_metric_router_lsa_admin_cmd, |
ospf_max_metric_router_lsa_admin_cmd, |
| "max-metric router-lsa administrative", |
"max-metric router-lsa administrative", |
|
Line 7031 DEFUN (ospf_max_metric_router_lsa_admin,
|
Line 6435 DEFUN (ospf_max_metric_router_lsa_admin,
|
| if (!CHECK_FLAG (area->stub_router_state, OSPF_AREA_IS_STUB_ROUTED)) |
if (!CHECK_FLAG (area->stub_router_state, OSPF_AREA_IS_STUB_ROUTED)) |
| ospf_router_lsa_update_area (area); |
ospf_router_lsa_update_area (area); |
| } |
} |
| |
|
| |
/* Allows for areas configured later to get the property */ |
| |
ospf->stub_router_admin_set = OSPF_STUB_ROUTER_ADMINISTRATIVE_SET; |
| |
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
|
Line 7058 DEFUN (no_ospf_max_metric_router_lsa_admin,
|
Line 6466 DEFUN (no_ospf_max_metric_router_lsa_admin,
|
| ospf_router_lsa_update_area (area); |
ospf_router_lsa_update_area (area); |
| } |
} |
| } |
} |
| |
ospf->stub_router_admin_set = OSPF_STUB_ROUTER_ADMINISTRATIVE_UNSET; |
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
|
Line 7176 config_write_stub_router (struct vty *vty, struct ospf
|
Line 6585 config_write_stub_router (struct vty *vty, struct ospf
|
| } |
} |
| return; |
return; |
| } |
} |
| |
| static void |
static void |
| show_ip_ospf_route_network (struct vty *vty, struct route_table *rt) |
show_ip_ospf_route_network (struct vty *vty, struct route_table *rt) |
| { |
{ |
|
Line 7395 DEFUN (show_ip_ospf_route,
|
Line 6804 DEFUN (show_ip_ospf_route,
|
| return CMD_SUCCESS; |
return CMD_SUCCESS; |
| } |
} |
| |
|
| |
| const char *ospf_abr_type_str[] = |
const char *ospf_abr_type_str[] = |
| { |
{ |
| "unknown", |
"unknown", |
|
Line 7424 area_id2str (char *buf, int length, struct ospf_area *
|
Line 6833 area_id2str (char *buf, int length, struct ospf_area *
|
| sprintf (buf, "%lu", (unsigned long) ntohl (area->area_id.s_addr)); |
sprintf (buf, "%lu", (unsigned long) ntohl (area->area_id.s_addr)); |
| } |
} |
| |
|
| |
| const char *ospf_int_type_str[] = |
const char *ospf_int_type_str[] = |
| { |
{ |
| "unknown", /* should never be used. */ |
"unknown", /* should never be used. */ |
|
Line 7602 config_write_interface (struct vty *vty)
|
Line 7011 config_write_interface (struct vty *vty)
|
| vty_out (vty, "%s", VTY_NEWLINE); |
vty_out (vty, "%s", VTY_NEWLINE); |
| } |
} |
| |
|
| |
/* Area print. */ |
| |
if (OSPF_IF_PARAM_CONFIGURED (params, if_area)) |
| |
{ |
| |
vty_out (vty, " ip ospf area %s", inet_ntoa (params->if_area)); |
| |
if (params != IF_DEF_PARAMS (ifp)) |
| |
vty_out (vty, " %s", inet_ntoa (rn->p.u.prefix4)); |
| |
vty_out (vty, "%s", VTY_NEWLINE); |
| |
} |
| |
|
| /* MTU ignore print. */ |
/* MTU ignore print. */ |
| if (OSPF_IF_PARAM_CONFIGURED (params, mtu_ignore) && |
if (OSPF_IF_PARAM_CONFIGURED (params, mtu_ignore) && |
| params->mtu_ignore != OSPF_MTU_IGNORE_DEFAULT) |
params->mtu_ignore != OSPF_MTU_IGNORE_DEFAULT) |
|
Line 7631 config_write_interface (struct vty *vty)
|
Line 7049 config_write_interface (struct vty *vty)
|
| } |
} |
| } while (rn); |
} while (rn); |
| |
|
| #ifdef HAVE_OPAQUE_LSA |
|
| ospf_opaque_config_write_if (vty, ifp); |
ospf_opaque_config_write_if (vty, ifp); |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| } |
} |
| |
|
| return write; |
return write; |
|
Line 7858 config_write_virtual_link (struct vty *vty, struct osp
|
Line 7274 config_write_virtual_link (struct vty *vty, struct osp
|
| return 0; |
return 0; |
| } |
} |
| |
|
| |
| static int |
static int |
| config_write_ospf_redistribute (struct vty *vty, struct ospf *ospf) |
config_write_ospf_redistribute (struct vty *vty, struct ospf *ospf) |
| { |
{ |
|
Line 7866 config_write_ospf_redistribute (struct vty *vty, struc
|
Line 7282 config_write_ospf_redistribute (struct vty *vty, struc
|
| |
|
| /* redistribute print. */ |
/* redistribute print. */ |
| for (type = 0; type < ZEBRA_ROUTE_MAX; type++) |
for (type = 0; type < ZEBRA_ROUTE_MAX; type++) |
| if (type != zclient->redist_default && zclient->redist[type]) | if (type != zclient->redist_default && |
| | vrf_bitmap_check (zclient->redist[type], VRF_DEFAULT)) |
| { |
{ |
| vty_out (vty, " redistribute %s", zebra_route_string(type)); |
vty_out (vty, " redistribute %s", zebra_route_string(type)); |
| if (ospf->dmetric[type].value >= 0) |
if (ospf->dmetric[type].value >= 0) |
|
Line 8021 ospf_config_write (struct vty *vty)
|
Line 7438 ospf_config_write (struct vty *vty)
|
| ospf->ref_bandwidth / 1000, VTY_NEWLINE); |
ospf->ref_bandwidth / 1000, VTY_NEWLINE); |
| } |
} |
| |
|
| |
/* LSA timers */ |
| |
if (ospf->min_ls_interval != OSPF_MIN_LS_INTERVAL) |
| |
vty_out (vty, " timers throttle lsa all %d%s", |
| |
ospf->min_ls_interval, VTY_NEWLINE); |
| |
if (ospf->min_ls_arrival != OSPF_MIN_LS_ARRIVAL) |
| |
vty_out (vty, " timers lsa arrival %d%s", |
| |
ospf->min_ls_arrival, VTY_NEWLINE); |
| |
|
| /* SPF timers print. */ |
/* SPF timers print. */ |
| if (ospf->spf_delay != OSPF_SPF_DELAY_DEFAULT || |
if (ospf->spf_delay != OSPF_SPF_DELAY_DEFAULT || |
| ospf->spf_holdtime != OSPF_SPF_HOLDTIME_DEFAULT || |
ospf->spf_holdtime != OSPF_SPF_HOLDTIME_DEFAULT || |
|
Line 8093 ospf_config_write (struct vty *vty)
|
Line 7518 ospf_config_write (struct vty *vty)
|
| /* Distance configuration. */ |
/* Distance configuration. */ |
| config_write_ospf_distance (vty, ospf); |
config_write_ospf_distance (vty, ospf); |
| |
|
| #ifdef HAVE_OPAQUE_LSA |
|
| ospf_opaque_config_write_router (vty, ospf); |
ospf_opaque_config_write_router (vty, ospf); |
| #endif /* HAVE_OPAQUE_LSA */ |
|
| } |
} |
| |
|
| return write; |
return write; |
|
Line 8151 ospf_vty_show_init (void)
|
Line 7574 ospf_vty_show_init (void)
|
| install_element (ENABLE_NODE, &show_ip_ospf_border_routers_cmd); |
install_element (ENABLE_NODE, &show_ip_ospf_border_routers_cmd); |
| } |
} |
| |
|
| |
| /* ospfd's interface node. */ |
/* ospfd's interface node. */ |
| static struct cmd_node interface_node = |
static struct cmd_node interface_node = |
| { |
{ |
|
Line 8243 ospf_vty_if_init (void)
|
Line 7666 ospf_vty_if_init (void)
|
| install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_addr_cmd); |
install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_addr_cmd); |
| install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_cmd); |
install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_cmd); |
| |
|
| |
/* "ip ospf area" commands. */ |
| |
install_element (INTERFACE_NODE, &ip_ospf_area_cmd); |
| |
install_element (INTERFACE_NODE, &no_ip_ospf_area_cmd); |
| |
|
| /* These commands are compatibitliy for previous version. */ |
/* These commands are compatibitliy for previous version. */ |
| install_element (INTERFACE_NODE, &ospf_authentication_key_cmd); |
install_element (INTERFACE_NODE, &ospf_authentication_key_cmd); |
| install_element (INTERFACE_NODE, &no_ospf_authentication_key_cmd); |
install_element (INTERFACE_NODE, &no_ospf_authentication_key_cmd); |
|
Line 8271 ospf_vty_if_init (void)
|
Line 7698 ospf_vty_if_init (void)
|
| static void |
static void |
| ospf_vty_zebra_init (void) |
ospf_vty_zebra_init (void) |
| { |
{ |
| install_element (OSPF_NODE, &ospf_redistribute_source_type_metric_cmd); |
|
| install_element (OSPF_NODE, &ospf_redistribute_source_metric_type_cmd); |
|
| install_element (OSPF_NODE, &ospf_redistribute_source_type_cmd); |
|
| install_element (OSPF_NODE, &ospf_redistribute_source_metric_cmd); |
|
| install_element (OSPF_NODE, &ospf_redistribute_source_cmd); |
install_element (OSPF_NODE, &ospf_redistribute_source_cmd); |
| install_element (OSPF_NODE, |
|
| &ospf_redistribute_source_metric_type_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_redistribute_source_type_metric_routemap_cmd); |
|
| install_element (OSPF_NODE, &ospf_redistribute_source_metric_routemap_cmd); |
|
| install_element (OSPF_NODE, &ospf_redistribute_source_type_routemap_cmd); |
|
| install_element (OSPF_NODE, &ospf_redistribute_source_routemap_cmd); |
|
| |
|
| install_element (OSPF_NODE, &no_ospf_redistribute_source_cmd); |
install_element (OSPF_NODE, &no_ospf_redistribute_source_cmd); |
| |
|
| install_element (OSPF_NODE, &ospf_distribute_list_out_cmd); |
install_element (OSPF_NODE, &ospf_distribute_list_out_cmd); |
| install_element (OSPF_NODE, &no_ospf_distribute_list_out_cmd); |
install_element (OSPF_NODE, &no_ospf_distribute_list_out_cmd); |
| |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_metric_type_cmd); |
|
| install_element (OSPF_NODE, &ospf_default_information_originate_metric_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_type_metric_cmd); |
|
| install_element (OSPF_NODE, &ospf_default_information_originate_type_cmd); |
|
| install_element (OSPF_NODE, &ospf_default_information_originate_cmd); |
install_element (OSPF_NODE, &ospf_default_information_originate_cmd); |
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_metric_type_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_metric_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_type_metric_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_type_cmd); |
|
| |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_metric_type_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_metric_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_type_metric_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_type_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_metric_type_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_metric_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_type_metric_routemap_cmd); |
|
| install_element (OSPF_NODE, |
|
| &ospf_default_information_originate_always_type_routemap_cmd); |
|
| |
|
| install_element (OSPF_NODE, &no_ospf_default_information_originate_cmd); |
install_element (OSPF_NODE, &no_ospf_default_information_originate_cmd); |
| |
|
| install_element (OSPF_NODE, &ospf_default_metric_cmd); |
install_element (OSPF_NODE, &ospf_default_metric_cmd); |
|
Line 8337 ospf_vty_zebra_init (void)
|
Line 7714 ospf_vty_zebra_init (void)
|
| install_element (OSPF_NODE, &ospf_distance_cmd); |
install_element (OSPF_NODE, &ospf_distance_cmd); |
| install_element (OSPF_NODE, &no_ospf_distance_cmd); |
install_element (OSPF_NODE, &no_ospf_distance_cmd); |
| install_element (OSPF_NODE, &no_ospf_distance_ospf_cmd); |
install_element (OSPF_NODE, &no_ospf_distance_ospf_cmd); |
| install_element (OSPF_NODE, &ospf_distance_ospf_intra_cmd); | install_element (OSPF_NODE, &ospf_distance_ospf_cmd); |
| install_element (OSPF_NODE, &ospf_distance_ospf_intra_inter_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_intra_external_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_intra_inter_external_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_intra_external_inter_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_inter_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_inter_intra_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_inter_external_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_inter_intra_external_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_inter_external_intra_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_external_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_external_intra_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_external_inter_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_external_intra_inter_cmd); | |
| install_element (OSPF_NODE, &ospf_distance_ospf_external_inter_intra_cmd); | |
| #if 0 |
#if 0 |
| install_element (OSPF_NODE, &ospf_distance_source_cmd); |
install_element (OSPF_NODE, &ospf_distance_source_cmd); |
| install_element (OSPF_NODE, &no_ospf_distance_source_cmd); |
install_element (OSPF_NODE, &no_ospf_distance_source_cmd); |
|
Line 8367 static struct cmd_node ospf_node =
|
Line 7730 static struct cmd_node ospf_node =
|
| 1 |
1 |
| }; |
}; |
| |
|
| |
| /* Install OSPF related vty commands. */ |
/* Install OSPF related vty commands. */ |
| void |
void |
| ospf_vty_init (void) |
ospf_vty_init (void) |
|
Line 8496 ospf_vty_init (void)
|
Line 7859 ospf_vty_init (void)
|
| install_element (OSPF_NODE, &ospf_area_import_list_cmd); |
install_element (OSPF_NODE, &ospf_area_import_list_cmd); |
| install_element (OSPF_NODE, &no_ospf_area_import_list_cmd); |
install_element (OSPF_NODE, &no_ospf_area_import_list_cmd); |
| |
|
| |
/* LSA timer commands */ |
| |
install_element (OSPF_NODE, &ospf_timers_min_ls_interval_cmd); |
| |
install_element (OSPF_NODE, &no_ospf_timers_min_ls_interval_cmd); |
| |
install_element (OSPF_NODE, &ospf_timers_min_ls_arrival_cmd); |
| |
install_element (OSPF_NODE, &no_ospf_timers_min_ls_arrival_cmd); |
| |
|
| /* SPF timer commands */ |
/* SPF timer commands */ |
| install_element (OSPF_NODE, &ospf_timers_spf_cmd); |
install_element (OSPF_NODE, &ospf_timers_spf_cmd); |
| install_element (OSPF_NODE, &no_ospf_timers_spf_cmd); |
install_element (OSPF_NODE, &no_ospf_timers_spf_cmd); |