summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/ospfd.texi5
-rw-r--r--ospfd/ospf_interface.h2
-rw-r--r--ospfd/ospf_vty.c27
-rw-r--r--ospfd/ospfd.c184
-rw-r--r--ospfd/ospfd.h5
5 files changed, 20 insertions, 203 deletions
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 */