diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index 3290551..93a901b 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-24 Hasso Tepper <hasso at quagga.net>
+
+	* *.c: zlog_* cleanup. Mostly changed level of debug messages to
+	  LOG_DEBUG.
+
 2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* isis_main.c: (main) The 2nd argument to openzlog has been removed.
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c
index 4725670..a6f9cba 100644
--- a/isisd/isis_adjacency.c
+++ b/isisd/isis_adjacency.c
@@ -162,7 +162,7 @@
     }
   else
     {
-      zlog_info ("tried to delete a non-existent adjacency");
+      zlog_warn ("tried to delete a non-existent adjacency");
     }
 
   return;
@@ -183,7 +183,7 @@
 
   if (isis->debugs & DEBUG_ADJ_PACKETS)
     {
-      zlog_info ("ISIS-Adj (%s): Adjacency state change %d->%d: %s",
+      zlog_debug ("ISIS-Adj (%s): Adjacency state change %d->%d: %s",
 		 circuit->area->area_tag,
 		 old_state, state, reason ? reason : "unspecified");
     }
@@ -240,35 +240,35 @@
     return;
   dyn = dynhn_find_by_id (adj->sysid);
   if (dyn)
-    zlog_info ("%s", dyn->name.name);
+    zlog_debug ("%s", dyn->name.name);
 
-  zlog_info ("SystemId %20s SNPA %s, level %d\nHolding Time %d",
-	     adj->sysid ? sysid_print (adj->sysid) : "unknown",
-	     snpa_print (adj->snpa), adj->level, adj->hold_time);
+  zlog_debug ("SystemId %20s SNPA %s, level %d\nHolding Time %d",
+	      adj->sysid ? sysid_print (adj->sysid) : "unknown",
+	      snpa_print (adj->snpa), adj->level, adj->hold_time);
   if (adj->ipv4_addrs && listcount (adj->ipv4_addrs) > 0)
     {
-      zlog_info ("IPv4 Addresses:");
+      zlog_debug ("IPv4 Addresses:");
 
       for (node = listhead (adj->ipv4_addrs); node; nextnode (node))
 	{
 	  ipv4_addr = getdata (node);
-	  zlog_info ("%s", inet_ntoa (*ipv4_addr));
+	  zlog_debug ("%s", inet_ntoa (*ipv4_addr));
 	}
     }
 
 #ifdef HAVE_IPV6
   if (adj->ipv6_addrs && listcount (adj->ipv6_addrs) > 0)
     {
-      zlog_info ("IPv6 Addresses:");
+      zlog_debug ("IPv6 Addresses:");
       for (node = listhead (adj->ipv6_addrs); node; nextnode (node))
 	{
 	  ipv6_addr = getdata (node);
 	  inet_ntop (AF_INET6, ipv6_addr, (char *)ip6, INET6_ADDRSTRLEN);
-	  zlog_info ("%s", ip6);
+	  zlog_debug ("%s", ip6);
 	}
     }
 #endif /* HAVE_IPV6 */
-  zlog_info ("Speaks: %s", nlpid2string (&adj->nlpids));
+  zlog_debug ("Speaks: %s", nlpid2string (&adj->nlpids));
 
   return;
 }
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index 2ba7407..c00e88f 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -246,7 +246,7 @@
 
 #ifdef EXTREME_DEBUG
       prefix2str (connected->address, buf, BUFSIZ);
-      zlog_info ("Added IP address %s to circuit %d", buf,
+      zlog_debug ("Added IP address %s to circuit %d", buf,
 		 circuit->circuit_id);
 #endif /* EXTREME_DEBUG */
     }
@@ -266,7 +266,7 @@
 
 #ifdef EXTREME_DEBUG
       prefix2str (connected->address, buf, BUFSIZ);
-      zlog_info ("Added IPv6 address %s to circuit %d", buf,
+      zlog_debug ("Added IPv6 address %s to circuit %d", buf,
 		 circuit->circuit_id);
 #endif /* EXTREME_DEBUG */
     }
@@ -398,7 +398,7 @@
 	  memcpy (circuit->u.bc.snpa, circuit->interface->hw_addr, ETH_ALEN);
 	}
 #ifdef EXTREME_DEGUG
-      zlog_info ("isis_circuit_if_add: if_id %d, isomtu %d snpa %s",
+      zlog_debug ("isis_circuit_if_add: if_id %d, isomtu %d snpa %s",
 		 circuit->interface->ifindex, ISO_MTU (circuit),
 		 snpa_print (circuit->u.bc.snpa));
 
diff --git a/isisd/isis_csm.c b/isisd/isis_csm.c
index 96728d5..8e57d39 100644
--- a/isisd/isis_csm.c
+++ b/isisd/isis_csm.c
@@ -78,7 +78,7 @@
 
   old_state = circuit ? circuit->state : C_STATE_NA;
 
-  zlog_info ("CSM_EVENT: %s", EVENT2STR (event));
+  zlog_debug ("CSM_EVENT: %s", EVENT2STR (event));
 
   switch (old_state)
     {
@@ -176,8 +176,8 @@
       zlog_warn ("Invalid circuit state %d", old_state);
     }
 
-  zlog_info ("CSM_STATE_CHANGE: %s -> %s ", STATE2STR (old_state),
-	     circuit ? STATE2STR (circuit->state) : STATE2STR (C_STATE_NA));
+  zlog_debug ("CSM_STATE_CHANGE: %s -> %s ", STATE2STR (old_state),
+	      circuit ? STATE2STR (circuit->state) : STATE2STR (C_STATE_NA));
 
   return circuit;
 }
