diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 33c790a..77f6899 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,7 @@
+2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* *.c: Change level of debug messages to LOG_DEBUG.
+
 2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* ospf_main.c: (main) The 2nd argument to openzlog has been removed.
diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c
index 646c8ed..44b5950 100644
--- a/ospfd/ospf_zebra.c
+++ b/ospfd/ospf_zebra.c
@@ -87,7 +87,7 @@
   ifp = zebra_interface_add_read (zclient->ibuf);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info ("Zebra: interface add %s index %d flags %ld metric %d mtu %d",
+    zlog_debug ("Zebra: interface add %s index %d flags %ld metric %d mtu %d",
                ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
   assert (ifp->info);
@@ -136,7 +136,7 @@
                ifp->name);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info
+    zlog_debug
       ("Zebra: interface delete %s index %d flags %ld metric %d mtu %d",
        ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
@@ -193,12 +193,12 @@
       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_debug ("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.",
+            zlog_debug ("Zebra: Interface[%s] bandwidth change %d -> %d.",
                        ifp->name, if_tmp.bandwidth, ifp->bandwidth);
 
           ospf_if_recalculate_output_cost (ifp);
@@ -209,7 +209,7 @@
   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);
+    zlog_debug ("Zebra: Interface[%s] state change to up.", ifp->name);
 
   for (rn = route_top (IF_OIFS (ifp)); rn; rn = route_next (rn))
     {
@@ -236,7 +236,7 @@
     return 0;
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE))
-    zlog_info ("Zebra: Interface[%s] state change to down.", ifp->name);
+    zlog_debug ("Zebra: Interface[%s] state change to down.", ifp->name);
 
   for (node = route_top (IF_OIFS (ifp)); node; node = route_next (node))
     {
@@ -381,7 +381,7 @@
 
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
             {
-              zlog_info ("Zebra: Route add %s/%d nexthop %s",
+              zlog_debug ("Zebra: Route add %s/%d nexthop %s",
                          inet_ntoa (p->prefix),
                          p->prefixlen, inet_ntoa (path->nexthop));
             }
@@ -440,7 +440,7 @@
             }
           else if ( IS_DEBUG_OSPF(zebra,ZEBRA_REDISTRIBUTE) )
             {
-              zlog_info("Zebra: no ifp %s %d",
+              zlog_debug("Zebra: no ifp %s %d",
                          inet_ntoa(p->prefix),
                          p->prefixlen);
             }
@@ -449,13 +449,13 @@
 
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE) && api.nexthop_num)
             {
-              zlog_info ("Zebra: Route delete %s/%d nexthop %s",
+              zlog_debug ("Zebra: Route delete %s/%d nexthop %s",
                          inet_ntoa (p->prefix),
                          p->prefixlen, inet_ntoa (**api.nexthop));
             }
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE) && api.ifindex_num)
             {
-              zlog_info ("Zebra: Route delete %s/%d ifindex %d",
+              zlog_debug ("Zebra: Route delete %s/%d ifindex %d",
                          inet_ntoa (p->prefix),
                          p->prefixlen, *api.ifindex);
             }
@@ -498,7 +498,7 @@
       zapi_ipv4_route (ZEBRA_IPV4_ROUTE_DELETE, zclient, p, &api);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-        zlog_info ("Zebra: Route delete discard %s/%d",
+        zlog_debug ("Zebra: Route delete discard %s/%d",
                    inet_ntoa (p->prefix), p->prefixlen);
 
     }
@@ -532,7 +532,7 @@
       ospf_external_lsa_refresh_type (ospf, type, force);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-        zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
+        zlog_debug ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
                    LOOKUP (ospf_redistributed_proto, type),
                    metric_type (ospf, type), metric_value (ospf, type));
 
@@ -545,7 +545,7 @@
   zclient_redistribute (ZEBRA_REDISTRIBUTE_ADD, zclient, type);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[%s]: Start  Type[%d], Metric[%d]",
+    zlog_debug ("Redistribute[%s]: Start  Type[%d], Metric[%d]",
                LOOKUP (ospf_redistributed_proto, type),
                metric_type (ospf, type), metric_value (ospf, type));
 
@@ -566,7 +566,7 @@
   zclient_redistribute (ZEBRA_REDISTRIBUTE_DELETE, zclient, type);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[%s]: Stop",
+    zlog_debug ("Redistribute[%s]: Stop",
                LOOKUP (ospf_redistributed_proto, type));
 
   ospf->dmetric[type].type = -1;
@@ -602,7 +602,7 @@
       ospf_external_lsa_refresh_default (ospf);
 
       if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-        zlog_info ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
+        zlog_debug ("Redistribute[%s]: Refresh  Type[%d], Metric[%d]",
                    LOOKUP (ospf_redistributed_proto, DEFAULT_ROUTE),
                    metric_type (ospf, DEFAULT_ROUTE),
                    metric_value (ospf, DEFAULT_ROUTE));
@@ -616,7 +616,7 @@
   zclient_redistribute_default (ZEBRA_REDISTRIBUTE_DEFAULT_ADD, zclient);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[DEFAULT]: Start  Type[%d], Metric[%d]",
