2003-06-19 Paul Jakma <paul@dishone.st>

	* ospfd/ospf_zebra.c: Run it through indent -nut to fix the $%^@ing
	annoying mix of tabs and spaces.
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index 81bf59a..7101d56 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -65,21 +65,21 @@
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
     zlog_info ("Zebra: interface add %s index %d flags %ld metric %d mtu %d",
-	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+               ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
-  assert(ifp->info);
+  assert (ifp->info);
 
   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;
+        IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_BROADCAST;
       else if (if_is_pointopoint (ifp))
-	IF_DEF_PARAMS (ifp)->type = OSPF_IFTYPE_POINTOPOINT;
+        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_IFTYPE_LOOPBACK;
     }
 
   ospf = ospf_lookup ();
@@ -95,13 +95,13 @@
 
 int
 ospf_interface_delete (int command, struct zclient *zclient,
-		       zebra_size_t length)
+                       zebra_size_t length)
 {
   struct interface *ifp;
   struct stream *s;
   struct route_node *rn;
 
-  s = zclient->ibuf;  
+  s = zclient->ibuf;
   /* zebra_interface_state_read() updates interface structure in iflist */
   ifp = zebra_interface_state_read (s);
 
@@ -110,11 +110,12 @@
 
   if (if_is_up (ifp))
     zlog_warn ("Zebra: got delete of %s, but interface is still up",
-	       ifp->name);
-  
+               ifp->name);
+
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info ("Zebra: interface delete %s index %d flags %ld metric %d mtu %d",
-	       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);  
+    zlog_info
+      ("Zebra: interface delete %s index %d flags %ld metric %d mtu %d",
+       ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
 #ifdef HAVE_SNMP
   ospf_snmp_if_delete (ifp);
@@ -127,7 +128,7 @@
   for (rn = route_top (IF_OIFS_PARAMS (ifp)); rn; rn = route_next (rn))
     if (rn->info)
       ospf_del_if_params (rn->info);
-  
+
   if_delete (ifp);
 
   return 0;
@@ -168,13 +169,13 @@
 
 int
 ospf_interface_state_up (int command, struct zclient *zclient,
-			 zebra_size_t length)
+                         zebra_size_t length)
 {
   struct interface *ifp;
   struct interface if_tmp;
   struct ospf_interface *oi;
   struct route_node *rn;
-  
+
   ifp = zebra_interface_if_lookup (zclient->ibuf);
 
   if (ifp == NULL)
@@ -189,38 +190,38 @@
       zebra_interface_if_set_value (zclient->ibuf, ifp);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-	zlog_info ("Zebra: Interface[%s] state update.", ifp->name);
+        zlog_info ("Zebra: Interface[%s] state update.", ifp->name);
 
       if (if_tmp.bandwidth != ifp->bandwidth)
-	{
-	  if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-	    zlog_info ("Zebra: Interface[%s] bandwidth change %d -> %d.",
-		       ifp->name, if_tmp.bandwidth, ifp->bandwidth);
+        {
+          if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
+            zlog_info ("Zebra: Interface[%s] bandwidth change %d -> %d.",
+                       ifp->name, if_tmp.bandwidth, ifp->bandwidth);
 
-	  ospf_if_recalculate_output_cost (ifp);
-	}
+          ospf_if_recalculate_output_cost (ifp);
+        }
       return 0;
     }
-  
+
   zebra_interface_if_set_value (zclient->ibuf, ifp);
-  
+
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
     zlog_info ("Zebra: Interface[%s] state change to up.", ifp->name);
-  
-  for (rn = route_top (IF_OIFS (ifp));rn; rn = route_next (rn))
+
+  for (rn = route_top (IF_OIFS (ifp)); rn; rn = route_next (rn))
     {
-      if ( (oi = rn->info) == NULL)
-	continue;
-      
+      if ((oi = rn->info) == NULL)
+        continue;
+
       ospf_if_up (oi);
     }
