diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index c280bf2..420d7cf 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -1,3 +1,11 @@
+2004-10-07 Hasso Tepper <hasso at quagga.net>
+
+	* *.[c|h]: Fix warnings: make strings const, signed -> unsigned,
+	  remove or comment out unused variables etc.
+	* isis_lsp.c: Clean lsp_print_detail() a bit, add TE TLV's and
+	  removed old code.
+	* isis_circuit.c: Remove old ip/ipv6 address commands code.
+
 2004-10-03 Hasso Tepper <hasso at quagga.net>
 
 	* isis_zebra.c: Read router id related messages from zebra daemon.
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c
index beba0d9..4725670 100644
--- a/isisd/isis_adjacency.c
+++ b/isisd/isis_adjacency.c
@@ -170,7 +170,7 @@
 
 void
 isis_adj_state_change (struct isis_adjacency *adj, enum isis_adj_state state,
-		       char *reason)
+		       const char *reason)
 {
   int old_state;
   int level = adj->level;
diff --git a/isisd/isis_adjacency.h b/isisd/isis_adjacency.h
index a9b1913..99a8bb2 100644
--- a/isisd/isis_adjacency.h
+++ b/isisd/isis_adjacency.h
@@ -105,7 +105,7 @@
 				     struct isis_circuit *circuit);
 void isis_delete_adj (struct isis_adjacency *adj, struct list *adjdb);
 void isis_adj_state_change (struct isis_adjacency *adj,
-			    enum isis_adj_state state, char *reason);
+			    enum isis_adj_state state, const char *reason);
 void isis_adj_print (struct isis_adjacency *adj);
 int isis_adj_expire (struct thread *thread);
 void isis_adj_print_vty (struct isis_adjacency *adj, struct vty *vty);
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index 3669cf4..2ba7407 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -631,17 +631,10 @@
   int write = 0;
   struct listnode *node;
   struct listnode *node2;
-  struct listnode *node3;
   struct interface *ifp;
   struct isis_area *area;
   struct isis_circuit *c;
-  struct prefix_ipv4 *ip;
   int i;
-#ifdef HAVE_IPV6
-  struct prefix_ipv6 *ipv6;
-#endif /*HAVE_IPV6 */
-
-  char buf[BUFSIZ];
 
   LIST_LOOP (iflist, ifp, node)
   {
@@ -1718,122 +1711,6 @@
   return CMD_SUCCESS;
 }
 
-#if 0
-DEFUN (ip_address,
-       ip_address_cmd,
-       "ip address A.B.C.D/A",
-       "Interface Internet Protocol config commands\n"
-       "Set the IP address of an interface\n" "IP address (e.g. 10.0.0.1/8\n")
-{
-  struct interface *ifp;
-  struct isis_circuit *circuit;
-  struct prefix_ipv4 *ipv4, *ip;
-  struct listnode *node;
-  int ret, found = 1;
-
-  ifp = vty->index;
-  circuit = ifp->info;
-  if (circuit == NULL)
-    {
-      return CMD_WARNING;
-    }
-
-  assert (circuit);
-#ifdef HAVE_IPV6
-  zlog_info ("ip_address_cmd circuit %d", circuit->interface->ifindex);
-#endif /* HAVE_IPV6 */
-
-  ipv4 = prefix_ipv4_new ();
-
-  ret = str2prefix_ipv4 (argv[0], ipv4);
-  if (ret <= 0)
-    {
-      zlog_warn ("ip_address_cmd(): malformed address");
-      vty_out (vty, "%% Malformed address %s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  if (!circuit->ip_addrs)
-    circuit->ip_addrs = list_new ();
-  else
-    {
-      for (node = listhead (circuit->ip_addrs); node; nextnode (node))
-	{
-	  ip = getdata (node);
-	  if (prefix_same ((struct prefix *) ip, (struct prefix *) ipv4))
-	    found = 1;
-	}
-      if (found)
-	{
-	  prefix_ipv4_free (ipv4);
-	  return CMD_SUCCESS;
-	}
-    }
-
-
-  listnode_add (circuit->ip_addrs, ipv4);
-#ifdef EXTREME_DEBUG
-  zlog_info ("added IP address %s to circuit %d", argv[0],
-	     circuit->interface->ifindex);
-#endif /* EXTREME_DEBUG */
-  return CMD_SUCCESS;
-}
-
-DEFUN (no_ip_address,
-       no_ip_address_cmd,
-       "no ip address A.B.C.D/A",
-       NO_STR
-       "Interface Internet Protocol config commands\n"
-       "Set the IP address of an interface\n"
-       "IP address (e.g. 10.0.0.1/8\n")
-{
-  struct interface *ifp;
-  struct isis_circuit *circuit;
-  struct prefix_ipv4 ipv4, *ip = NULL;
-  struct listnode *node;
-  int ret;
-
-  ifp = vty->index;
-  circuit = ifp->info;
-  /* UGLY - will remove l8r */
-  if (circuit == NULL)
-    {
-      return CMD_WARNING;
-    }
-  assert (circuit);
-
-  if (!circuit->ip_addrs || circuit->ip_addrs->count == 0)
-    {
-      vty_out (vty, "Invalid address %s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-  ret = str2prefix_ipv4 (argv[0], &ipv4);
-  if (ret <= 0)
-    {
-      vty_out (vty, "%% Malformed address %s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  for (node = listhead (circuit->ip_addrs); node; nextnode (node))
-    {
-      ip = getdata (node);
-      if (prefix_same ((struct prefix *) ip, (struct prefix *) &ipv4))
-	break;
-    }
-
-  if (ip)
-    {
-      listnode_delete (circuit->ip_addrs, ip);
-    }
-  else
-    {
-      vty_out (vty, "Invalid address %s", VTY_NEWLINE);
-    }
-
-  return CMD_SUCCESS;
-}
-#endif
-
 DEFUN (no_isis_hello,
        no_isis_hello_cmd,
        "no isis hello padding",
@@ -2137,130 +2014,6 @@
 
   return CMD_SUCCESS;
 }
-
-#if 0				/* Guess we don't really need these */
-
-DEFUN (ipv6_address,
-       ipv6_address_cmd,
-       "ipv6 address X:X::X:X/M",
-       "Interface Internet Protocol config commands\n"
-       "Set the IP address of an interface\n"
-       "IPv6 address (e.g. 3ffe:506::1/48)\n")
-{
-  struct interface *ifp;
-  struct isis_circuit *circuit;
-  struct prefix_ipv6 *ipv6, *ip6;
-  struct listnode *node;
-  int ret, found = 1;
-
-  ifp = vty->index;
-  circuit = ifp->info;
-  /* UGLY - will remove l8r */
-  if (circuit == NULL)
-    {
-      return CMD_WARNING;
-    }
-  assert (circuit);
-#ifdef EXTREME_DEBUG
-  zlog_info ("ipv6_address_cmd circuit %d", circuit->idx);
-#endif /* EXTREME_DEBUG */
-
-  if (circuit == NULL)
-    {
-      zlog_warn ("ipv6_address_cmd(): no circuit");
-      return CMD_WARNING;
-    }
-
-
-  ipv6 = prefix_ipv6_new ();
-
-  ret = str2prefix_ipv6 (argv[0], ipv6);
-  if (ret <= 0)
-    {
-      vty_out (vty, "%% Malformed address %s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  if (!circuit->ipv6_addrs)
-    circuit->ipv6_addrs = list_new ();
-  else
-    {
-      for (node = listhead (circuit->ipv6_addrs); node; nextnode (node))
-	{
-	  ip6 = getdata (node);
-	  if (prefix_same ((struct prefix *) ip6, (struct prefix *) ipv6))
-	    found = 1;
-	}
-      if (found)
-	{
-	  prefix_ipv6_free (ipv6);
-	  return CMD_SUCCESS;
-	}
-    }
-
-
-  listnode_add (circuit->ipv6_addrs, ipv6);
-#ifdef EXTREME_DEBUG
-  zlog_info ("added IPv6 address %s to circuit %d", argv[0], circuit->idx);
-#endif /* EXTREME_DEBUG */
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (no_ipv6_address,
-       no_ipv6_address_cmd,
-       "no ipv6 address X:X::X:X/M",
-       NO_STR
-       "Interface Internet Protocol config commands\n"
-       "Set the IP address of an interface\n"
-       "IPv6 address (e.g. 3ffe:506::1/48)\n")
-{
-  struct interface *ifp;
-  struct isis_circuit *circuit;
-  struct prefix_ipv6 ipv6, *ip6 = NULL;
-  struct listnode *node;
-  int ret;
-
-  ifp = vty->index;
-  circuit = ifp->info;
-  /* UGLY - will remove l8r */
-  if (circuit == NULL)
-    {
-      return CMD_WARNING;
-    }
-  assert (circuit);
-
-  if (!circuit->ipv6_addrs || circuit->ipv6_addrs->count == 0)
-    {
-      vty_out (vty, "Invalid address %s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-  ret = str2prefix_ipv6 (argv[0], &ipv6);
-  if (ret <= 0)
-    {
-      vty_out (vty, "%% Malformed address %s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  for (node = listhead (circuit->ipv6_addrs); node; nextnode (node))
-    {
-      ip6 = getdata (node);
-      if (prefix_same ((struct prefix *) ip6, (struct prefix *) &ipv6))
-	break;
-    }
-
-  if (ip6)
-    {
-      listnode_delete (circuit->ipv6_addrs, ip6);
-    }
-  else
-    {
-      vty_out (vty, "Invalid address %s", VTY_NEWLINE);
-    }
-
-  return CMD_SUCCESS;
-}
-#endif /* 0 */
 #endif /* HAVE_IPV6 */
 
 struct cmd_node interface_node = {
@@ -2348,10 +2101,6 @@
 
   install_element (INTERFACE_NODE, &isis_hello_cmd);
   install_element (INTERFACE_NODE, &no_isis_hello_cmd);
-#if 0
-  install_element (INTERFACE_NODE, &ip_address_cmd);
-  install_element (INTERFACE_NODE, &no_ip_address_cmd);
-#endif
   install_element (INTERFACE_NODE, &csnp_interval_cmd);
   install_element (INTERFACE_NODE, &no_csnp_interval_cmd);
   install_element (INTERFACE_NODE, &no_csnp_interval_arg_cmd);
@@ -2365,9 +2114,5 @@
 #ifdef HAVE_IPV6
   install_element (INTERFACE_NODE, &ipv6_router_isis_cmd);
   install_element (INTERFACE_NODE, &no_ipv6_router_isis_cmd);
-#if 0
-  install_element (INTERFACE_NODE, &ipv6_address_cmd);
-  install_element (INTERFACE_NODE, &no_ipv6_address_cmd);
-#endif
 #endif
 }
diff --git a/isisd/isis_csm.c b/isisd/isis_csm.c
index 8f44db1..96728d5 100644
--- a/isisd/isis_csm.c
+++ b/isisd/isis_csm.c
@@ -52,7 +52,7 @@
 
 extern struct isis *isis;
 
-static char *csm_statestr[] = {
+static const char *csm_statestr[] = {
   "C_STATE_NA",
   "C_STATE_INIT",
   "C_STATE_CONF",
@@ -61,7 +61,7 @@
 
 #define STATE2STR(S) csm_statestr[S]
 
-static char *csm_eventstr[] = {
+static const char *csm_eventstr[] = {
   "NO_STATE",
   "ISIS_ENABLE",
   "IF_UP_FROM_Z",
diff --git a/isisd/isis_dr.c b/isisd/isis_dr.c
index c6c9e58..0ee173e 100644
--- a/isisd/isis_dr.c
+++ b/isisd/isis_dr.c
@@ -50,7 +50,7 @@
 extern struct isis *isis;
 extern struct thread_master *master;
 
-char *
+const char *
 isis_disflag2string (int disflag)
 {
 
diff --git a/isisd/isis_dr.h b/isisd/isis_dr.h
index b0386d4..bad6836 100644
--- a/isisd/isis_dr.h
+++ b/isisd/isis_dr.h
@@ -29,7 +29,7 @@
 int isis_dr_elect (struct isis_circuit *circuit, int level);
 int isis_dr_resign (struct isis_circuit *circuit, int level);
 int isis_dr_commence (struct isis_circuit *circuit, int level);
-char *isis_disflag2string (int disflag);
+const char *isis_disflag2string (int disflag);
 
 enum isis_dis_state
 {
diff --git a/isisd/isis_events.c b/isisd/isis_events.c
index 353c29b..1193b26 100644
--- a/isisd/isis_events.c
+++ b/isisd/isis_events.c
@@ -317,7 +317,7 @@
 }
 
 void
-isis_event_auth_failure (char *area_tag, char *error_string, u_char *sysid)
+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));
diff --git a/isisd/isis_events.h b/isisd/isis_events.h
index c4bd8ab..86bf051 100644
--- a/isisd/isis_events.h
+++ b/isisd/isis_events.h
@@ -49,7 +49,7 @@
 #define AUTH_ERROR_TYPE_LSP   3
 #define AUTH_ERROR_TYPE_SNP   2
 #define AUTH_ERROR_TYPE_HELLO 1
-void isis_event_auth_failure (char *area_tag, char *error_string,
+void isis_event_auth_failure (char *area_tag, const char *error_string,
 			      u_char *sysid);
 
 #endif /* _ZEBRA_ISIS_EVENTS_H */
diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c
index 567afa3..b74db6d 100644
--- a/isisd/isis_lsp.c
+++ b/isisd/isis_lsp.c
@@ -669,7 +669,7 @@
 }
 
 /* Convert the lsp attribute bits to attribute string */
-char *
+const char *
 lsp_bits2string (u_char * lsp_bits)
 {
   char *pos = lsp_bits_string;
@@ -717,7 +717,6 @@
 {
   struct isis_lsp *lsp = dnode_get (node);
   struct area_addr *area_addr;
-  char nlpidstr[2];
   int i;
   struct listnode *lnode;
   struct is_neigh *is_neigh;
@@ -732,7 +731,6 @@
   u_char LSPid[255];
   u_char hostname[255];
   u_char buff[BUFSIZ];
-  u_int32_t now, helper;
   u_char ipv4_reach_prefix[20];
   u_char ipv4_reach_mask[20];
   u_char ipv4_address[20];
@@ -745,7 +743,7 @@
     {
       LIST_LOOP (lsp->tlv_data.area_addrs, area_addr, lnode)
       {
-	vty_out (vty, "  Area Address:  %s%s",
+	vty_out (vty, "  Area Address: %s%s",
 		 isonet_print (area_addr->area_addr, area_addr->addr_len),
 		 VTY_NEWLINE);
       }
@@ -760,11 +758,11 @@
 	    {
 	    case NLPID_IP:
 	    case NLPID_IPV6:
-	      vty_out (vty, "  NLPID:         0x%X%s",
+	      vty_out (vty, "  NLPID:        0x%X%s",
 		       lsp->tlv_data.nlpids->nlpids[i], VTY_NEWLINE);
 	      break;
 	    default:
-	      vty_out (vty, "  NLPID:         %s%s", "unknown", VTY_NEWLINE);
+	      vty_out (vty, "  NLPID:        %s%s", "unknown", VTY_NEWLINE);
 	      break;
 	    }
 	}
@@ -788,6 +786,25 @@
       }
     }
 
+  /* TE router id */
+  if (lsp->tlv_data.router_id)
+    {
+      memcpy (ipv4_address, inet_ntoa (lsp->tlv_data.router_id->id),
+	      sizeof (ipv4_address));
+      vty_out (vty, "  Router ID: %s%s", ipv4_address, VTY_NEWLINE);
+    }
+
+  /* for the IS neighbor tlv */
+  if (lsp->tlv_data.is_neighs)
+    {
+      LIST_LOOP (lsp->tlv_data.is_neighs, is_neigh, lnode)
+      {
+	lspid_print (is_neigh->neigh_id, LSPid, dynhost, 0);
+	vty_out (vty, "  Metric: %d IS %s%s",
+		 is_neigh->metrics.metric_default, LSPid, VTY_NEWLINE);
+      }
+    }
+  
   /* for the internal reachable tlv */
   if (lsp->tlv_data.ipv4_int_reachs)
     LIST_LOOP (lsp->tlv_data.ipv4_int_reachs, ipv4_reach, lnode)
@@ -814,17 +831,6 @@
 	       ipv4_reach_mask, VTY_NEWLINE);
     }
 
-  /* for the IS neighbor tlv */
-  if (lsp->tlv_data.is_neighs)
-    {
-      LIST_LOOP (lsp->tlv_data.is_neighs, is_neigh, lnode)
-      {
-	lspid_print (is_neigh->neigh_id, LSPid, dynhost, 0);
-	vty_out (vty, "  Metric: %d IS %s%s",
-		 is_neigh->metrics.metric_default, LSPid, VTY_NEWLINE);
-      }
-    }
-
   /* IPv6 tlv */
 #ifdef HAVE_IPV6
   if (lsp->tlv_data.ipv6_reachs)
@@ -845,145 +851,28 @@
 		 buff, ipv6_reach->prefix_len, VTY_NEWLINE);
     }
 #endif
-
-/* FIXME: Other tlvs such as te or external tlv will be added later */
-#if 0
-  vty_out (vty, "%s  %s %c%s",
-	   VTY_NEWLINE, LSPid, lsp->own_lsp ? '*' : ' ', VTY_NEWLINE);
-
-  vty_out (vty, "    Sequence: 0x%08x Checksum: 0x%04x Lifetime: ",
-	   ntohl (lsp->lsp_header->seq_num),
-	   ntohs (lsp->lsp_header->checksum));
-
-  if (ntohs (lsp->lsp_header->rem_lifetime) == 0)
-    vty_out (vty, " (%2u) ", lsp->age_out);
-  else
-    vty_out (vty, "%5u ", ntohs (lsp->lsp_header->rem_lifetime));
-
-  vty_out (vty, "%s    Attributes:%s",
-	   VTY_NEWLINE, lsp_bits2string (&lsp->lsp_header->lsp_bits));
-
-  /* if this is a self originated LSP then print
-   * the generation time plus when we sent it last
-   * if it is a non self-originated LSP then print the
-   * time when the LSP has been installed
-   */
-
-  if (lsp->own_lsp)
-    {
-
-      now = time (NULL);
-      helper = now - lsp->last_generated;
-      if (!lsp->last_generated)
-	helper = 0;
-
-      vty_out (vty, ", Generated: %s ago", time2string (helper));
-
-      now = time (NULL);
-      helper = now - lsp->last_sent;
-      if (!lsp->last_sent)
-	helper = 0;
-
-      vty_out (vty, ", Last sent: %s ago", time2string (helper));
-    }
-  else
-    {
-      now = time (NULL);
-      helper = now - lsp->installed;
-      if (!lsp->installed)
-	helper = 0;
-
-      vty_out (vty, ", Installed: %s ago", time2string (helper));
-
-    }
-
-  vty_out (vty, "%s", VTY_NEWLINE);
-
-  if (lsp->tlv_data.nlpids)
-    {
-      vty_out (vty, "    Speaks: %s%s", nlpid2string (lsp->tlv_data.nlpids),
-	       VTY_NEWLINE);
-    }
-
-  if (lsp->tlv_data.router_id)
-    {
-      vty_out (vty, "     Router ID: %s%s",
-	       inet_ntoa (lsp->tlv_data.router_id->id), VTY_NEWLINE);
-    }
-
-  if (lsp->tlv_data.is_neighs)
-    LIST_LOOP (lsp->tlv_data.is_neighs, is_neigh, lnode)
-    {
-      lspid_print (is_neigh->neigh_id, LSPid, dynhost, 0);
-      vty_out (vty, "     IS      %s, Metric: %d%s",
-	       LSPid, is_neigh->metrics.metric_default, VTY_NEWLINE);
-    }
-
+  /* TE IS neighbor tlv */
   if (lsp->tlv_data.te_is_neighs)
     LIST_LOOP (lsp->tlv_data.te_is_neighs, te_is_neigh, lnode)
     {
-      /* FIXME: metric display is wrong */
+      /* FIXME: metric display is wrong. */
       lspid_print (te_is_neigh->neigh_id, LSPid, dynhost, 0);
-      vty_out (vty, "     extd-IS %s, Metric: %d%s",
-	       LSPid, te_is_neigh->te_metric[0], VTY_NEWLINE);
+      vty_out (vty, "  Metric: %d extd-IS %s%s",
+	       te_is_neigh->te_metric[0], LSPid, VTY_NEWLINE);
     }
 
-  if (lsp->tlv_data.ipv4_int_reachs)
-    LIST_LOOP (lsp->tlv_data.ipv4_int_reachs, ipv4_reach, lnode)
-    {
-      vty_out (vty, "     int-IP  %s/%d, Metric: %d%s",
-	       inet_ntoa (ipv4_reach->prefix),
-	       ip_masklen (ipv4_reach->mask),
-	       ipv4_reach->metrics.metric_default, VTY_NEWLINE);
-    }
-
-  if (lsp->tlv_data.ipv4_ext_reachs)
-    LIST_LOOP (lsp->tlv_data.ipv4_ext_reachs, ipv4_reach, lnode)
-    {
-      vty_out (vty, "     ext-IP  %s/%d, Metric: %d%s",
-	       inet_ntoa (ipv4_reach->prefix),
-	       ip_masklen (ipv4_reach->mask),
-	       ipv4_reach->metrics.metric_default, VTY_NEWLINE);
-    }
-
+  /* TE IPv4 tlv */
   if (lsp->tlv_data.te_ipv4_reachs)
     LIST_LOOP (lsp->tlv_data.te_ipv4_reachs, te_ipv4_reach, lnode)
     {
-      vty_out (vty, "     extd-IP %s/%d, Metric: %d%s",
+      /* FIXME: There should be better way to output this stuff. */
+      vty_out (vty, "  Metric: %d extrd-IP %s/%d%s",
+	       ntohl (te_ipv4_reach->te_metric),
 	       inet_ntoa (newprefix2inaddr (&te_ipv4_reach->prefix_start,
 					    te_ipv4_reach->control)),
-	       te_ipv4_reach->control & 0x3F,
-	       ntohl (te_ipv4_reach->te_metric), VTY_NEWLINE);
+	       te_ipv4_reach->control & 0x3F, VTY_NEWLINE);
     }
 
-#ifdef HAVE_IPV6
-  if (lsp->tlv_data.ipv6_reachs)
-    LIST_LOOP (lsp->tlv_data.ipv6_reachs, ipv6_reach, lnode)
-    {
-      memcpy (in6.s6_addr, ipv6_reach->prefix, 16);
-      inet_ntop (AF_INET6, &in6, buff, BUFSIZ);
-      if ((ipv6_reach->control_info &&
-	   CTRL_INFO_DISTRIBUTION) == DISTRIBUTION_INTERNAL)
-	vty_out (vty, "     int-IPv6 %s/%d, Metric: %d%s",
-		 buff,
-		 ipv6_reach->prefix_len,
-		 ntohl (ipv6_reach->metric), VTY_NEWLINE);
-      else
-	vty_out (vty, "     ext-IPv6 %s/%d, Metric: %d%s",
-		 buff,
-		 ipv6_reach->prefix_len,
-		 ntohl (ipv6_reach->metric), VTY_NEWLINE);
-
-    }
-#endif
-  if (lsp->tlv_data.hostname)
-    {
-      memset (hostname, 0, sizeof (hostname));
-      memcpy (hostname, lsp->tlv_data.hostname->name,
-	      lsp->tlv_data.hostname->namelen);
-      vty_out (vty, "    Hostname: %s%s", hostname, VTY_NEWLINE);
-    }
-#endif
   return;
 }
 
@@ -1453,8 +1342,6 @@
    */
   if (router_id_zebra.s_addr != 0)
     {
-      u_char value[4];
-
       if (lsp->tlv_data.ipv4_addrs == NULL)
 	lsp->tlv_data.ipv4_addrs = list_new ();
 
diff --git a/isisd/isis_lsp.h b/isisd/isis_lsp.h
index 67242f2..8e45066 100644
--- a/isisd/isis_lsp.h
+++ b/isisd/isis_lsp.h
@@ -118,7 +118,7 @@
 void lsp_inc_seqnum (struct isis_lsp *lsp, u_int32_t seq_num);
 int lsp_print_all (struct vty *vty, dict_t * lspdb, char detail,
 		   char dynhost);
-char *lsp_bits2string (u_char *);
+const char *lsp_bits2string (u_char *);
 
 #ifdef TOPOLOGY_GENERATE
 void generate_topology_lsps (struct isis_area *area);
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index 64905d3..cd94780 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -96,7 +96,7 @@
 struct thread_master *master;
 
 /* Process ID saved for use by init system */
-char *pid_file = PATH_ISISD_PID;
+const char *pid_file = PATH_ISISD_PID;
 
 /* for reload */
 char _cwd[MAXPATHLEN];
diff --git a/isisd/isis_misc.c b/isisd/isis_misc.c
index 53a2a85..300f02c 100644
--- a/isisd/isis_misc.c
+++ b/isisd/isis_misc.c
@@ -64,7 +64,7 @@
 /*
  * This converts the isonet to its printable format
  */
-char *
+const char *
 isonet_print (u_char * from, int len)
 {
   int i = 0;
@@ -335,7 +335,7 @@
 /*
  * Print functions - we print to static vars
  */
-char *
+const char *
 snpa_print (u_char * from)
 {
   int i = 0;
@@ -367,7 +367,7 @@
   return snpa;
 }
 
-char *
+const char *
 sysid_print (u_char * from)
 {
   int i = 0;
@@ -399,7 +399,7 @@
   return sysid;
 }
 
-char *
+const char *
 rawlspid_print (u_char * from)
 {
   char *pos = lspid;
@@ -417,7 +417,7 @@
   return lspid;
 }
 
-char *
+const char *
 time2string (u_int32_t time)
 {
   char *pos = datestring;
diff --git a/isisd/isis_misc.h b/isisd/isis_misc.h
index 330556a..91bd248 100644
--- a/isisd/isis_misc.h
+++ b/isisd/isis_misc.h
@@ -40,11 +40,11 @@
 /*
  * Printing functions
  */
-char *isonet_print (u_char *, int len);
-char *sysid_print (u_char *);
-char *snpa_print (u_char *);
-char *rawlspid_print (u_char *);
-char *time2string (u_int32_t);
+const char *isonet_print (u_char *, int len);
+const char *sysid_print (u_char *);
+const char *snpa_print (u_char *);
+const char *rawlspid_print (u_char *);
+const char *time2string (u_int32_t);
 /* typedef struct nlpids nlpids; */
 char *nlpid2string (struct nlpids *);
 
diff --git a/isisd/isis_pdu.c b/isisd/isis_pdu.c
index 3e5154c..4bc2b54 100644
--- a/isisd/isis_pdu.c
+++ b/isisd/isis_pdu.c
@@ -1270,7 +1270,10 @@
   struct listnode *node, *node2;
   struct tlvs tlvs;
   struct list *lsp_list = NULL;
+  /* TODO: Implement SNP authentication. */
+#if 0
   struct isis_passwd *passwd;
+#endif
 
   if (snp_type == ISIS_SNP_CSNP_FLAG)
     {
diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c
index 1c32f8f..0501543 100644
--- a/isisd/isis_spf.c
+++ b/isisd/isis_spf.c
@@ -174,7 +174,7 @@
   return NULL;			/* Not reached */
 }
 
-char *
+const char *
 vid2string (struct isis_vertex *vertex, u_char * buff)
 {
   switch (vertex->type)
@@ -650,7 +650,7 @@
   if (fragnode == NULL)
     fragnode = listhead (lsp->lspu.frags);
   else
-    fragnode = nextnode (fragnode);
+    nextnode (fragnode);
 
   if (fragnode)
     {
@@ -703,7 +703,7 @@
   if (fragnode == NULL)
     fragnode = listhead (lsp->lspu.frags);
   else
-    fragnode = nextnode (fragnode);
+    nextnode (fragnode);
 
   if (fragnode)
     {
@@ -800,7 +800,7 @@
 	      adj = getdata (anode);
 	      if (!speaks (&adj->nlpids, family))
 		{
-		  anode = nextnode (anode);
+		  nextnode (anode);
 		  continue;
 		}
 	      switch (adj->sys_type)
@@ -834,7 +834,7 @@
 		default:
 		  zlog_warn ("isis_spf_preload_tent unknow adj type");
 		}
-	      anode = nextnode (anode);
+	      nextnode (anode);
 	    }
 	  list_delete (adj_list);
 	  /*
diff --git a/isisd/isis_tlv.c b/isisd/isis_tlv.c
index c859ef0..f167a9f 100644
--- a/isisd/isis_tlv.c
+++ b/isisd/isis_tlv.c
@@ -498,9 +498,7 @@
 	  zlog_info ("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);
-	    }
+	    tlvs->router_id = (struct te_router_id *) (pnt);
 	  pnt += length;
 	  break;
 
@@ -753,7 +751,7 @@
 add_tlv (u_char tag, u_char len, u_char * value, struct stream *stream)
 {
 
-  if (STREAM_SIZE (stream) - stream_get_putp (stream) < len + 2)
+  if (STREAM_SIZE (stream) - stream_get_putp (stream) < (unsigned) len + 2)
     {
       zlog_warn ("No room for TLV of type %d", tag);
       return ISIS_WARNING;
diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c
index f56c5d4..84f79fa 100644
--- a/isisd/isis_zebra.c
+++ b/isisd/isis_zebra.c
@@ -51,7 +51,6 @@
 			     zebra_size_t length)
 {
   struct prefix router_id;
-  char buf[BUFSIZ];
 
   zebra_router_id_update_read (zclient->ibuf,&router_id);
   router_id_zebra = router_id.u.prefix4;
@@ -202,8 +201,10 @@
 {
   struct connected *c;
   struct interface *ifp;
+#ifdef EXTREME_DEBUG
   struct prefix *p;
   u_char buf[BUFSIZ];
+#endif /* EXTREME_DEBUG */
 
   c = zebra_interface_address_read (ZEBRA_INTERFACE_ADDRESS_DELETE,
 				    zclient->ibuf);