+    zlog_debug ("Redistribute[DEFAULT]: Start  Type[%d], Metric[%d]",
                metric_type (ospf, DEFAULT_ROUTE),
                metric_value (ospf, DEFAULT_ROUTE));
 
@@ -644,7 +644,7 @@
   zclient_redistribute_default (ZEBRA_REDISTRIBUTE_DEFAULT_DELETE, zclient);
 
   if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-    zlog_info ("Redistribute[DEFAULT]: Stop");
+    zlog_debug ("Redistribute[DEFAULT]: Stop");
 
   ospf_asbr_status_update (ospf, --ospf->redistribute);
 
@@ -718,7 +718,7 @@
       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.",
+            zlog_debug ("Redistribute[%s]: %s/%d filtered by ditribute-list.",
                        LOOKUP (ospf_redistributed_proto, type),
                        inet_ntoa (p->prefix), p->prefixlen);
           return 0;
@@ -739,7 +739,7 @@
         {
           ei->route_map_set = save_values;
           if (IS_DEBUG_OSPF (zebra, ZEBRA_REDISTRIBUTE))
-            zlog_info ("Redistribute[%s]: %s/%d filtered by route-map.",
+            zlog_debug ("Redistribute[%s]: %s/%d filtered by route-map.",
                        LOOKUP (ospf_redistributed_proto, type),
                        inet_ntoa (p->prefix), p->prefixlen);
           return 0;
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index 34a36ea..931ae49 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -78,7 +78,7 @@
   struct listnode *node;
 
   if (IS_DEBUG_OSPF_EVENT)
-    zlog_info ("Router-ID[OLD:%s]: Update", inet_ntoa (ospf->router_id));
+    zlog_debug ("Router-ID[OLD:%s]: Update", inet_ntoa (ospf->router_id));
 
   router_id_old = ospf->router_id;
 
@@ -90,7 +90,7 @@
   ospf->router_id = router_id;
   
   if (IS_DEBUG_OSPF_EVENT)
-    zlog_info ("Router-ID[NEW:%s]: Update", inet_ntoa (ospf->router_id));
+    zlog_debug ("Router-ID[NEW:%s]: Update", inet_ntoa (ospf->router_id));
 
   if (!IPV4_ADDR_SAME (&router_id_old, &router_id))
     {
@@ -130,7 +130,7 @@
   struct ospf *ospf = THREAD_ARG (thread);
 
   if (IS_DEBUG_OSPF_EVENT)
-    zlog_info ("Router-ID: Update timer fired!");
+    zlog_debug ("Router-ID: Update timer fired!");
 
   ospf->t_router_id_update = NULL;
   ospf_router_id_update (ospf);
@@ -935,7 +935,7 @@
   if (area->external_routing == type)
     {
       if (IS_DEBUG_OSPF_EVENT)
-	zlog_info ("Area[%s]: Types are the same, ignored.",
+	zlog_debug ("Area[%s]: Types are the same, ignored.",
 		   inet_ntoa (area->area_id));
       return;
     }
@@ -943,7 +943,7 @@
   area->external_routing = type;
 
   if (IS_DEBUG_OSPF_EVENT)
-    zlog_info ("Area[%s]: Configured as %s", inet_ntoa (area->area_id),
+    zlog_debug ("Area[%s]: Configured as %s", inet_ntoa (area->area_id),
 	       LOOKUP (ospf_area_type_msg, type));
 
   switch (area->external_routing)
@@ -963,11 +963,11 @@
 	  if (oi->nbr_self != NULL)
 	    {
 	      if (IS_DEBUG_OSPF_EVENT)
-		zlog_info ("setting options on %s accordingly", IF_NAME (oi));
+		zlog_debug ("setting options on %s accordingly", IF_NAME (oi));
 	      UNSET_FLAG (oi->nbr_self->options, OSPF_OPTION_NP);
 	      UNSET_FLAG (oi->nbr_self->options, OSPF_OPTION_E);
 	      if (IS_DEBUG_OSPF_EVENT)
-		zlog_info ("options set on %s: %x",
+		zlog_debug ("options set on %s: %x",
 			   IF_NAME (oi), OPTIONS (oi));
 	    }
       break;
@@ -976,10 +976,12 @@
 	if ((oi = getdata (node)) != NULL)
 	  if (oi->nbr_self != NULL)
 	    {
-	      zlog_info ("setting nssa options on %s accordingly", IF_NAME (oi));
+	      if (IS_DEBUG_OSPF_EVENT)
+	        zlog_debug ("setting nssa options on %s accordingly", IF_NAME (oi));
 	      UNSET_FLAG (oi->nbr_self->options, OSPF_OPTION_E);
 	      SET_FLAG (oi->nbr_self->options, OSPF_OPTION_NP);
-	      zlog_info ("options set on %s: %x", IF_NAME (oi), OPTIONS (oi));
+	      if (IS_DEBUG_OSPF_EVENT)
+	        zlog_debug ("options set on %s: %x", IF_NAME (oi), OPTIONS (oi));
 	    }
       break;
     default:
