2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_interface.h: Declare new function ospf_default_iftype.
* ospf_interface.c: (ospf_default_iftype) New function to centralize
this logic in one place.
* ospf_zebra.c: (ospf_interface_add) Use new function
ospf_default_iftype.
* ospf_vty.c: (no_ip_ospf_network,config_write_interface) Fix logic
by using new function ospf_default_iftype.
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 82d0039..235b7fb 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,13 @@
+2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * ospf_interface.h: Declare new function ospf_default_iftype.
+ * ospf_interface.c: (ospf_default_iftype) New function to centralize
+ this logic in one place.
+ * ospf_zebra.c: (ospf_interface_add) Use new function
+ ospf_default_iftype.
+ * ospf_vty.c: (no_ip_ospf_network,config_write_interface) Fix logic
+ by using new function ospf_default_iftype.
+
2004-12-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_packet.c: (ospf_db_desc) Should be static, not global.
diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c
index 5a8f453..da08360 100644
--- a/ospfd/ospf_interface.c
+++ b/ospfd/ospf_interface.c
@@ -1174,6 +1174,17 @@
return 0;
}
+u_char
+ospf_default_iftype(struct interface *ifp)
+{
+ if (if_is_pointopoint (ifp))
+ return OSPF_IFTYPE_POINTOPOINT;
+ else if (if_is_loopback (ifp))
+ return OSPF_IFTYPE_LOOPBACK;
+ else
+ return OSPF_IFTYPE_BROADCAST;
+}
+
void
ospf_if_init ()
{
diff --git a/ospfd/ospf_interface.h b/ospfd/ospf_interface.h
index ed6abed..60ee165 100644
--- a/ospfd/ospf_interface.h
+++ b/ospfd/ospf_interface.h
@@ -246,4 +246,6 @@
void ospf_crypt_key_add (struct list *, struct crypt_key *);
int ospf_crypt_key_delete (struct list *, u_char);
+u_char ospf_default_iftype(struct interface *ifp);
+
#endif /* _ZEBRA_OSPF_INTERFACE_H */
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 6a679f9..b9c554f 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -4853,7 +4853,7 @@
int old_type = IF_DEF_PARAMS (ifp)->type;
struct route_node *rn;
- IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_BROADCAST;
+ IF_DEF_PARAMS (ifp)->type = ospf_default_iftype(ifp);
if (IF_DEF_PARAMS (ifp)->type == old_type)
return CMD_SUCCESS;
@@ -6722,8 +6722,7 @@
if (OSPF_IF_PARAM_CONFIGURED (params, type) &&
params->type != OSPF_IFTYPE_LOOPBACK)
{
- if ((!if_is_broadcast(ifp)) &&
- (params->type != OSPF_IFTYPE_BROADCAST))
+ if (params->type != ospf_default_iftype(ifp))
{
vty_out (vty, " ip ospf network %s",
ospf_int_type_str[params->type]);
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index 44b5950..8468aed 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -95,14 +95,7 @@
if (!OSPF_IF_PARAM_CONFIGURED (IF_DEF_PARAMS (ifp), type))
{
SET_IF_PARAM (IF_DEF_PARAMS (ifp), type);
- IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_BROADCAST;
-
- if (if_is_broadcast (ifp))
- IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_BROADCAST;
- else if (if_is_pointopoint (ifp))
- IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_POINTOPOINT;
- else if (if_is_loopback (ifp))
- IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_LOOPBACK;
+ IF_DEF_PARAMS (ifp)->type = ospf_default_iftype(ifp);
}
ospf = ospf_lookup ();