-  
+
   return 0;
 }
 
 int
 ospf_interface_state_down (int command, struct zclient *zclient,
-			   zebra_size_t length)
+                           zebra_size_t length)
 {
   struct interface *ifp;
   struct ospf_interface *oi;
@@ -234,10 +235,10 @@
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
     zlog_info ("Zebra: Interface[%s] state change to down.", ifp->name);
 
-  for (node = route_top (IF_OIFS (ifp));node; node = route_next (node))
+  for (node = route_top (IF_OIFS (ifp)); node; node = route_next (node))
     {
-      if ( (oi = node->info) == NULL)
-	continue;
+      if ((oi = node->info) == NULL)
+        continue;
       ospf_if_down (oi);
     }
 
@@ -246,7 +247,7 @@
 
 int
 ospf_interface_address_add (int command, struct zclient *zclient,
-			    zebra_size_t length)
+                            zebra_size_t length)
 {
   struct ospf *ospf;
   struct connected *c;
@@ -269,7 +270,7 @@
 
 int
 ospf_interface_address_delete (int command, struct zclient *zclient,
-			       zebra_size_t length)
+                               zebra_size_t length)
 {
   struct ospf *ospf;
   struct connected *c;
@@ -288,15 +289,15 @@
   p.prefixlen = IPV4_MAX_PREFIXLEN;
 
   rn = route_node_lookup (IF_OIFS (ifp), &p);
-  if (! rn)
+  if (!rn)
     return 0;
 
   assert (rn->info);
   oi = rn->info;
-  
+
   /* Call interface hook functions to clean up */
   ospf_if_free (oi);
-  
+
 #ifdef HAVE_SNMP
   ospf_snmp_if_update (c->ifp);
 #endif /* HAVE_SNMP */
@@ -347,11 +348,11 @@
       stream_putc (s, ZEBRA_ROUTE_OSPF);
       stream_putc (s, flags);
       stream_putc (s, message);
-  
+
       /* Put prefix information. */
       psize = PSIZE (p->prefixlen);
       stream_putc (s, p->prefixlen);
-      stream_write (s, (u_char *)&p->prefix, psize);
+      stream_write (s, (u_char *) & p->prefix, psize);
 
       /* Nexthop count. */
       stream_putc (s, or->path->count);
@@ -359,42 +360,41 @@
       /* Nexthop, ifindex, distance and metric information. */
       for (node = listhead (or->path); node; nextnode (node))
         {
-	  path = getdata (node);
+          path = getdata (node);
 
-	  if (path->nexthop.s_addr != INADDR_ANY)
-	    {
-	      stream_putc (s, ZEBRA_NEXTHOP_IPV4);
-	      stream_put_in_addr (s, &path->nexthop);
-	    }
-	  else
-	    {
-	      stream_putc (s, ZEBRA_NEXTHOP_IFINDEX);
-	      if (path->oi)
-		stream_putl (s, path->oi->ifp->ifindex);
-	      else
-		stream_putl (s, 0);
-	    }
+          if (path->nexthop.s_addr != INADDR_ANY)
+            {
+              stream_putc (s, ZEBRA_NEXTHOP_IPV4);
+              stream_put_in_addr (s, &path->nexthop);
+            }
+          else
+            {
+              stream_putc (s, ZEBRA_NEXTHOP_IFINDEX);
+              if (path->oi)
+                stream_putl (s, path->oi->ifp->ifindex);
+              else
+                stream_putl (s, 0);
+            }
 
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
             {
               zlog_info ("Zebra: Route add %s/%d nexthop %s",
-                     inet_ntoa (p->prefix), 
-                     p->prefixlen, 
-                     inet_ntoa (path->nexthop));
-	    }
-	}
+                         inet_ntoa (p->prefix),
+                         p->prefixlen, inet_ntoa (path->nexthop));
+            }
+        }
 
       if (CHECK_FLAG (message, ZAPI_MESSAGE_DISTANCE))
-	stream_putc (s, distance);
+        stream_putc (s, distance);
       if (CHECK_FLAG (message, ZAPI_MESSAGE_METRIC))
-	{
-	  if (or->path_type == OSPF_PATH_TYPE1_EXTERNAL)
-	    stream_putl (s, or->cost + or->u.ext.type2_cost);
-	  else if (or->path_type == OSPF_PATH_TYPE2_EXTERNAL)
-	    stream_putl (s, or->u.ext.type2_cost);
-	  else
-	    stream_putl (s, or->cost);
-	}
+        {
+          if (or->path_type == OSPF_PATH_TYPE1_EXTERNAL)
+            stream_putl (s, or->cost + or->u.ext.type2_cost);
+          else if (or->path_type == OSPF_PATH_TYPE2_EXTERNAL)
+            stream_putl (s, or->u.ext.type2_cost);
+          else
+            stream_putl (s, or->cost);
+        }
 
       stream_putw_at (s, 0, stream_get_endp (s));
 
