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); |