diff --git a/isisd/isis_dr.c b/isisd/isis_dr.c
index 0ee173e..e33e78b 100644
--- a/isisd/isis_dr.c
+++ b/isisd/isis_dr.c
@@ -265,7 +265,7 @@
 {
   u_char id[ISIS_SYS_ID_LEN + 2];
 
-  zlog_info ("isis_dr_resign l%d", level);
+  zlog_debug ("isis_dr_resign l%d", level);
 
   circuit->u.bc.is_dr[level - 1] = 0;
   circuit->u.bc.run_dr_elect[level - 1] = 0;
@@ -314,7 +314,7 @@
 {
   u_char old_dr[ISIS_SYS_ID_LEN + 2];
 
-  zlog_info ("isis_dr_commence l%d", level);
+  zlog_debug ("isis_dr_commence l%d", level);
 
   /* Lets keep a pause in DR election */
   circuit->u.bc.run_dr_elect[level - 1] = 0;
diff --git a/isisd/isis_events.c b/isisd/isis_events.c
index 1193b26..cd30ee4 100644
--- a/isisd/isis_events.c
+++ b/isisd/isis_events.c
@@ -74,7 +74,7 @@
   area->circuit_state_changes++;
 
   if (isis->debugs & DEBUG_EVENTS)
-    zlog_info ("ISIS-Evt (%s) circuit %s", circuit->area->area_tag,
+    zlog_debug ("ISIS-Evt (%s) circuit %s", circuit->area->area_tag,
 	       up ? "up" : "down");
 
   /*
@@ -92,7 +92,7 @@
   struct isis_circuit *circuit;
 
   if (isis->debugs & DEBUG_EVENTS)
-    zlog_info ("ISIS-Evt (%s) system type change %s -> %s", area->area_tag,
+    zlog_debug ("ISIS-Evt (%s) system type change %s -> %s", area->area_tag,
 	       circuit_t2string (area->is_type), circuit_t2string (newtype));
 
   if (area->is_type == newtype)
@@ -209,7 +209,7 @@
 {
 
   if (isis->debugs & DEBUG_EVENTS)
-    zlog_info ("ISIS-Evt (%s) circuit type change %s -> %s",
+    zlog_debug ("ISIS-Evt (%s) circuit type change %s -> %s",
 	       circuit->area->area_tag,
 	       circuit_t2string (circuit->circuit_is_type),
 	       circuit_t2string (newtype));
@@ -286,8 +286,8 @@
   if (!adj || !adj->circuit || !adj->circuit->area)
     return;
 
-  zlog_info ("ISIS-Evt (%s) Adjacency State change",
-	     adj->circuit->area->area_tag);
+  zlog_debug ("ISIS-Evt (%s) Adjacency State change",
+	      adj->circuit->area->area_tag);
 
   /* LSP generation again */
   lsp_regenerate_schedule (adj->circuit->area);
@@ -308,7 +308,7 @@
   if (!circuit || !circuit->area)
     return 0;
 
-  zlog_info ("ISIS-Evt (%s) DIS status change", circuit->area->area_tag);
+  zlog_debug ("ISIS-Evt (%s) DIS status change", circuit->area->area_tag);
 
   /* LSP generation again */
   lsp_regenerate_schedule (circuit->area);
@@ -319,8 +319,8 @@
 void
 isis_event_auth_failure (char *area_tag, const char *error_string, u_char *sysid)
 {
-  zlog_info ("ISIS-Evt (%s) Authentication failure %s from %s",
-	     area_tag, error_string, sysid_print (sysid));
+  zlog_debug ("ISIS-Evt (%s) Authentication failure %s from %s",
+	      area_tag, error_string, sysid_print (sysid));
 
   return;
 }
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index b4169a5..2f9728b 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -88,11 +88,11 @@
 #ifdef EXTREME_DEBUG
   dnode_t *dn;
 
-  zlog_warn ("searching db");
+  zlog_debug ("searching db");
   for (dn = dict_first (lspdb); dn; dn = dict_next (lspdb, dn))
     {
-      zlog_warn ("%s\t%pX", rawlspid_print ((char *) dnode_getkey (dn)),
-		 dnode_get (dn));
+      zlog_debug ("%s\t%pX", rawlspid_print ((char *) dnode_getkey (dn)),
+		  dnode_get (dn));
     }
 #endif /* EXTREME DEBUG */
 
@@ -252,17 +252,17 @@
     {
       if (isis->debugs & DEBUG_SNP_PACKETS)
 	{
-	  zlog_info ("ISIS-Snp (%s): LSP %s seq 0x%08x, cksum 0x%04x,"
-		     " lifetime %us",
-		     areatag,
-		     rawlspid_print (lsp->lsp_header->lsp_id),
-		     ntohl (lsp->lsp_header->seq_num),
-		     ntohs (lsp->lsp_header->checksum),
-		     ntohs (lsp->lsp_header->rem_lifetime));
-	  zlog_info ("ISIS-Snp (%s):         is equal to ours seq 0x%08x,"
-		     " cksum 0x%04x, lifetime %us",
-		     areatag,
-		     ntohl (seq_num), ntohs (checksum), ntohs (rem_lifetime));
+	  zlog_debug ("ISIS-Snp (%s): LSP %s seq 0x%08x, cksum 0x%04x,"
+		      " lifetime %us",
+		      areatag,
+		      rawlspid_print (lsp->lsp_header->lsp_id),
+		      ntohl (lsp->lsp_header->seq_num),
+		      ntohs (lsp->lsp_header->checksum),
+		      ntohs (lsp->lsp_header->rem_lifetime));
+	  zlog_debug ("ISIS-Snp (%s):         is equal to ours seq 0x%08x,"
+		      " cksum 0x%04x, lifetime %us",
+		      areatag,
+		      ntohl (seq_num), ntohs (checksum), ntohs (rem_lifetime));
 	}
       return LSP_EQUAL;
     }
@@ -271,31 +271,31 @@
     {
       if (isis->debugs & DEBUG_SNP_PACKETS)
 	{
-	  zlog_info ("ISIS-Snp (%s): LSP %s seq 0x%08x, cksum 0x%04x,"
-		     " lifetime %us",
-		     areatag,
-		     rawlspid_print (lsp->lsp_header->lsp_id),
-		     ntohl (seq_num), ntohs (checksum), ntohs (rem_lifetime));
-	  zlog_info ("ISIS-Snp (%s):       is newer than ours seq 0x%08x, "
-		     "cksum 0x%04x, lifetime %us",
-		     areatag,
-		     ntohl (lsp->lsp_header->seq_num),
-		     ntohs (lsp->lsp_header->checksum),
-		     ntohs (lsp->lsp_header->rem_lifetime));
+	  zlog_debug ("ISIS-Snp (%s): LSP %s seq 0x%08x, cksum 0x%04x,"
+		      " lifetime %us",
+		      areatag,
+		      rawlspid_print (lsp->lsp_header->lsp_id),
+		      ntohl (seq_num), ntohs (checksum), ntohs (rem_lifetime));
+	  zlog_debug ("ISIS-Snp (%s):       is newer than ours seq 0x%08x, "
+		      "cksum 0x%04x, lifetime %us",
+		      areatag,
+		      ntohl (lsp->lsp_header->seq_num),
+		      ntohs (lsp->lsp_header->checksum),
+		      ntohs (lsp->lsp_header->rem_lifetime));
 	}
       return LSP_NEWER;
     }
   if (isis->debugs & DEBUG_SNP_PACKETS)
     {
-      zlog_info
+      zlog_debug
 	("ISIS-Snp (%s): LSP %s seq 0x%08x, cksum 0x%04x, lifetime %us",
 	 areatag, rawlspid_print (lsp->lsp_header->lsp_id), ntohl (seq_num),
 	 ntohs (checksum), ntohs (rem_lifetime));
-      zlog_info ("ISIS-Snp (%s):       is older than ours seq 0x%08x,"
-		 " cksum 0x%04x, lifetime %us", areatag,
-		 ntohl (lsp->lsp_header->seq_num),
-		 ntohs (lsp->lsp_header->checksum),
-		 ntohs (lsp->lsp_header->rem_lifetime));
+      zlog_debug ("ISIS-Snp (%s):       is older than ours seq 0x%08x,"
+		  " cksum 0x%04x, lifetime %us", areatag,
+		  ntohl (lsp->lsp_header->seq_num),
+		  ntohs (lsp->lsp_header->checksum),
+		  ntohs (lsp->lsp_header->rem_lifetime));
     }
 
   return LSP_OLDER;
@@ -513,10 +513,10 @@
 
   /* #ifdef EXTREME_DEBUG */
   /* logging */
-  zlog_info ("New LSP with ID %s-%02x-%02x seqnum %08x", sysid_print (lsp_id),
-	     LSP_PSEUDO_ID (lsp->lsp_header->lsp_id),
-	     LSP_FRAGMENT (lsp->lsp_header->lsp_id),
-	     ntohl (lsp->lsp_header->seq_num));
+  zlog_debug ("New LSP with ID %s-%02x-%02x seqnum %08x", sysid_print (lsp_id),
+	      LSP_PSEUDO_ID (lsp->lsp_header->lsp_id),
+	      LSP_FRAGMENT (lsp->lsp_header->lsp_id),
+	      ntohl (lsp->lsp_header->seq_num));
   /* #endif  EXTREME DEBUG */
 
   return lsp;
@@ -1621,7 +1621,7 @@
   if (isis->debugs & DEBUG_ADJ_PACKETS)
     {
       /* FIXME: is this place right? fix missing info */
-      zlog_info ("ISIS-Upd (%s): Building L%d LSP", area->area_tag, level);
+      zlog_debug ("ISIS-Upd (%s): Building L%d LSP", area->area_tag, level);
     }
 
   return ISIS_OK;
@@ -1682,14 +1682,14 @@
 
   if (isis->debugs & DEBUG_UPDATE_PACKETS)
     {
-      zlog_info ("ISIS-Upd (%s): refreshing our L%d LSP %s, "
-		 "seq 0x%08x, cksum 0x%04x lifetime %us",
-		 area->area_tag,
-		 level,
-		 rawlspid_print (lsp->lsp_header->lsp_id),
-		 ntohl (lsp->lsp_header->seq_num),
-		 ntohs (lsp->lsp_header->checksum),
-		 ntohs (lsp->lsp_header->rem_lifetime));
+      zlog_debug ("ISIS-Upd (%s): refreshing our L%d LSP %s, "
+		  "seq 0x%08x, cksum 0x%04x lifetime %us",
+		  area->area_tag,
+		  level,
+		  rawlspid_print (lsp->lsp_header->lsp_id),
+		  ntohl (lsp->lsp_header->seq_num),
+		  ntohs (lsp->lsp_header->checksum),
+		  ntohs (lsp->lsp_header->rem_lifetime));
     }
 
   lsp->last_generated = time (NULL);
@@ -1983,9 +1983,9 @@
 
   if (isis->debugs & DEBUG_UPDATE_PACKETS)
     {
-      zlog_info ("ISIS-Upd (%s): refreshing pseudo LSP L%d %s",
-		 circuit->area->area_tag, level,
-		 rawlspid_print (lsp->lsp_header->lsp_id));
+      zlog_debug ("ISIS-Upd (%s): refreshing pseudo LSP L%d %s",
+		  circuit->area->area_tag, level,
+		  rawlspid_print (lsp->lsp_header->lsp_id));
     }
 
   lsp->last_generated = time (NULL);
@@ -2154,11 +2154,11 @@
 	      if (lsp->age_out == 0)
 		{
 
-		  zlog_info ("ISIS-Upd (%s): L%u LSP %s seq 0x%08x aged out",
-			     area->area_tag,
-			     lsp->level,
-			     rawlspid_print (lsp->lsp_header->lsp_id),
-			     ntohl (lsp->lsp_header->seq_num));
+		  zlog_debug ("ISIS-Upd (%s): L%u LSP %s seq 0x%08x aged out",
+			      area->area_tag,
+			      lsp->level,
+			      rawlspid_print (lsp->lsp_header->lsp_id),
+			      ntohl (lsp->lsp_header->seq_num));
 
 		  lsp_destroy (lsp);
 		  dict_delete (area->lspdb[level], dnode);
@@ -2234,7 +2234,7 @@
   /*
    * We need to create the LSP to be purged 
    */
-  zlog_info ("LSP PURGE NON EXIST");
+  zlog_debug ("LSP PURGE NON EXIST");
   lsp = XMALLOC (MTYPE_ISIS_LSP, sizeof (struct isis_lsp));
   memset (lsp, 0, sizeof (struct isis_lsp));
   /*FIXME: BUG BUG BUG! the lsp doesn't exist here! */
@@ -2287,8 +2287,8 @@
   ISIS_FLAGS_SET_ALL (lsp->SRMflags);
   if (isis->debugs & DEBUG_UPDATE_PACKETS)
     {
-      zlog_info ("ISIS-Upd (): refreshing Topology L1 %s",
-		 rawlspid_print (lsp->lsp_header->lsp_id));
+      zlog_debug ("ISIS-Upd (): refreshing Topology L1 %s",
+		  rawlspid_print (lsp->lsp_header->lsp_id));
     }
 
   /* time to calculate our checksum */
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index 027e47b..a2f028b 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -137,7 +137,7 @@
 void
 reload ()
 {
-  zlog_info ("Reload");
+  zlog_debug ("Reload");
   /* FIXME: Clean up func call here */
   vty_finish ();
   execve (_progpath, _argv, _envp);
@@ -156,7 +156,7 @@
 void
 sighup (void)
 {
-  zlog_info ("SIGHUP received");
+  zlog_debug ("SIGHUP received");
   reload ();
 
   return;
@@ -179,7 +179,7 @@
 void
 sigusr1 (void)
 {
-  zlog_info ("SIGUSR1 received");
+  zlog_debug ("SIGUSR1 received");
   zlog_rotate (NULL);
 }
 
@@ -326,7 +326,7 @@
   /* Print banner. */
   zlog_notice ("Quagga-ISISd %s starting: vty@%d", QUAGGA_VERSION, vty_port);
 #ifdef HAVE_IPV6
-  zlog_info ("IPv6 enabled");
+  zlog_debug ("IPv6 enabled");
 #endif
   /* Start finite state machine. */
   while (thread_fetch (master, &thread))
diff --git a/isisd/isis_network.c b/isisd/isis_network.c
index a1dc582..ed732cc 100644
--- a/isisd/isis_network.c
+++ b/isisd/isis_network.c
@@ -121,11 +121,11 @@
       mreq.mr_type = PACKET_MR_ALLMULTI;
     }
 #ifdef EXTREME_DEBUG
-  zlog_info ("isis_multicast_join(): fd=%d, reg_to=%d, if_num=%d, "
-	     "address = %02x:%02x:%02x:%02x:%02x:%02x",
-	     fd, registerto, if_num, mreq.mr_address[0], mreq.mr_address[1],
-	     mreq.mr_address[2], mreq.mr_address[3], mreq.mr_address[4],
-	     mreq.mr_address[5]);
+  zlog_debug ("isis_multicast_join(): fd=%d, reg_to=%d, if_num=%d, "
+	      "address = %02x:%02x:%02x:%02x:%02x:%02x",
+	      fd, registerto, if_num, mreq.mr_address[0], mreq.mr_address[1],
+	      mreq.mr_address[2], mreq.mr_address[3], mreq.mr_address[4],
+	      mreq.mr_address[5]);
 #endif /* EXTREME_DEBUG */
   if (setsockopt (fd, SOL_PACKET, PACKET_ADD_MEMBERSHIP, &mreq,
 		  sizeof (struct packet_mreq)))
@@ -226,7 +226,7 @@
       return ISIS_WARNING;
     }
 
-  zlog_info ("Opened BPF device %s", bpfdev);
+  zlog_debug ("Opened BPF device %s", bpfdev);
 
   memcpy (ifr.ifr_name, circuit->interface->name, sizeof (ifr.ifr_name));
   if (ioctl (fd, BIOCSETIF, (caddr_t) & ifr) < 0)
@@ -247,7 +247,7 @@
   if (readbuff == NULL)
     readbuff = malloc (blen);
 
-  zlog_info ("BPF buffer len = %u", blen);
+  zlog_debug ("BPF buffer len = %u", blen);
 
   /*  BPF(4): reads return immediately upon packet reception.
    *  Otherwise, a read will block until either the kernel
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index 4bc2b54..bac903a 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -327,11 +327,11 @@
 
   if (isis->debugs & DEBUG_ADJ_PACKETS)
     {
-      zlog_info ("ISIS-Adj (%s): Rcvd P2P IIH from (%s), cir type %s,"
-		 " cir id %02d, length %d",
-		 circuit->area->area_tag, circuit->interface->name,
-		 circuit_t2string (circuit->circuit_is_type),
-		 circuit->circuit_id, ntohs (hdr->pdu_len));
+      zlog_debug ("ISIS-Adj (%s): Rcvd P2P IIH from (%s), cir type %s,"
+		  " cir id %02d, length %d",
+		  circuit->area->area_tag, circuit->interface->name,
+		  circuit_t2string (circuit->circuit_is_type),
+		  circuit->circuit_id, ntohs (hdr->pdu_len));
     }
 
   adj = circuit->u.p2p.neighbor;
@@ -672,8 +672,8 @@
 
   if (circuit->ext_domain)
     {
-      zlog_info ("level %d LAN Hello received over circuit with "
-		 "externalDomain = true", level);
+      zlog_debug ("level %d LAN Hello received over circuit with "
+		  "externalDomain = true", level);
       return ISIS_WARNING;
     }
 
@@ -681,8 +681,8 @@
     {
       if (isis->debugs & DEBUG_ADJ_PACKETS)
 	{
-	  zlog_info ("ISIS-Adj (%s): Interface level mismatch, %s",
-		     circuit->area->area_tag, circuit->interface->name);
+	  zlog_debug ("ISIS-Adj (%s): Interface level mismatch, %s",
+		      circuit->area->area_tag, circuit->interface->name);
 	}
       return ISIS_WARNING;
     }
@@ -693,8 +693,8 @@
     {
       if (isis->debugs & DEBUG_ADJ_PACKETS)
 	{
-	  zlog_info ("ISIS-Adj (%s): is type mismatch",
-		     circuit->area->area_tag);
+	  zlog_debug ("ISIS-Adj (%s): is type mismatch",
+		      circuit->area->area_tag);
 	}
       return ISIS_WARNING;
     }
@@ -766,9 +766,9 @@
     {
       if (isis->debugs & DEBUG_ADJ_PACKETS)
 	{
-	  zlog_info ("ISIS-Adj (%s): Area mismatch, level %d IIH on %s",
-		     circuit->area->area_tag, level,
-		     circuit->interface->name);
+	  zlog_debug ("ISIS-Adj (%s): Area mismatch, level %d IIH on %s",
+		      circuit->area->area_tag, level,
+		      circuit->interface->name);
 	}
       retval = ISIS_OK;
       goto out;
@@ -779,8 +779,8 @@
    */
   if (!memcmp (circuit->u.bc.snpa, ssnpa, ETH_ALEN))
     {
-      zlog_info ("ISIS-Adj (%s): it's own IIH PDU - discarded",
-		 circuit->area->area_tag);
+      zlog_debug ("ISIS-Adj (%s): it's own IIH PDU - discarded",
+		  circuit->area->area_tag);
 
       retval = ISIS_OK;
       goto out;
@@ -792,7 +792,7 @@
   if (!(found & TLVFLAG_IPV4_ADDR)
       || !ip_match (circuit->ip_addrs, tlvs.ipv4_addrs))
     {
-      zlog_info
+      zlog_debug
 	("ISIS-Adj: No usable IP interface addresses in LAN IIH from %s\n",
 	 circuit->interface->name);
       retval = ISIS_WARNING;
@@ -898,12 +898,12 @@
   if (isis->debugs & DEBUG_ADJ_PACKETS)
     {
       /* FIXME: is this place right? fix missing info */
-      zlog_info ("ISIS-Adj (%s): Rcvd L%d LAN IIH from %s on %s, cirType %s, "
-		 "cirID %u, length %ld",
-		 circuit->area->area_tag,
-		 level, snpa_print (ssnpa), circuit->interface->name,
-		 circuit_t2string (circuit->circuit_is_type),
-		 circuit->circuit_id, stream_get_endp (circuit->rcv_stream));
+      zlog_debug ("ISIS-Adj (%s): Rcvd L%d LAN IIH from %s on %s, cirType %s, "
+		  "cirID %u, length %ld",
+		  circuit->area->area_tag,
+		  level, snpa_print (ssnpa), circuit->interface->name,
+		  circuit_t2string (circuit->circuit_is_type),
+		  circuit->circuit_id, stream_get_endp (circuit->rcv_stream));
     }
 
   free_tlvs (&tlvs);
@@ -939,15 +939,15 @@
 
   if (isis->debugs & DEBUG_UPDATE_PACKETS)
     {
-      zlog_info ("ISIS-Upd (%s): Rcvd L%d LSP %s, seq 0x%08x, cksum 0x%04x, "
-		 "lifetime %us, len %lu, on %s",
-		 circuit->area->area_tag,
-		 level,
-		 rawlspid_print (hdr->lsp_id),
-		 ntohl (hdr->seq_num),
-		 ntohs (hdr->checksum),
-		 ntohs (hdr->rem_lifetime),
-		 circuit->rcv_stream->endp, circuit->interface->name);
+      zlog_debug ("ISIS-Upd (%s): Rcvd L%d LSP %s, seq 0x%08x, cksum 0x%04x, "
+		  "lifetime %us, len %lu, on %s",
+		  circuit->area->area_tag,
+		  level,
+		  rawlspid_print (hdr->lsp_id),
+		  ntohl (hdr->seq_num),
+		  ntohs (hdr->checksum),
+		  ntohs (hdr->rem_lifetime),
+		  circuit->rcv_stream->endp, circuit->interface->name);
     }
 
   assert (ntohs (hdr->pdu_len) > ISIS_LSP_HDR_LEN);
@@ -957,9 +957,9 @@
   if (iso_csum_verify (STREAM_PNT (circuit->rcv_stream) + 4,
 		       ntohs (hdr->pdu_len) - 12, &hdr->checksum))
     {
-      zlog_info ("ISIS-Upd (%s): LSP %s invalid LSP checksum 0x%04x",
-		 circuit->area->area_tag,
-		 rawlspid_print (hdr->lsp_id), ntohs (hdr->checksum));
+      zlog_debug ("ISIS-Upd (%s): LSP %s invalid LSP checksum 0x%04x",
+		  circuit->area->area_tag,
+		  rawlspid_print (hdr->lsp_id), ntohs (hdr->checksum));
 
       return ISIS_WARNING;
     }
@@ -967,7 +967,7 @@
   /* 7.3.15.1 a) 1 - external domain circuit will discard lsps */
   if (circuit->ext_domain)
     {
-      zlog_info
+      zlog_debug
 	("ISIS-Upd (%s): LSP %s received at level %d over circuit with "
 	 "externalDomain = true", circuit->area->area_tag,
 	 rawlspid_print (hdr->lsp_id), level);
@@ -978,11 +978,11 @@
   /* 7.3.15.1 a) 2,3 - manualL2OnlyMode not implemented */
   if (!accept_level (level, circuit->circuit_is_type))
     {
-      zlog_info ("ISIS-Upd (%s): LSP %s received at level %d over circuit of"
-		 " type %s",
-		 circuit->area->area_tag,
-		 rawlspid_print (hdr->lsp_id),
-		 level, circuit_t2string (circuit->circuit_is_type));
+      zlog_debug ("ISIS-Upd (%s): LSP %s received at level %d over circuit of"
+		  " type %s",
+		  circuit->area->area_tag,
+		  rawlspid_print (hdr->lsp_id),
+		  level, circuit_t2string (circuit->circuit_is_type));
 
       return ISIS_WARNING;
     }
@@ -1025,13 +1025,13 @@
       adj = isis_adj_lookup_snpa (ssnpa, circuit->u.bc.adjdb[level - 1]);
       if (!adj)
 	{
-	  zlog_info ("(%s): DS ======= LSP %s, seq 0x%08x, cksum 0x%04x, "
-		     "lifetime %us on %s",
-		     circuit->area->area_tag,
-		     rawlspid_print (hdr->lsp_id),
-		     ntohl (hdr->seq_num),
-		     ntohs (hdr->checksum),
-		     ntohs (hdr->rem_lifetime), circuit->interface->name);
+	  zlog_debug ("(%s): DS ======= LSP %s, seq 0x%08x, cksum 0x%04x, "
+		      "lifetime %us on %s",
+		      circuit->area->area_tag,
+		      rawlspid_print (hdr->lsp_id),
+		      ntohl (hdr->seq_num),
+		      ntohs (hdr->checksum),
+		      ntohs (hdr->rem_lifetime), circuit->interface->name);
 	  return ISIS_WARNING;	/* Silently discard */
 	}
     }
@@ -1115,11 +1115,11 @@
 		      && circuit->u.bc.is_dr[level - 1] == 1))
 		{
 		  lsp->lsp_header->seq_num = htonl (ntohl (hdr->seq_num) + 1);
-		  zlog_info ("LSP LEN: %d", ntohs (lsp->lsp_header->pdu_len));
+		  zlog_debug ("LSP LEN: %d", ntohs (lsp->lsp_header->pdu_len));
 		  iso_csum_create (STREAM_DATA (lsp->pdu) + 12,
 				   ntohs (lsp->lsp_header->pdu_len) - 12, 12);
 		  ISIS_FLAGS_SET_ALL (lsp->SRMflags);
-		  zlog_info
+		  zlog_debug
 		    ("ISIS-Upd (%s): (1) re-originating LSP %s new seq 0x%08x",
 		     circuit->area->area_tag, rawlspid_print (hdr->lsp_id),
 		     ntohl (lsp->lsp_header->seq_num));
@@ -1162,7 +1162,7 @@
 			   ntohs (lsp->lsp_header->pdu_len) - 12, 12);
 
 	  ISIS_FLAGS_SET_ALL (lsp->SRMflags);
-	  zlog_info
+	  zlog_debug
 	    ("ISIS-Upd (%s): (2) re-originating LSP %s new seq 0x%08x",
 	     circuit->area->area_tag, rawlspid_print (hdr->lsp_id),
 	     ntohl (lsp->lsp_header->seq_num));
@@ -1183,15 +1183,15 @@
 	  if (lsp)
 	    {
 #ifdef EXTREME_DEBUG
-	      zlog_info ("level %d number is - %ld", level,
-			 circuit->area->lspdb[level - 1]->dict_nodecount);
+	      zlog_debug ("level %d number is - %ld", level,
+			  circuit->area->lspdb[level - 1]->dict_nodecount);
 #endif /* EXTREME DEBUG */
 	      lsp_search_and_destroy (hdr->lsp_id,
 				      circuit->area->lspdb[level - 1]);
 	      /* exists, so we overwrite */
 #ifdef EXTREME_DEBUG
-	      zlog_info ("level %d number is - %ld", level,
-			 circuit->area->lspdb[level - 1]->dict_nodecount);
+	      zlog_debug ("level %d number is - %ld", level,
+			  circuit->area->lspdb[level - 1]->dict_nodecount);
 #endif /* EXTREME DEBUG */
 	    }
 	  /*
@@ -1204,7 +1204,7 @@
 	      lsp0 = lsp_search (lspid, circuit->area->lspdb[level - 1]);
 	      if (!lsp0)
 		{
-		  zlog_info ("Got lsp frag, while zero lsp not database");
+		  zlog_debug ("Got lsp frag, while zero lsp not database");
 		  return ISIS_OK;
 		}
 	    }
@@ -1307,10 +1307,10 @@
   if (circuit->ext_domain)
     {
 
-      zlog_info ("ISIS-Snp (%s): Rcvd L%d %cSNP on %s, "
-		 "skipping: circuit externalDomain = true",
-		 circuit->area->area_tag,
-		 level, typechar, circuit->interface->name);
+      zlog_debug ("ISIS-Snp (%s): Rcvd L%d %cSNP on %s, "
+		  "skipping: circuit externalDomain = true",
+		  circuit->area->area_tag,
+		  level, typechar, circuit->interface->name);
 
       return ISIS_OK;
     }
@@ -1319,13 +1319,13 @@
   if (!accept_level (level, circuit->circuit_is_type))
     {
 
-      zlog_info ("ISIS-Snp (%s): Rcvd L%d %cSNP on %s, "
-		 "skipping: circuit type %s does not match level %d",
-		 circuit->area->area_tag,
-		 level,
-		 typechar,
-		 circuit->interface->name,
-		 circuit_t2string (circuit->circuit_is_type), level);
+      zlog_debug ("ISIS-Snp (%s): Rcvd L%d %cSNP on %s, "
+		  "skipping: circuit type %s does not match level %d",
+		  circuit->area->area_tag,
+		  level,
+		  typechar,
+		  circuit->interface->name,
+		  circuit_t2string (circuit->circuit_is_type), level);
 
       return ISIS_OK;
     }
@@ -1337,11 +1337,11 @@
       if (!circuit->u.bc.is_dr[level - 1])
 	{
 
-	  zlog_info ("ISIS-Snp (%s): Rcvd L%d %cSNP from %s on %s, "
-		     "skipping: we are not the DIS",
-		     circuit->area->area_tag,
-		     level,
-		     typechar, snpa_print (ssnpa), circuit->interface->name);
+	  zlog_debug ("ISIS-Snp (%s): Rcvd L%d %cSNP from %s on %s, "
+		      "skipping: we are not the DIS",
+		      circuit->area->area_tag,
+		      level,
+		      typechar, snpa_print (ssnpa), circuit->interface->name);
 
 	  return ISIS_OK;
 	}
@@ -1423,21 +1423,21 @@
   /* debug isis snp-packets */
   if (isis->debugs & DEBUG_SNP_PACKETS)
     {
-      zlog_info ("ISIS-Snp (%s): Rcvd L%d %cSNP from %s on %s",
-		 circuit->area->area_tag,
-		 level,
-		 typechar, snpa_print (ssnpa), circuit->interface->name);
+      zlog_debug ("ISIS-Snp (%s): Rcvd L%d %cSNP from %s on %s",
+		  circuit->area->area_tag,
+		  level,
+		  typechar, snpa_print (ssnpa), circuit->interface->name);
       if (tlvs.lsp_entries)
 	{
 	  LIST_LOOP (tlvs.lsp_entries, entry, node)
 	  {
-	    zlog_info ("ISIS-Snp (%s):         %cSNP entry %s, seq 0x%08x,"
-		       " cksum 0x%04x, lifetime %us",
-		       circuit->area->area_tag,
-		       typechar,
-		       rawlspid_print (entry->lsp_id),
-		       ntohl (entry->seq_num),
-		       ntohs (entry->checksum), ntohs (entry->rem_lifetime));
+	    zlog_debug ("ISIS-Snp (%s):         %cSNP entry %s, seq 0x%08x,"
+			" cksum 0x%04x, lifetime %us",
+			circuit->area->area_tag,
+			typechar,
+			rawlspid_print (entry->lsp_id),
+			ntohl (entry->seq_num),
+			ntohs (entry->checksum), ntohs (entry->rem_lifetime));
 	  }
 	}
     }
@@ -1675,7 +1675,7 @@
 	  /* FIXME */
 	  break;
 	case ISH_PDU:
-	  zlog_info ("AN ISH PDU!!");
+	  zlog_debug ("AN ISH PDU!!");
 	  retval = process_is_hello (circuit);
 	  break;
 	default:
@@ -2030,15 +2030,15 @@
     {
       if (circuit->circ_type == CIRCUIT_T_BROADCAST)
 	{
-	  zlog_info ("ISIS-Adj (%s): Sent L%d LAN IIH on %s, length %ld",
-		     circuit->area->area_tag, level, circuit->interface->name,
-		     STREAM_SIZE (circuit->snd_stream));
+	  zlog_debug ("ISIS-Adj (%s): Sent L%d LAN IIH on %s, length %ld",
+		      circuit->area->area_tag, level, circuit->interface->name,
+		      STREAM_SIZE (circuit->snd_stream));
 	}
       else
 	{
-	  zlog_info ("ISIS-Adj (%s): Sent P2P IIH on %s, length %ld",
-		     circuit->area->area_tag, circuit->interface->name,
-		     STREAM_SIZE (circuit->snd_stream));
+	  zlog_debug ("ISIS-Adj (%s): Sent P2P IIH on %s, length %ld",
+		      circuit->area->area_tag, circuit->interface->name,
+		      STREAM_SIZE (circuit->snd_stream));
 	}
     }
 
@@ -2203,18 +2203,18 @@
 
       if (isis->debugs & DEBUG_SNP_PACKETS)
 	{
-	  zlog_info ("ISIS-Snp (%s): Sent L%d CSNP on %s, length %ld",
-		     circuit->area->area_tag, level, circuit->interface->name,
-		     STREAM_SIZE (circuit->snd_stream));
+	  zlog_debug ("ISIS-Snp (%s): Sent L%d CSNP on %s, length %ld",
+		      circuit->area->area_tag, level, circuit->interface->name,
+		      STREAM_SIZE (circuit->snd_stream));
 	  LIST_LOOP (list, lsp, node)
 	  {
-	    zlog_info ("ISIS-Snp (%s):         CSNP entry %s, seq 0x%08x,"
-		       " cksum 0x%04x, lifetime %us",
-		       circuit->area->area_tag,
-		       rawlspid_print (lsp->lsp_header->lsp_id),
-		       ntohl (lsp->lsp_header->seq_num),
-		       ntohs (lsp->lsp_header->checksum),
-		       ntohs (lsp->lsp_header->rem_lifetime));
+	    zlog_debug ("ISIS-Snp (%s):         CSNP entry %s, seq 0x%08x,"
+			" cksum 0x%04x, lifetime %us",
+			circuit->area->area_tag,
+			rawlspid_print (lsp->lsp_header->lsp_id),
+			ntohl (lsp->lsp_header->seq_num),
+			ntohs (lsp->lsp_header->checksum),
+			ntohs (lsp->lsp_header->rem_lifetime));
 	  }
 	}
 
@@ -2318,13 +2318,13 @@
     {
       LIST_LOOP (lsps, lsp, node)
       {
-	zlog_info ("ISIS-Snp (%s):         PSNP entry %s, seq 0x%08x,"
-		   " cksum 0x%04x, lifetime %us",
-		   circuit->area->area_tag,
-		   rawlspid_print (lsp->lsp_header->lsp_id),
-		   ntohl (lsp->lsp_header->seq_num),
-		   ntohs (lsp->lsp_header->checksum),
-		   ntohs (lsp->lsp_header->rem_lifetime));
+	zlog_debug ("ISIS-Snp (%s):         PSNP entry %s, seq 0x%08x,"
+		    " cksum 0x%04x, lifetime %us",
+		    circuit->area->area_tag,
+		    rawlspid_print (lsp->lsp_header->lsp_id),
+		    ntohl (lsp->lsp_header->seq_num),
+		    ntohs (lsp->lsp_header->checksum),
+		    ntohs (lsp->lsp_header->rem_lifetime));
       }
     }
 
@@ -2368,10 +2368,10 @@
 
 
 	      if (isis->debugs & DEBUG_SNP_PACKETS)
-		zlog_info ("ISIS-Snp (%s): Sent L%d PSNP on %s, length %ld",
-			   circuit->area->area_tag, level,
-			   circuit->interface->name,
-			   STREAM_SIZE (circuit->snd_stream));
+		zlog_debug ("ISIS-Snp (%s): Sent L%d PSNP on %s, length %ld",
+			    circuit->area->area_tag, level,
+			    circuit->interface->name,
+			    STREAM_SIZE (circuit->snd_stream));
 
 	      retval = build_psnp (level, circuit, list);
 	      if (retval == ISIS_OK)
@@ -2492,7 +2492,7 @@
 
 	  if (isis->debugs & DEBUG_UPDATE_PACKETS)
 	    {
-	      zlog_info
+	      zlog_debug
 		("ISIS-Upd (%s): Sent L%d LSP %s, seq 0x%08x, cksum 0x%04x,"
 		 " lifetime %us on %s", circuit->area->area_tag, lsp->level,
 		 rawlspid_print (lsp->lsp_header->lsp_id),
@@ -2533,7 +2533,7 @@
 	    }
 	  else
 	    {
-	      zlog_info ("sending of level %d link state failed", lsp->level);
+	      zlog_debug ("sending of level %d link state failed", lsp->level);
 	    }
 	}
       else
diff --git a/isisd/isis_route.c b/isisd/isis_route.c
index c6151f9..346b075 100644
--- a/isisd/isis_route.c
+++ b/isisd/isis_route.c
@@ -124,7 +124,7 @@
 
   inet_ntop (AF_INET, &nh->ip, (char *) buf, BUFSIZ);
 
-  zlog_info ("      %s %u", buf, nh->ifindex);
+  zlog_debug ("      %s %u", buf, nh->ifindex);
 }
 
 void
@@ -220,7 +220,7 @@
 
   inet_ntop (AF_INET6, &nh6->ip6, (char *) buf, BUFSIZ);
 
-  zlog_info ("      %s %u", buf, nh6->ifindex);
+  zlog_debug ("      %s %u", buf, nh6->ifindex);
 }
 
 void
@@ -506,20 +506,20 @@
   if (!rinfo_old)
     {
       if (isis->debugs & DEBUG_RTE_EVENTS)
-	zlog_info ("ISIS-Rte (%s) route created: %s", area->area_tag, buff);
+	zlog_debug ("ISIS-Rte (%s) route created: %s", area->area_tag, buff);
       SET_FLAG (rinfo_new->flag, ISIS_ROUTE_FLAG_ACTIVE);
       route_node->info = rinfo_new;
       return rinfo_new;
     }
 
   if (isis->debugs & DEBUG_RTE_EVENTS)
-    zlog_info ("ISIS-Rte (%s) route already exists: %s", area->area_tag,
+    zlog_debug ("ISIS-Rte (%s) route already exists: %s", area->area_tag,
 	       buff);
 
   if (isis_route_info_same (rinfo_new, rinfo_old, family))
     {
       if (isis->debugs & DEBUG_RTE_EVENTS)
-	zlog_info ("ISIS-Rte (%s) route unchanged: %s", area->area_tag, buff);
+	zlog_debug ("ISIS-Rte (%s) route unchanged: %s", area->area_tag, buff);
       isis_route_info_delete (rinfo_new);
       route_info = rinfo_old;
     }
@@ -527,12 +527,12 @@
     {
       /* merge the nexthop lists */
       if (isis->debugs & DEBUG_RTE_EVENTS)
-	zlog_info ("ISIS-Rte (%s) route changed (same attribs): %s",
+	zlog_debug ("ISIS-Rte (%s) route changed (same attribs): %s",
 		   area->area_tag, buff);
 #ifdef EXTREME_DEBUG
-      zlog_info ("Old nexthops");
+      zlog_debug ("Old nexthops");
       nexthops6_print (rinfo_old->nexthops6);
-      zlog_info ("New nexthops");
+      zlog_debug ("New nexthops");
       nexthops6_print (rinfo_new->nexthops6);
 #endif /* EXTREME_DEBUG */
       isis_route_info_merge (rinfo_new, rinfo_old, family);
@@ -544,16 +544,16 @@
       if (isis_route_info_prefer_new (rinfo_new, rinfo_old))
 	{
 	  if (isis->debugs & DEBUG_RTE_EVENTS)
-	    zlog_info ("ISIS-Rte (%s) route changed: %s", area->area_tag,
-		       buff);
+	    zlog_debug ("ISIS-Rte (%s) route changed: %s", area->area_tag,
+			buff);
 	  isis_route_info_delete (rinfo_old);
 	  route_info = rinfo_new;
 	}
       else
 	{
 	  if (isis->debugs & DEBUG_RTE_EVENTS)
-	    zlog_info ("ISIS-Rte (%s) route rejected: %s", area->area_tag,
-		       buff);
+	    zlog_debug ("ISIS-Rte (%s) route rejected: %s", area->area_tag,
+			buff);
 	  isis_route_info_delete (rinfo_new);
 	  route_info = rinfo_old;
 	}
@@ -582,7 +582,7 @@
   if (rinfo == NULL)
     {
       if (isis->debugs & DEBUG_RTE_EVENTS)
-	zlog_info ("ISIS-Rte: tried to delete non-existant route %s", buff);
+	zlog_debug ("ISIS-Rte: tried to delete non-existant route %s", buff);
       return;
     }
 
@@ -590,7 +590,7 @@
     {
       UNSET_FLAG (rinfo->flag, ISIS_ROUTE_FLAG_ACTIVE);
       if (isis->debugs & DEBUG_RTE_EVENTS)
-	zlog_info ("ISIS-Rte: route delete  %s", buff);
+	zlog_debug ("ISIS-Rte: route delete  %s", buff);
       isis_zebra_route_update (prefix, rinfo);
     }
   isis_route_info_delete (rinfo);
@@ -624,11 +624,11 @@
       if (isis->debugs & DEBUG_RTE_EVENTS)
 	{
 	  prefix2str (&rode->p, (char *) buff, BUFSIZ);
-	  zlog_info ("ISIS-Rte (%s): route validate: %s %s %s",
-		     area->area_tag,
-		     (CHECK_FLAG (rinfo->flag, ISIS_ROUTE_FLAG_ZEBRA_SYNC) ?
+	  zlog_debug ("ISIS-Rte (%s): route validate: %s %s %s",
+		      area->area_tag,
+		      (CHECK_FLAG (rinfo->flag, ISIS_ROUTE_FLAG_ZEBRA_SYNC) ?
 		      "sync'ed" : "nosync"),
-		     (CHECK_FLAG (rinfo->flag, ISIS_ROUTE_FLAG_ACTIVE) ?
+		      (CHECK_FLAG (rinfo->flag, ISIS_ROUTE_FLAG_ACTIVE) ?
 		      "active" : "inactive"), buff);
 	}
 
diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c
index 0501543..fc5b05a 100644
--- a/isisd/isis_spf.c
+++ b/isisd/isis_spf.c
@@ -65,7 +65,7 @@
   struct isis_adjacency *adj, *adj2;
   struct listnode *node, *node2;
 
-  zlog_info ("Union adjlist!");
+  zlog_debug ("Union adjlist!");
   for (node = listhead (source); node; nextnode (node))
     {
       adj = getdata (node);
@@ -339,9 +339,9 @@
   listnode_add (spftree->paths, vertex);
 
 #ifdef EXTREME_DEBUG
-  zlog_info ("ISIS-Spf: added this IS  %s %s depth %d dist %d to PATHS",
-	     vtype2string (vertex->type), vid2string (vertex, buff),
-	     vertex->depth, vertex->d_N);
+  zlog_debug ("ISIS-Spf: added this IS  %s %s depth %d dist %d to PATHS",
+	      vtype2string (vertex->type), vid2string (vertex, buff),
+	      vertex->depth, vertex->d_N);
 #endif /* EXTREME_DEBUG */
 
   return;
@@ -410,9 +410,9 @@
   if (adj)
     listnode_add (vertex->Adj_N, adj);
 #ifdef EXTREME_DEBUG
-  zlog_info ("ISIS-Spf: add to TENT  %s %s depth %d dist %d",
-	     vtype2string (vertex->type), vid2string (vertex, buff),
-	     vertex->depth, vertex->d_N);
+  zlog_debug ("ISIS-Spf: add to TENT  %s %s depth %d dist %d",
+	      vtype2string (vertex->type), vid2string (vertex, buff),
+	      vertex->depth, vertex->d_N);
 #endif /* EXTREME_DEBUG */
   listnode_add (spftree->tents, vertex);
   if (list_isempty (spftree->tents))
@@ -504,8 +504,8 @@
   if (vertex)
     {
 #ifdef EXTREME_DEBUG
-      zlog_info ("ISIS-Spf: process_N  %s %s dist %d already found from PATH",
-		 vtype2string (vtype), vid2string (vertex, buff), dist);
+      zlog_debug ("ISIS-Spf: process_N  %s %s dist %d already found from PATH",
+		  vtype2string (vtype), vid2string (vertex, buff), dist);
 #endif /* EXTREME_DEBUG */
       assert (dist >= vertex->d_N);
       return;
@@ -517,8 +517,8 @@
     {
       /*        1) */
 #ifdef EXTREME_DEBUG
-      zlog_info ("ISIS-Spf: process_N  %s %s dist %d",
-		 vtype2string (vtype), vid2string (vertex, buff), dist);
+      zlog_debug ("ISIS-Spf: process_N  %s %s dist %d",
+		  vtype2string (vtype), vid2string (vertex, buff), dist);
 #endif /* EXTREME_DEBUG */
       if (vertex->d_N == dist)
 	{
@@ -916,9 +916,9 @@
   listnode_add (spftree->paths, vertex);
 
 #ifdef EXTREME_DEBUG
-  zlog_info ("ISIS-Spf: added  %s %s depth %d dist %d to PATHS",
-	     vtype2string (vertex->type), vid2string (vertex, buff),
-	     vertex->depth, vertex->d_N);
+  zlog_debug ("ISIS-Spf: added  %s %s depth %d dist %d to PATHS",
+	      vtype2string (vertex->type), vid2string (vertex, buff),
+	      vertex->depth, vertex->d_N);
 #endif /* EXTREME_DEBUG */
   if (vertex->type > VTYPE_ES)
     {
@@ -926,7 +926,7 @@
 	isis_route_create ((struct prefix *) &vertex->N.prefix,
 			   vertex->d_N, vertex->depth, vertex->Adj_N, area);
       else if (isis->debugs & DEBUG_SPF_EVENTS)
-	zlog_info ("ISIS-Spf: no adjacencies do not install route");
+	zlog_debug ("ISIS-Spf: no adjacencies do not install route");
     }
 
   return;
@@ -1045,7 +1045,7 @@
     }
 
   if (isis->debugs & DEBUG_SPF_EVENTS)
-    zlog_info ("ISIS-Spf (%s) L1 SPF needed, periodic SPF", area->area_tag);
+    zlog_debug ("ISIS-Spf (%s) L1 SPF needed, periodic SPF", area->area_tag);
 
   if (area->ip_circuits)
     retval = isis_run_spf (area, 1, AF_INET);
@@ -1075,7 +1075,7 @@
     }
 
   if (isis->debugs & DEBUG_SPF_EVENTS)
-    zlog_info ("ISIS-Spf (%s) L2 SPF needed, periodic SPF", area->area_tag);
+    zlog_debug ("ISIS-Spf (%s) L2 SPF needed, periodic SPF", area->area_tag);
 
   if (area->ip_circuits)
     retval = isis_run_spf (area, 2, AF_INET);
@@ -1158,7 +1158,7 @@
     }
 
   if (isis->debugs & DEBUG_SPF_EVENTS)
-    zlog_info ("ISIS-Spf (%s) L1 SPF needed, periodic SPF", area->area_tag);
+    zlog_debug ("ISIS-Spf (%s) L1 SPF needed, periodic SPF", area->area_tag);
 
   if (area->ipv6_circuits)
     retval = isis_run_spf (area, 1, AF_INET6);
@@ -1188,7 +1188,7 @@
     }
 
   if (isis->debugs & DEBUG_SPF_EVENTS)
-    zlog_info ("ISIS-Spf (%s) L2 SPF needed, periodic SPF", area->area_tag);
+    zlog_debug ("ISIS-Spf (%s) L2 SPF needed, periodic SPF", area->area_tag);
 
   if (area->ipv6_circuits)
     retval = isis_run_spf (area, 2, AF_INET6);
diff --git a/isisd/isis_tlv.c b/isisd/isis_tlv.c
index f167a9f..d2e9f51 100644
--- a/isisd/isis_tlv.c
+++ b/isisd/isis_tlv.c
@@ -172,7 +172,7 @@
 	   */
 	  *found |= TLVFLAG_AREA_ADDRS;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("TLV Area Adresses len %d", length);
+	  zlog_debug ("TLV Area Adresses len %d", length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_AREA_ADDRS)
 	    {
@@ -195,8 +195,8 @@
 	case IS_NEIGHBOURS:
 	  *found |= TLVFLAG_IS_NEIGHS;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): IS Neighbours length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): IS Neighbours length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (TLVFLAG_IS_NEIGHS & *expected)
 	    {
@@ -248,7 +248,7 @@
 	   */
 	  *found |= TLVFLAG_TE_IS_NEIGHS;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): Extended IS Neighbours length %d",
+	  zlog_debug ("ISIS-TLV (%s): Extended IS Neighbours length %d",
 		     areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (TLVFLAG_TE_IS_NEIGHS & *expected)
@@ -290,7 +290,7 @@
 	   * :                                                               :
 	   */
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): ES Neighbours length %d",
+	  zlog_debug ("ISIS-TLV (%s): ES Neighbours length %d",
 		     areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  *found |= TLVFLAG_ES_NEIGHS;
@@ -325,8 +325,8 @@
 	   */
 	  *found |= TLVFLAG_LAN_NEIGHS;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): LAN Neigbours length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): LAN Neigbours length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (TLVFLAG_LAN_NEIGHS & *expected)
 	    {
@@ -348,7 +348,7 @@
 
 	case PADDING:
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("TLV padding %d", length);
+	  zlog_debug ("TLV padding %d", length);
 #endif /* EXTREME_TLV_DEBUG */
 	  pnt += length;
 	  break;
@@ -365,7 +365,7 @@
 	   * +-------+-------+-------+-------+-------+-------+-------+-------+
 	   */
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("LSP Entries length %d", areatag, length);
+	  zlog_debug ("LSP Entries length %d", areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  *found |= TLVFLAG_LSP_ENTRIES;
 	  if (TLVFLAG_LSP_ENTRIES & *expected)
@@ -394,7 +394,7 @@
 	   */
 	  *found |= TLVFLAG_CHECKSUM;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): Checksum length %d", areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): Checksum length %d", areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_CHECKSUM)
 	    {
@@ -411,8 +411,8 @@
 	   */
 	  *found |= TLVFLAG_NLPID;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): Protocols Supported length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): Protocols Supported length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_NLPID)
 	    {
@@ -429,8 +429,8 @@
 	   */
 	  *found |= TLVFLAG_IPV4_ADDR;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): IPv4 Address length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): IPv4 Address length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_IPV4_ADDR)
 	    {
@@ -438,8 +438,8 @@
 		{
 		  ipv4_addr = (struct in_addr *) pnt;
 #ifdef EXTREME_TLV_DEBUG
-		  zlog_info ("ISIS-TLV (%s) : IP ADDR %s, pnt %p", areatag,
-			     inet_ntoa (*ipv4_addr), pnt);
+		  zlog_debug ("ISIS-TLV (%s) : IP ADDR %s, pnt %p", areatag,
+			      inet_ntoa (*ipv4_addr), pnt);
 #endif /* EXTREME_TLV_DEBUG */
 		  if (!tlvs->ipv4_addrs)
 		    tlvs->ipv4_addrs = list_new ();
@@ -457,8 +457,8 @@
 	case AUTH_INFO:
 	  *found |= TLVFLAG_AUTH_INFO;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): IS-IS Authentication Information",
-		     areatag);
+	  zlog_debug ("ISIS-TLV (%s): IS-IS Authentication Information",
+		      areatag);
 #endif
 	  if (*expected & TLVFLAG_AUTH_INFO)
 	    {
@@ -477,8 +477,8 @@
 	case DYNAMIC_HOSTNAME:
 	  *found |= TLVFLAG_DYN_HOSTNAME;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): Dynamic Hostname length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): Dynamic Hostname length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_DYN_HOSTNAME)
 	    {
@@ -495,7 +495,7 @@
 	   */
 	  *found |= TLVFLAG_TE_ROUTER_ID;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): TE Router ID %d", areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): TE Router ID %d", areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_TE_ROUTER_ID)
 	    tlvs->router_id = (struct te_router_id *) (pnt);
@@ -520,8 +520,8 @@
 	   */
 	  *found |= TLVFLAG_IPV4_INT_REACHABILITY;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): IPv4 internal Reachability length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): IPv4 internal Reachability length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_IPV4_INT_REACHABILITY)
 	    {
@@ -559,8 +559,8 @@
 	   */
 	  *found |= TLVFLAG_IPV4_EXT_REACHABILITY;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): IPv4 external Reachability length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): IPv4 external Reachability length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_IPV4_EXT_REACHABILITY)
 	    {
@@ -594,8 +594,8 @@
 	   */
 	  *found |= TLVFLAG_TE_IPV4_REACHABILITY;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): IPv4 extended Reachability length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): IPv4 extended Reachability length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_TE_IPV4_REACHABILITY)
 	    {
@@ -628,8 +628,8 @@
 	   */
 	  *found |= TLVFLAG_IPV6_ADDR;
 #ifdef EXTREME_TLV_DEBUG
-	  zlog_info ("ISIS-TLV (%s): IPv6 Address length %d",
-		     areatag, length);
+	  zlog_debug ("ISIS-TLV (%s): IPv6 Address length %d",
+		      areatag, length);
 #endif /* EXTREME_TLV_DEBUG */
 	  if (*expected & TLVFLAG_IPV6_ADDR)
 	    {
@@ -762,7 +762,7 @@
   stream_put (stream, value, (int) len);	/* VALUE */
 
 #ifdef EXTREME_DEBUG
-  zlog_info ("Added TLV %d len %d", tag, len);
+  zlog_debug ("Added TLV %d len %d", tag, len);
 #endif /* EXTREME DEBUG */
   return ISIS_OK;
 }
diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c
index 84f79fa..c7d0533 100644
--- a/isisd/isis_zebra.c
+++ b/isisd/isis_zebra.c
@@ -67,8 +67,8 @@
   ifp = zebra_interface_add_read (zclient->ibuf);
 
 
-  zlog_info ("Zebra I/F add: %s index %d flags %ld metric %d mtu %d",
-	     ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+  zlog_debug ("Zebra I/F add: %s index %d flags %ld metric %d mtu %d",
+	      ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
   if (if_is_up (ifp))
     isis_csm_state_change (IF_UP_FROM_Z, circuit_scan_by_ifp (ifp), ifp);
@@ -92,8 +92,8 @@
     zlog_warn ("Zebra: got delete of %s, but interface is still up",
 	       ifp->name);
 
-  zlog_info ("Zebra I/F delete: %s index %d flags %ld metric %d mtu %d",
-	     ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
+  zlog_debug ("Zebra I/F delete: %s index %d flags %ld metric %d mtu %d",
+	      ifp->name, ifp->ifindex, ifp->flags, ifp->metric, ifp->mtu);
 
   if_delete (ifp);
 
@@ -184,10 +184,10 @@
   prefix2str (p, buf, BUFSIZ);
 #ifdef EXTREME_DEBUG
   if (p->family == AF_INET)
-    zlog_info ("connected IP address %s", buf);
+    zlog_debug ("connected IP address %s", buf);
 #ifdef HAVE_IPV6
   if (p->family == AF_INET6)
-    zlog_info ("connected IPv6 address %s", buf);
+    zlog_debug ("connected IPv6 address %s", buf);
 #endif /* HAVE_IPV6 */
 #endif /* EXTREME_DEBUG */
   isis_circuit_add_addr (circuit_scan_by_ifp (c->ifp), c);
@@ -219,10 +219,10 @@
   prefix2str (p, buf, BUFSIZ);
 
   if (p->family == AF_INET)
-    zlog_info ("disconnected IP address %s", buf);
+    zlog_debug ("disconnected IP address %s", buf);
 #ifdef HAVE_IPV6
   if (p->family == AF_INET6)
-    zlog_info ("disconnected IPv6 address %s", buf);
+    zlog_debug ("disconnected IPv6 address %s", buf);
 #endif /* HAVE_IPV6 */
 #endif /* EXTREME_DEBUG */
 
@@ -561,7 +561,7 @@
 
   if (command == ZEBRA_IPV4_ROUTE_ADD)
     {
-      zlog_info ("IPv4 Route add from Z");
+      zlog_debug ("IPv4 Route add from Z");
     }
 
   return 0;
diff --git a/isisd/isisd.c b/isisd/isisd.c
index a74dce6..f920453 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -173,7 +173,7 @@
   area->area_tag = strdup (area_tag);
   listnode_add (isis->area_list, area);
 
-  zlog_info ("new IS-IS area instance %s", area->area_tag);
+  zlog_debug ("new IS-IS area instance %s", area->area_tag);
 
   vty->node = ISIS_NODE;
   vty->index = area;
@@ -248,7 +248,7 @@
   addr->addr_len = dotformat2buff (buff, net_title);
   memcpy (addr->area_addr, buff, addr->addr_len);
 #ifdef EXTREME_DEBUG
-  zlog_info ("added area address %s for area %s (address length %d)",
+  zlog_debug ("added area address %s for area %s (address length %d)",
 	     net_title, area->area_tag, addr->addr_len);
 #endif /* EXTREME_DEBUG */
   if (addr->addr_len < 8 || addr->addr_len > 20)
@@ -266,7 +266,7 @@
        */
       memcpy (isis->sysid, GETSYSID (addr, ISIS_SYS_ID_LEN), ISIS_SYS_ID_LEN);
       isis->sysid_set = 1;
-      zlog_info ("Router has SystemID %s", sysid_print (isis->sysid));
+      zlog_debug ("Router has SystemID %s", sysid_print (isis->sysid));
     }
   else
     {