@@ -420,31 +420,30 @@
       SET_FLAG (api.message, ZAPI_MESSAGE_NEXTHOP);
 
       for (node = listhead (or->path); node; nextnode (node))
-	{
-	  path = getdata (node);
+        {
+          path = getdata (node);
 
-	  if (path->nexthop.s_addr != INADDR_ANY)
-	    {
-	      api.nexthop_num = 1;
-	      nexthop = &path->nexthop;
-	      api.nexthop = &nexthop;
-	    }
-	  else
-	    {
-	      api.ifindex_num = 1;
-	      api.ifindex = &path->oi->ifp->ifindex;
-	    }
+          if (path->nexthop.s_addr != INADDR_ANY)
+            {
+              api.nexthop_num = 1;
+              nexthop = &path->nexthop;
+              api.nexthop = &nexthop;
+            }
+          else
+            {
+              api.ifindex_num = 1;
+              api.ifindex = &path->oi->ifp->ifindex;
+            }
 
           zapi_ipv4_delete (zclient, p, &api);
 
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE) && api.nexthop_num)
-	    {
-	      zlog_info ("Zebra: Route delete %s/%d nexthop %s",
-                     inet_ntoa (p->prefix), 
-                     p->prefixlen, 
-                     inet_ntoa (**api.nexthop));
-	    }
-	}
+            {
+              zlog_info ("Zebra: Route delete %s/%d nexthop %s",
+                         inet_ntoa (p->prefix),
+                         p->prefixlen, inet_ntoa (**api.nexthop));
+            }
+        }
     }
 }
 
@@ -483,8 +482,8 @@
       zapi_ipv4_delete (zclient, p, &api);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-	    zlog_info ("Zebra: Route delete discard %s/%d",
-		inet_ntoa (p->prefix), p->prefixlen);
+        zlog_info ("Zebra: Route delete discard %s/%d",
+                   inet_ntoa (p->prefix), p->prefixlen);
 
     }
 }
@@ -500,27 +499,27 @@
 ospf_redistribute_set (struct ospf *ospf, int type, int mtype, int mvalue)
 {
   int force = 0;
-  
+
   if (ospf_is_type_redistributed (type))
     {
       if (mtype != ospf->dmetric[type].type)
-	{
-	  ospf->dmetric[type].type = mtype;
-	  force = LSA_REFRESH_FORCE;
-	}
+        {
+          ospf->dmetric[type].type = mtype;
+          force = LSA_REFRESH_FORCE;
+        }
       if (mvalue != ospf->dmetric[type].value)
-	{
-	  ospf->dmetric[type].value = mvalue;
-	  force = LSA_REFRESH_FORCE;
-	}
-	  
+        {
+          ospf->dmetric[type].value = mvalue;
+          force = LSA_REFRESH_FORCE;
+        }
+
       ospf_external_lsa_refresh_type (ospf, type, force);
-      
+
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-	zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
-		   LOOKUP (ospf_redistributed_proto, type),
-		   metric_type (ospf, type), metric_value (ospf, type));
-      
+        zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
+                   LOOKUP (ospf_redistributed_proto, type),
+                   metric_type (ospf, type), metric_value (ospf, type));
+
       return CMD_SUCCESS;
     }
 
@@ -531,9 +530,9 @@
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
     zlog_info ("Redistribute[%s]: Start  Type[%d], Metric[%d]",
-	       LOOKUP (ospf_redistributed_proto, type),
-	       metric_type (ospf, type), metric_value (ospf, type));
-  
+               LOOKUP (ospf_redistributed_proto, type),
+               metric_type (ospf, type), metric_value (ospf, type));
+
   ospf_asbr_status_update (ospf, ++ospf->redistribute);
 
   return CMD_SUCCESS;
@@ -545,14 +544,14 @@
   if (type == zclient->redist_default)
     return CMD_SUCCESS;
 
-  if (! ospf_is_type_redistributed (type))
+  if (!ospf_is_type_redistributed (type))
     return CMD_SUCCESS;
 
   zclient_redistribute_unset (zclient, type);
-  
+
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
     zlog_info ("Redistribute[%s]: Stop",
-	       LOOKUP (ospf_redistributed_proto, type));
+               LOOKUP (ospf_redistributed_proto, type));
 
   ospf->dmetric[type].type = -1;
   ospf->dmetric[type].value = -1;
@@ -567,30 +566,30 @@
 
 int
 ospf_redistribute_default_set (struct ospf *ospf, int originate,
-			       int mtype, int mvalue)
+                               int mtype, int mvalue)
 {
   int force = 0;
 
   if (ospf_is_type_redistributed (DEFAULT_ROUTE))
     {
       if (mtype != ospf->dmetric[DEFAULT_ROUTE].type)
-	{
-	  ospf->dmetric[DEFAULT_ROUTE].type = mtype;
-	  force = 1;
-	}
+        {
+          ospf->dmetric[DEFAULT_ROUTE].type = mtype;
+          force = 1;
+        }
       if (mvalue != ospf->dmetric[DEFAULT_ROUTE].value)
-	{
-	  force = 1;
-	  ospf->dmetric[DEFAULT_ROUTE].value = mvalue;
-	}
-      
+        {
+          force = 1;
+          ospf->dmetric[DEFAULT_ROUTE].value = mvalue;
+        }
+
       ospf_external_lsa_refresh_default (ospf);
-      
+
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-	zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
-		   LOOKUP (ospf_redistributed_proto, DEFAULT_ROUTE),
-		   metric_type (ospf, DEFAULT_ROUTE),
-		   metric_value (ospf, DEFAULT_ROUTE));
+        zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
+                   LOOKUP (ospf_redistributed_proto, DEFAULT_ROUTE),
+                   metric_type (ospf, DEFAULT_ROUTE),
+                   metric_value (ospf, DEFAULT_ROUTE));
       return CMD_SUCCESS;
     }
 
@@ -599,17 +598,17 @@
   ospf->dmetric[DEFAULT_ROUTE].value = mvalue;
 
   zclient_redistribute_default_set (zclient);
-  
+
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
     zlog_info ("Redistribute[DEFAULT]: Start  Type[%d], Metric[%d]",
-	       metric_type (ospf, DEFAULT_ROUTE),
-	       metric_value (ospf, DEFAULT_ROUTE));
+               metric_type (ospf, DEFAULT_ROUTE),
+               metric_value (ospf, DEFAULT_ROUTE));
 
   if (ospf->router_id.s_addr == 0)
     ospf->external_origin |= (1 << DEFAULT_ROUTE);
   else
     thread_add_timer (master, ospf_default_originate_timer,
-		      &ospf->default_originate, 1);
+                      &ospf->default_originate, 1);
 
   ospf_asbr_status_update (ospf, ++ospf->redistribute);
 
@@ -630,7 +629,7 @@
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
     zlog_info ("Redistribute[DEFAULT]: Stop");
-  
+
   ospf_asbr_status_update (ospf, --ospf->redistribute);
 
   return CMD_SUCCESS;
@@ -638,13 +637,13 @@
 
 int
 ospf_external_lsa_originate_check (struct ospf *ospf,
-				   struct external_info *ei)
+                                   struct external_info *ei)
 {
   /* If prefix is multicast, then do not originate LSA. */
   if (IN_MULTICAST (htonl (ei->p.prefix.s_addr)))
     {
       zlog_info ("LSA[Type5:%s]: Not originate AS-external-LSA, "
-		 "Prefix belongs multicast", inet_ntoa (ei->p.prefix));
+                 "Prefix belongs multicast", inet_ntoa (ei->p.prefix));
       return 0;
     }
 
@@ -652,9 +651,9 @@
   if (is_prefix_default (&ei->p))
     if (ospf->default_originate == DEFAULT_ORIGINATE_NONE)
       {
-	zlog_info ("LSA[Type5:0.0.0.0]: Not originate AS-exntenal-LSA "
-		   "for default");
-	return 0;
+        zlog_info ("LSA[Type5:0.0.0.0]: Not originate AS-exntenal-LSA "
+                   "for default");
+        return 0;
       }
 
   return 1;
@@ -662,18 +661,17 @@
 
 /* If connected prefix is OSPF enable interface, then do not announce. */
 int
-ospf_distribute_check_connected (struct ospf *ospf,
-				 struct external_info *ei)
+ospf_distribute_check_connected (struct ospf *ospf, struct external_info *ei)
 {
   struct route_node *rn;
 
   for (rn = route_top (ospf->networks); rn; rn = route_next (rn))
     if (rn->info != NULL)
-      if (prefix_match (&rn->p, (struct prefix *)&ei->p))
-	{
-	  route_unlock_node (rn);
-	  return 0;
-	}
+      if (prefix_match (&rn->p, (struct prefix *) &ei->p))
+        {
+          route_unlock_node (rn);
+          return 0;
+        }
 
   return 1;
 }
