From: David Lamparter Date: Tue, 16 Aug 2016 15:08:54 +0000 (+0200) Subject: Revert "per-interface ospf enable and area set command." X-Git-Tag: frr-2.0-rc1~384 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=2c494df3fa14e55ab1c909619b55b73853804f55;p=mirror%2Ffrr.git Revert "per-interface ospf enable and area set command." This reverts commit e723861da171fd811f499665e5432dce4e364ee6. The code is from Joakim Tjernlund; this is just to fix the history (and attribution) of it. The last commit will restore the exact same tree state. THIS COMMIT WILL PROBABLY NOT COMPILE. Signed-off-by: David Lamparter --- diff --git a/doc/ospfd.texi b/doc/ospfd.texi index 45d1ad7cd2..56ab5a3ed5 100644 --- a/doc/ospfd.texi +++ b/doc/ospfd.texi @@ -510,11 +510,6 @@ incremented by this value when transmitting. The default value is 1 seconds. @end deffn -@deffn {Interface Command} {ip ospf area (A.B.C.D|<0-4294967295>)} {} -@deffnx {Interface Command} {no ip ospf area} {} -Enable ospf on an interface and set associated area. -@end deffn - @node Redistribute routes to OSPF @section Redistribute routes to OSPF diff --git a/ospfd/ospf_interface.h b/ospfd/ospf_interface.h index 7a74288bff..988493a210 100644 --- a/ospfd/ospf_interface.h +++ b/ospfd/ospf_interface.h @@ -47,8 +47,6 @@ struct ospf_if_params DECLARE_IF_PARAM (u_int32_t, retransmit_interval); /* Retransmission Interval */ DECLARE_IF_PARAM (u_char, passive_interface); /* OSPF Interface is passive: no sending or receiving (no need to join multicast groups) */ DECLARE_IF_PARAM (u_char, priority); /* OSPF Interface priority */ - /* Enable OSPF on this interface with area if_area */ - DECLARE_IF_PARAM (struct in_addr, if_area); DECLARE_IF_PARAM (u_char, type); /* type of interface */ #define OSPF_IF_ACTIVE 0 #define OSPF_IF_PASSIVE 1 diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 3022a316c6..ea76856afe 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -543,13 +543,6 @@ DEFUN (ospf_network_area, return CMD_WARNING; } - if (ospf->if_ospf_cli_count > 0) - { - vty_out (vty, "Please remove all ip ospf area x.x.x.x commands first.%s", - VTY_NEWLINE); - return CMD_WARNING; - } - /* Get network prefix and Area ID. */ VTY_GET_IPV4_PREFIX ("network prefix", p, argv[0]); VTY_GET_OSPF_AREA_ID (area_id, format, argv[1]); @@ -9410,18 +9403,6 @@ config_write_interface (struct vty *vty) vty_out (vty, "%s", VTY_NEWLINE); } - /* Area print. */ - if (OSPF_IF_PARAM_CONFIGURED (params, if_area)) - { - if (ospf->instance) - vty_out (vty, " ip ospf %d area %s%s", ospf->instance, - inet_ntoa (params->if_area), VTY_NEWLINE); - else - vty_out (vty, " ip ospf area %s%s", - inet_ntoa (params->if_area), VTY_NEWLINE); - - } - /* bfd print. */ ospf_bfd_write_config(vty, params); @@ -10152,14 +10133,6 @@ ospf_vty_if_init (void) install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_sec_addr_cmd); install_element (INTERFACE_NODE, &no_ip_ospf_transmit_delay_sec_cmd); - /* "ip ospf area" commands. */ - install_element (INTERFACE_NODE, &ip_ospf_area_cmd); - install_element (INTERFACE_NODE, &no_ip_ospf_area_cmd); - install_element (INTERFACE_NODE, &no_ip_ospf_area_val_cmd); - install_element (INTERFACE_NODE, &ip_ospf_instance_area_cmd); - install_element (INTERFACE_NODE, &no_ip_ospf_instance_area_cmd); - install_element (INTERFACE_NODE, &no_ip_ospf_instance_area_val_cmd); - /* These commands are compatibitliy for previous version. */ install_element (INTERFACE_NODE, &ospf_authentication_key_cmd); install_element (INTERFACE_NODE, &no_ospf_authentication_key_cmd); diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c index 9d0e4b9e87..fb84903285 100644 --- a/ospfd/ospfd.c +++ b/ospfd/ospfd.c @@ -501,7 +501,6 @@ ospf_finish_final (struct ospf *ospf) struct route_node *rn; struct ospf_nbr_nbma *nbr_nbma; struct ospf_lsa *lsa; - struct interface *ifp; struct ospf_interface *oi; struct ospf_area *area; struct ospf_vl_data *vl_data; @@ -537,16 +536,6 @@ ospf_finish_final (struct ospf *ospf) list_delete (ospf->vlinks); - /* Remove any ospf interface config params */ - for (ALL_LIST_ELEMENTS_RO (vrf_iflist (VRF_DEFAULT), node, ifp)) - { - struct ospf_if_params *params; - - params = IF_DEF_PARAMS (ifp); - if (OSPF_IF_PARAM_CONFIGURED(params, if_area)) - UNSET_IF_PARAM (params, if_area); - } - /* Reset interface. */ for (ALL_LIST_ELEMENTS (ospf->oiflist, node, nnode, oi)) ospf_if_free (oi); @@ -849,69 +838,6 @@ ospf_area_del_if (struct ospf_area *area, struct ospf_interface *oi) listnode_delete (area->oiflist, oi); } -static struct ospf_interface * -add_ospf_interface (struct interface *ifp, struct ospf_area *area, - struct connected *co) -{ - struct ospf_interface *oi; - - oi = ospf_if_new (area->ospf, ifp, co->address); - oi->connected = co; - - oi->area = area; - - oi->params = ospf_lookup_if_params (ifp, oi->address->u.prefix4); - oi->output_cost = ospf_if_get_output_cost (oi); - - /* Relate ospf interface to ospf instance. */ - oi->ospf = area->ospf; - - /* update network type as interface flag */ - /* If network type is specified previously, - skip network type setting. */ - oi->type = IF_DEF_PARAMS (ifp)->type; - - /* Add pseudo neighbor. */ - ospf_nbr_self_reset (oi, oi->ospf->router_id); - - ospf_area_add_if (oi->area, oi); - - return (oi); -} - -static void update_redistributed(struct ospf *ospf, int add_to_ospf) -{ - struct route_node *rn; - struct external_info *ei; - struct ospf_external *ext; - - if (ospf_is_type_redistributed (ZEBRA_ROUTE_CONNECT, 0)) - if ((ext = ospf_external_lookup(ZEBRA_ROUTE_CONNECT, 0)) && - EXTERNAL_INFO (ext)) - { - for (rn = route_top (EXTERNAL_INFO (ext)); - rn; rn = route_next (rn)) - { - if ((ei = rn->info) != NULL) - { - if (add_to_ospf) - { - if (ospf_external_info_find_lsa (ospf, &ei->p)) - if (!ospf_distribute_check_connected (ospf, ei)) - ospf_external_lsa_flush (ospf, ei->type, &ei->p, - ei->ifindex /*, ei->nexthop */); - } - else - { - if (!ospf_external_info_find_lsa (ospf, &ei->p)) - if (ospf_distribute_check_connected (ospf, ei)) - ospf_external_lsa_originate (ospf, ei); - } - } - } - } -} - /* Config network statement related functions. */ static struct ospf_network * @@ -941,6 +867,7 @@ ospf_network_set (struct ospf *ospf, struct prefix_ipv4 *p, struct ospf_network *network; struct ospf_area *area; struct route_node *rn; + struct external_info *ei; int ret = OSPF_AREA_ID_FORMAT_ADDRESS; rn = route_node_get (ospf->networks, (struct prefix *)p); @@ -958,7 +885,15 @@ ospf_network_set (struct ospf *ospf, struct prefix_ipv4 *p, ospf_network_run ((struct prefix *)p, area); /* Update connected redistribute. */ - update_redistributed(ospf, 1); /* interfaces possibly added */ + if (ospf_is_type_redistributed (ZEBRA_ROUTE_CONNECT)) + if (EXTERNAL_INFO (ZEBRA_ROUTE_CONNECT)) + for (rn = route_top (EXTERNAL_INFO (ZEBRA_ROUTE_CONNECT)); + rn; rn = route_next (rn)) + if ((ei = rn->info) != NULL) + if (ospf_external_info_find_lsa (ospf, &ei->p)) + if (!ospf_distribute_check_connected (ospf, ei)) + ospf_external_lsa_flush (ospf, ei->type, &ei->p, + ei->ifindex /*, ei->nexthop */); ospf_area_check_free (ospf, area_id); @@ -971,6 +906,7 @@ ospf_network_unset (struct ospf *ospf, struct prefix_ipv4 *p, { struct route_node *rn; struct ospf_network *network; + struct external_info *ei; struct listnode *node, *nnode; struct ospf_interface *oi; @@ -1017,86 +953,14 @@ ospf_network_unset (struct ospf *ospf, struct prefix_ipv4 *p, } /* Update connected redistribute. */ - update_redistributed(ospf, 0); /* interfaces possibly removed */ - ospf_area_check_free (ospf, area_id); - - return 1; -} - -int -ospf_interface_set (struct interface *ifp, struct in_addr area_id) -{ - struct ospf_area *area; - struct listnode *cnode; - struct connected *co; - struct ospf *ospf; - struct ospf_if_params *params; - struct ospf_interface *oi; - int ret = OSPF_AREA_ID_FORMAT_ADDRESS; - - if ((ospf = ospf_lookup ()) == NULL) - return 1; /* Ospf not ready yet */ - - params = IF_DEF_PARAMS (ifp); - - SET_IF_PARAM (params, if_area); - params->if_area = area_id; - - area = ospf_area_get (ospf, area_id, ret); - - for (ALL_LIST_ELEMENTS_RO (ifp->connected, cnode, co)) - { - if (CHECK_FLAG(co->flags,ZEBRA_IFA_SECONDARY)) - continue; - - if (co->address->family == AF_INET) - { - oi = ospf_if_table_lookup(ifp, co->address); - if (!oi) - oi = add_ospf_interface(ifp, area, co); - - /* if router_id is not configured, dont bring up - * interfaces. - * ospf_router_id_update() will call ospf_if_update - * whenever r-id is configured instead. - */ - if ((area->ospf->router_id.s_addr != 0) && if_is_operative (ifp)) - ospf_if_up (oi); - } - } - - /* Update connected redistribute. */ - update_redistributed(ospf, 1); /* interface possibly added */ - return 1; -} - -int -ospf_interface_unset (struct interface *ifp) -{ - struct ospf *ospf; - struct ospf_if_params *params; - struct listnode *node, *nnode; - struct ospf_interface *oi; - struct in_addr area_id; - - ospf = ospf_lookup (); - if (!ospf) - return 1; /* Ospf not ready yet */ - - params = IF_DEF_PARAMS (ifp); - UNSET_IF_PARAM (params, if_area); - area_id = params->if_area; - - for (ALL_LIST_ELEMENTS (ospf->oiflist, node, nnode, oi)) - { - if (oi->type == OSPF_IFTYPE_VIRTUALLINK) - continue; - if (oi->ifp == ifp) ospf_if_free (oi); - } - - /* Update connected redistribute. */ - update_redistributed(ospf, 0); /* interfaces possibly removed */ - ospf_area_check_free (ospf, area_id); + if (ospf_is_type_redistributed (ZEBRA_ROUTE_CONNECT)) + if (EXTERNAL_INFO (ZEBRA_ROUTE_CONNECT)) + for (rn = route_top (EXTERNAL_INFO (ZEBRA_ROUTE_CONNECT)); + rn; rn = route_next (rn)) + if ((ei = rn->info) != NULL) + if (!ospf_external_info_find_lsa (ospf, &ei->p)) + if (ospf_distribute_check_connected (ospf, ei)) + ospf_external_lsa_originate (ospf, ei); return 1; } @@ -1216,8 +1080,7 @@ ospf_if_update (struct ospf *ospf, struct interface *ifp) struct route_node *rn; struct ospf_network *network; struct ospf_area *area; - struct ospf_if_params *params; - + if (!ospf) ospf = ospf_lookup (); @@ -1233,13 +1096,6 @@ ospf_if_update (struct ospf *ospf, struct interface *ifp) area = ospf_area_get (ospf, network->area_id, network->format); ospf_network_run_interface (&rn->p, area, ifp); } - - /* create oif for any new co */ - params = IF_DEF_PARAMS (ifp); - if (OSPF_IF_PARAM_CONFIGURED(params, if_area)) - { - ospf_interface_set (ifp, params->if_area); - } } void diff --git a/ospfd/ospfd.h b/ospfd/ospfd.h index 5f0a7bf113..3d3c73156c 100644 --- a/ospfd/ospfd.h +++ b/ospfd/ospfd.h @@ -296,9 +296,6 @@ struct ospf /* Statistics for LSA used for new instantiation. */ u_int32_t rx_lsa_count; - /* Counter of "ip ospf area x.x.x.x" */ - u_int32_t if_ospf_cli_count; - struct route_table *distance_table; }; @@ -581,6 +578,4 @@ extern void ospf_snmp_init (void); extern void ospf_master_init (void); -extern int ospf_interface_set (struct interface *ifp, struct in_addr area_id); -extern int ospf_interface_unset (struct interface *ifp); #endif /* _ZEBRA_OSPFD_H */