@@ -681,12 +679,12 @@
 /* return 1 if external LSA must be originated, 0 otherwise */
 int
 ospf_redistribute_check (struct ospf *ospf,
-			 struct external_info *ei, int *changed)
+                         struct external_info *ei, int *changed)
 {
   struct route_map_set_values save_values;
   struct prefix_ipv4 *p = &ei->p;
   u_char type = is_prefix_default (&ei->p) ? DEFAULT_ROUTE : ei->type;
-  
+
   if (changed)
     *changed = 0;
 
@@ -702,39 +700,39 @@
     /* distirbute-list exists, but access-list may not? */
     if (DISTRIBUTE_LIST (ospf, type))
       if (access_list_apply (DISTRIBUTE_LIST (ospf, type), p) == FILTER_DENY)
-	{
-	  if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-	    zlog_info ("Redistribute[%s]: %s/%d filtered by ditribute-list.",
-		       LOOKUP (ospf_redistributed_proto, type),
-		       inet_ntoa (p->prefix), p->prefixlen);
-	  return 0;
-	}
+        {
+          if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
+            zlog_info ("Redistribute[%s]: %s/%d filtered by ditribute-list.",
+                       LOOKUP (ospf_redistributed_proto, type),
+                       inet_ntoa (p->prefix), p->prefixlen);
+          return 0;
+        }
 
   save_values = ei->route_map_set;
   ospf_reset_route_map_set_values (&ei->route_map_set);
-  
+
   /* apply route-map if needed */
   if (ROUTEMAP_NAME (ospf, type))
     {
       int ret;
 
-      ret = route_map_apply (ROUTEMAP (ospf, type), (struct prefix *)p,
-			     RMAP_OSPF, ei);
+      ret = route_map_apply (ROUTEMAP (ospf, type), (struct prefix *) p,
+                             RMAP_OSPF, ei);
 
       if (ret == RMAP_DENYMATCH)
-	{
-	  ei->route_map_set = save_values;
-	  if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-	    zlog_info ("Redistribute[%s]: %s/%d filtered by route-map.",
-		       LOOKUP (ospf_redistributed_proto, type),
-		       inet_ntoa (p->prefix), p->prefixlen);
-	  return 0;
-	}
-      
+        {
+          ei->route_map_set = save_values;
+          if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
+            zlog_info ("Redistribute[%s]: %s/%d filtered by route-map.",
+                       LOOKUP (ospf_redistributed_proto, type),
+                       inet_ntoa (p->prefix), p->prefixlen);
+          return 0;
+        }
+
       /* check if 'route-map set' changed something */
       if (changed)
-	*changed = !ospf_route_map_set_compare (&ei->route_map_set,
-						&save_values);
+        *changed = !ospf_route_map_set_compare (&ei->route_map_set,
+                                                &save_values);
     }
 
   return 1;
@@ -764,7 +762,7 @@
 /* Zebra route add and delete treatment. */
 int
 ospf_zebra_read_ipv4 (int command, struct zclient *zclient,
-		      zebra_size_t length)
+                      zebra_size_t length)
 {
   struct stream *s;
   struct zapi_ipv4 api;
@@ -814,45 +812,45 @@
       ei = ospf_external_info_add (api.type, p, ifindex, nexthop);
 
       if (ospf->router_id.s_addr == 0)
-	/* Set flags to generate AS-external-LSA originate event
-	   for each redistributed protocols later. */
-	ospf->external_origin |= (1 << api.type);
+        /* Set flags to generate AS-external-LSA originate event
+           for each redistributed protocols later. */
+        ospf->external_origin |= (1 << api.type);
       else
-	{
-	  if (ei)
-	    {
-	      if (is_prefix_default (&p))
-		ospf_external_lsa_refresh_default (ospf);
-	      else
-		{
-		  struct ospf_lsa *current;
+        {
+          if (ei)
+            {
+              if (is_prefix_default (&p))
+                ospf_external_lsa_refresh_default (ospf);
+              else
+                {
+                  struct ospf_lsa *current;
 
-		  current = ospf_external_info_find_lsa (ospf, &ei->p);
-		  if (!current)
-		    ospf_external_lsa_originate (ospf, ei);
-		  else if (IS_LSA_MAXAGE (current))
-		    ospf_external_lsa_refresh (ospf, current,
-					       ei, LSA_REFRESH_FORCE);
-		  else
-		    zlog_warn ("ospf_zebra_read_ipv4() : %s already exists",
-			       inet_ntoa (p.prefix));
-		}
-	    }
-	}
+                  current = ospf_external_info_find_lsa (ospf, &ei->p);
+                  if (!current)
+                    ospf_external_lsa_originate (ospf, ei);
+                  else if (IS_LSA_MAXAGE (current))
+                    ospf_external_lsa_refresh (ospf, current,
+                                               ei, LSA_REFRESH_FORCE);
+                  else
+                    zlog_warn ("ospf_zebra_read_ipv4() : %s already exists",
+                               inet_ntoa (p.prefix));
+                }
+            }
+        }
     }
-  else /* if (command == ZEBRA_IPV4_ROUTE_DELETE) */
+  else                          /* if (command == ZEBRA_IPV4_ROUTE_DELETE) */
     {
       ospf_external_info_delete (api.type, p);
-      if ( !is_prefix_default (&p))
-	ospf_external_lsa_flush (ospf, api.type, &p, ifindex, nexthop);
+      if (!is_prefix_default (&p))
+        ospf_external_lsa_flush (ospf, api.type, &p, ifindex, nexthop);
       else
-	ospf_external_lsa_refresh_default (ospf);
+        ospf_external_lsa_refresh_default (ospf);
     }
 
   return 0;
 }
-
 
+
 int
 ospf_distribute_list_out_set (struct ospf *ospf, int type, char *name)
 {
@@ -886,7 +884,7 @@
   /* Clear distribute-name. */
   if (DISTRIBUTE_NAME (ospf, type))
     free (DISTRIBUTE_NAME (ospf, type));
-  
+
   DISTRIBUTE_NAME (ospf, type) = NULL;
 
   return CMD_SUCCESS;
@@ -918,14 +916,14 @@
   if (rt)
     for (rn = route_top (rt); rn; rn = route_next (rn))
       if ((ei = rn->info) != NULL)
-	{
-	  if (is_prefix_default (&ei->p))
-	    ospf_external_lsa_refresh_default (ospf);
-	  else if ((lsa = ospf_external_info_find_lsa (ospf, &ei->p)))
-	    ospf_external_lsa_refresh (ospf, lsa, ei, LSA_REFRESH_IF_CHANGED);
-	  else
-	    ospf_external_lsa_originate (ospf, ei);
-	}
+        {
+          if (is_prefix_default (&ei->p))
+            ospf_external_lsa_refresh_default (ospf);
+          else if ((lsa = ospf_external_info_find_lsa (ospf, &ei->p)))
+            ospf_external_lsa_refresh (ospf, lsa, ei, LSA_REFRESH_IF_CHANGED);
+          else
+            ospf_external_lsa_originate (ospf, ei);
+        }
   return 0;
 }
 
@@ -936,7 +934,7 @@
 ospf_distribute_list_update (struct ospf *ospf, int type)
 {
   struct route_table *rt;
-  
+
   /* External info does not exist. */
   if (!(rt = EXTERNAL_INFO (type)))
     return;
@@ -948,7 +946,7 @@
   /* Set timer. */
   ospf->t_distribute_update =
     thread_add_timer (master, ospf_distribute_list_update_timer,
-		      (void *) type, OSPF_DISTRIBUTE_UPDATE_DELAY);
+                      (void *) type, OSPF_DISTRIBUTE_UPDATE_DELAY);
 }
 
 /* If access-list is updated, apply some check. */
@@ -970,56 +968,56 @@
   for (type = 0; type < ZEBRA_ROUTE_MAX; type++)
     {
       if (ROUTEMAP (ospf, type) != NULL)
-	{
-	  /* if route-map is not NULL it may be using this access list */
-	  ospf_distribute_list_update (ospf, type);
-	  continue;
-	}
-      
+        {
+          /* if route-map is not NULL it may be using this access list */
+          ospf_distribute_list_update (ospf, type);
+          continue;
+        }
+
 
       if (DISTRIBUTE_NAME (ospf, type))
-	{
-	  /* Keep old access-list for distribute-list. */
-	  struct access_list *old = DISTRIBUTE_LIST (ospf, type);
-	  
-	  /* Update access-list for distribute-list. */
-	  DISTRIBUTE_LIST (ospf, type) =
-	    access_list_lookup (AFI_IP, DISTRIBUTE_NAME (ospf, type));
-	  
-	  /* No update for this distribute type. */
-	  if (old == NULL && DISTRIBUTE_LIST (ospf, type) == NULL)
-	    continue;
-	  
-	  /* Schedule distribute-list update timer. */
-	  if (DISTRIBUTE_LIST (ospf, type) == NULL ||
-	      strcmp (DISTRIBUTE_NAME (ospf, type), access->name) == 0)
-	    ospf_distribute_list_update (ospf, type);
-	}
+        {
+          /* Keep old access-list for distribute-list. */
+          struct access_list *old = DISTRIBUTE_LIST (ospf, type);
+
+          /* Update access-list for distribute-list. */
+          DISTRIBUTE_LIST (ospf, type) =
+            access_list_lookup (AFI_IP, DISTRIBUTE_NAME (ospf, type));
+
+          /* No update for this distribute type. */
+          if (old == NULL && DISTRIBUTE_LIST (ospf, type) == NULL)
+            continue;
+
+          /* Schedule distribute-list update timer. */
+          if (DISTRIBUTE_LIST (ospf, type) == NULL ||
+              strcmp (DISTRIBUTE_NAME (ospf, type), access->name) == 0)
+            ospf_distribute_list_update (ospf, type);
+        }
     }
 
   /* Update Area access-list. */
   for (node = listhead (ospf->areas); node; nextnode (node))
     if ((area = getdata (node)) != NULL)
       {
-	if (EXPORT_NAME (area))
-	  {
-	    EXPORT_LIST (area) = NULL;
-	    abr_inv++;
-	  }
+        if (EXPORT_NAME (area))
+          {
+            EXPORT_LIST (area) = NULL;
+            abr_inv++;
+          }
 
-	if (IMPORT_NAME (area))
-	  {
-	    IMPORT_LIST (area) = NULL;
-	    abr_inv++;
-	  }
+        if (IMPORT_NAME (area))
+          {
+            IMPORT_LIST (area) = NULL;
+            abr_inv++;
+          }
       }
 
   /* Schedule ABR tasks -- this will be changed -- takada. */
   if (IS_OSPF_ABR (ospf) && abr_inv)
     ospf_schedule_abr_task (ospf);
 }
-
 
+
 struct ospf_distance *
 ospf_distance_new ()
 {
@@ -1037,7 +1035,7 @@
 
 int
 ospf_distance_set (struct vty *vty, struct ospf *ospf, char *distance_str,
-		   char *ip_str, char *access_list_str)
+                   char *ip_str, char *access_list_str)
 {
   int ret;
   struct prefix_ipv4 p;
@@ -1084,7 +1082,7 @@
 
 int
 ospf_distance_unset (struct vty *vty, struct ospf *ospf, char *distance_str,
-		     char *ip_str, char *access_list_str)
+                     char *ip_str, char *access_list_str)
 {
   int ret;
   struct prefix_ipv4 p;
@@ -1101,8 +1099,8 @@
 
   distance = atoi (distance_str);
 
-  rn = route_node_lookup (ospf->distance_table, (struct prefix *)&p);
-  if (! rn)
+  rn = route_node_lookup (ospf->distance_table, (struct prefix *) &p);
+  if (!rn)
     {
       vty_out (vty, "Can't find specified prefix%s", VTY_NEWLINE);
       return CMD_WARNING;
@@ -1130,11 +1128,11 @@
   for (rn = route_top (ospf->distance_table); rn; rn = route_next (rn))
     if ((odistance = rn->info) != NULL)
       {
-	if (odistance->access_list)
-	  free (odistance->access_list);
-	ospf_distance_free (odistance);
-	rn->info = NULL;
-	route_unlock_node (rn);
+        if (odistance->access_list)
+          free (odistance->access_list);
+        ospf_distance_free (odistance);
+        rn->info = NULL;
+        route_unlock_node (rn);
       }
 }
 
@@ -1157,9 +1155,9 @@
 
   if (ospf->distance_external)
     if (or->path_type == OSPF_PATH_TYPE1_EXTERNAL
-	|| or->path_type == OSPF_PATH_TYPE2_EXTERNAL)
+        || or->path_type == OSPF_PATH_TYPE2_EXTERNAL)
       return ospf->distance_external;
-  
+
   if (ospf->distance_all)
     return ospf->distance_all;