diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index f71479e..f326f72 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-08 Hasso Tepper <hasso at quagga.net>
+	
+	* *.[c|h]: Fix compiler warnings: make some strings const, signed ->
+	  unsigned, remove unused variables etc.
+
 2004-10-07  Greg Troxel  <gdt@claude.ir.bbn.com>
 
 	* ospf_apiserver.c (ospf_apiserver_unregister_opaque_type): Don't
diff --git a/ospfd/ospf_dump.c b/ospfd/ospf_dump.c
index 8b4e78b..e34f3f6 100644
--- a/ospfd/ospf_dump.c
+++ b/ospfd/ospf_dump.c
@@ -149,7 +149,7 @@
 
 
 #define OSPF_AREA_STRING_MAXLEN  16
-char *
+const char *
 ospf_area_name_string (struct ospf_area *area)
 {
   static char buf[OSPF_AREA_STRING_MAXLEN] = "";
@@ -166,7 +166,7 @@
 }
 
 #define OSPF_AREA_DESC_STRING_MAXLEN  23
-char *
+const char *
 ospf_area_desc_string (struct ospf_area *area)
 {
   static char buf[OSPF_AREA_DESC_STRING_MAXLEN] = "";
@@ -195,7 +195,7 @@
 }
 
 #define OSPF_IF_STRING_MAXLEN  40
-char *
+const char *
 ospf_if_name_string (struct ospf_interface *oi)
 {
   static char buf[OSPF_IF_STRING_MAXLEN] = "";
@@ -236,7 +236,7 @@
 	    LOOKUP (ospf_ism_state_msg, state));
 }
 
-char *
+const char *
 ospf_timer_dump (struct thread *t, char *buf, size_t size)
 {
   struct timeval now;
@@ -326,7 +326,7 @@
 void
 ospf_lsa_header_dump (struct lsa_header *lsah)
 {
-  char *lsah_type = LOOKUP (ospf_lsa_type_msg, lsah->type);
+  const char *lsah_type = LOOKUP (ospf_lsa_type_msg, lsah->type);
   
   zlog_info ("  LSA Header");
   zlog_info ("    LS age %d", ntohs (lsah->ls_age));
@@ -1484,8 +1484,8 @@
   int write = 0;
   int i, r;
 
-  char *type_str[] = {"hello", "dd", "ls-request", "ls-update", "ls-ack"};
-  char *detail_str[] = {"", " send", " recv", "", " detail",
+  const char *type_str[] = {"hello", "dd", "ls-request", "ls-update", "ls-ack"};
+  const char *detail_str[] = {"", " send", " recv", "", " detail",
 			" send detail", " recv detail", " detail"};
 
   /* debug ospf ism (status|events|timers). */
diff --git a/ospfd/ospf_dump.h b/ospfd/ospf_dump.h
index 29d06c9..5f625ca 100644
--- a/ospfd/ospf_dump.h
+++ b/ospfd/ospf_dump.h
@@ -121,16 +121,16 @@
 extern unsigned long term_debug_ospf_nssa;
 
 /* Message Strings. */
-extern char *ospf_packet_type_str[];
+extern const char *ospf_packet_type_str[];
 extern char *ospf_lsa_type_str[];
 
 /* Prototypes. */
-char *ospf_area_name_string (struct ospf_area *);
-char *ospf_area_desc_string (struct ospf_area *);
-char *ospf_if_name_string (struct ospf_interface *);
+const char *ospf_area_name_string (struct ospf_area *);
+const char *ospf_area_desc_string (struct ospf_area *);
+const char *ospf_if_name_string (struct ospf_interface *);
 void ospf_nbr_state_message (struct ospf_neighbor *, char *, size_t);
 char *ospf_options_dump (u_char);
-char *ospf_timer_dump (struct thread *, char *, size_t);
+const char *ospf_timer_dump (struct thread *, char *, size_t);
 void ospf_ip_header_dump (struct stream *);
 void ospf_packet_dump (struct stream *);
 void ospf_lsa_header_dump (struct lsa_header *);
diff --git a/ospfd/ospf_ism.c b/ospfd/ospf_ism.c
index 7fa8b46..84a5dc5 100644
--- a/ospfd/ospf_ism.c
+++ b/ospfd/ospf_ism.c
@@ -553,7 +553,7 @@
   },
 };  
 
-static char *ospf_ism_event_str[] =
+const static char *ospf_ism_event_str[] =
 {
   "NoEvent",
   "InterfaceUp",
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index 944af64..3ad6ddf 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -902,7 +902,7 @@
       struct ospf_area *area = getdata (node);
       struct ospf_lsa *lsa = area->router_lsa_self;
       struct router_lsa *rl;
-      char *area_str;
+      const char *area_str;
 
       /* Keep Area ID string. */
       area_str = AREA_NAME (area);
diff --git a/ospfd/ospf_main.c b/ospfd/ospf_main.c
index 7e1567c..47873ba 100644
--- a/ospfd/ospf_main.c
+++ b/ospfd/ospf_main.c
@@ -97,7 +97,7 @@
 struct thread_master *master;
 
 /* Process ID saved for use by init system */
-char *pid_file = PATH_OSPFD_PID;
+const char *pid_file = PATH_OSPFD_PID;
 
 /* Help information display. */
 static void
diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c
index 14c75df..dd5ba7b 100644
--- a/ospfd/ospf_nsm.c
+++ b/ospfd/ospf_nsm.c
@@ -640,7 +640,7 @@
   },
 };
 
-static char *ospf_nsm_event_str[] =
+const static char *ospf_nsm_event_str[] =
 {
   "NoEvent",
   "HelloReceived",
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index f1cb91d..357d697 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -52,7 +52,7 @@
 				   struct in_addr);
 
 /* Packet Type String. */
-char *ospf_packet_type_str[] =
+const char *ospf_packet_type_str[] =
 {
   "unknown",
   "Hello",
@@ -347,7 +347,7 @@
 
   /* Get MD5 Authentication key from auth_key list. */
   if (list_isempty (OSPF_IF_PARAM (oi, auth_crypt)))
-    auth_key = "";
+    auth_key = (char *) "";
   else
     {
       ck = getdata (OSPF_IF_PARAM (oi, auth_crypt)->tail);
@@ -1991,12 +1991,11 @@
   struct stream *ibuf;
   unsigned int ifindex = 0;
   struct iovec iov;
-  struct cmsghdr *cmsg;
 #if defined(CMSG_SPACE)
   /* Header and data both require alignment. */
   char buff [CMSG_SPACE(SOPT_SIZE_CMSG_IFINDEX_IPV4())];
 #else
-  char buff [sizeof (*cmsg) + SOPT_SIZE_CMSG_IFINDEX_IPV4()];
+  char buff [sizeof (struct cmsghdr) + SOPT_SIZE_CMSG_IFINDEX_IPV4()];
 #endif
   struct msghdr msgh;
 
diff --git a/ospfd/ospf_route.c b/ospfd/ospf_route.c
index 9280767..15331fd 100644
--- a/ospfd/ospf_route.c
+++ b/ospfd/ospf_route.c
@@ -640,7 +640,7 @@
     zlog_info("ospf_intra_add_stub(): Stop");
 }
 
-char *ospf_path_type_str[] =
+const char *ospf_path_type_str[] =
 {
   "unknown-type",
   "intra-area",
diff --git a/ospfd/ospf_routemap.c b/ospfd/ospf_routemap.c
index 64822d6..52fa901 100644
--- a/ospfd/ospf_routemap.c
+++ b/ospfd/ospf_routemap.c
@@ -98,7 +98,7 @@
 /* Delete rip route map rule. */
 int
 ospf_route_match_delete (struct vty *vty, struct route_map_index *index,
-			 char *command, char *arg)
+			 const char *command, char *arg)
 {
   int ret;
 
@@ -123,7 +123,7 @@
 
 int
 ospf_route_match_add (struct vty *vty, struct route_map_index *index,
-		      char *command, char *arg)
+		      const char *command, char *arg)
 {                                                                              
   int ret;
 
@@ -148,7 +148,7 @@
 
 int
 ospf_route_set_add (struct vty *vty, struct route_map_index *index,
-		    char *command, char *arg)
+		    const char *command, char *arg)
 {
   int ret;
 
@@ -174,7 +174,7 @@
 /* Delete rip route map rule. */
 int
 ospf_route_set_delete (struct vty *vty, struct route_map_index *index,
-		       char *command, char *arg)
+		       const char *command, char *arg)
 {                                              
   int ret;
 
@@ -760,9 +760,11 @@
        "OSPF[6] external type 2 metric\n")
 {
   if (strcmp (argv[0], "1") == 0)
-    return ospf_route_set_add (vty, vty->index, "metric-type", "type-1");
+    return ospf_route_set_add (vty, vty->index, "metric-type",
+			       (char *) "type-1");
   if (strcmp (argv[0], "2") == 0)
-    return ospf_route_set_add (vty, vty->index, "metric-type", "type-2");
+    return ospf_route_set_add (vty, vty->index, "metric-type",
+			       (char *) "type-2");
 
   return ospf_route_set_add (vty, vty->index, "metric-type", argv[0]);
 }
diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c
index 0fd39fa..c7c25f8 100644
--- a/ospfd/ospf_spf.c
+++ b/ospfd/ospf_spf.c
@@ -115,7 +115,7 @@
 }
 
 void
-ospf_vertex_dump(char *msg, struct vertex *v,
+ospf_vertex_dump(const char *msg, struct vertex *v,
 		 int print_nexthops, int print_children)
 {
   if ( ! IS_DEBUG_OSPF_EVENT)
@@ -245,8 +245,7 @@
 int
 ospf_lsa_has_link (struct lsa_header *w, struct lsa_header *v)
 {
-  int i;
-  int length;
+  unsigned int i, length;
   struct router_lsa *rl;
   struct network_lsa *nl;
 
@@ -494,7 +493,6 @@
 	      if (IS_DEBUG_OSPF_EVENT)
 	        {
 		  char buf1[BUFSIZ];
-		  char buf2[BUFSIZ];
 		  zlog_info("ospf_nexthop_calculation(): considering link "
 			    "type %d link_id %s link_data %s",
 			    l->m[0].type,
diff --git a/ospfd/ospf_te.c b/ospfd/ospf_te.c
index 1d44250..a498003 100644
--- a/ospfd/ospf_te.c
+++ b/ospfd/ospf_te.c
@@ -1872,8 +1872,10 @@
 
   /* Show All Interfaces. */
   if (argc == 0)
-    LIST_LOOP (iflist, ifp, node)
-      show_mpls_te_link_sub (vty, ifp);
+    {
+      LIST_LOOP (iflist, ifp, node)
+	show_mpls_te_link_sub (vty, ifp);
+    }
   /* Interface name is specified. */
   else
     {
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index ab73f7b..b74a304 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -49,7 +49,7 @@
 #include "ospfd/ospf_dump.h"
 
 
-static char *ospf_network_type_str[] =
+const static char *ospf_network_type_str[] =
 {
   "Null",
   "POINTOPOINT",
@@ -2098,8 +2098,8 @@
 {
   struct ospf *ospf = vty->index;
   struct in_addr nbr_addr;
-  int priority = OSPF_NEIGHBOR_PRIORITY_DEFAULT;
-  int interval = OSPF_POLL_INTERVAL_DEFAULT;
+  unsigned int priority = OSPF_NEIGHBOR_PRIORITY_DEFAULT;
+  unsigned int interval = OSPF_POLL_INTERVAL_DEFAULT;
 
   VTY_GET_IPV4_ADDRESS ("neighbor address", nbr_addr, argv[0]);
 
@@ -2146,8 +2146,8 @@
 {
   struct ospf *ospf = vty->index;
   struct in_addr nbr_addr;
-  int priority = OSPF_NEIGHBOR_PRIORITY_DEFAULT;
-  int interval = OSPF_POLL_INTERVAL_DEFAULT;
+  unsigned int priority = OSPF_NEIGHBOR_PRIORITY_DEFAULT;
+  unsigned int interval = OSPF_POLL_INTERVAL_DEFAULT;
 
   VTY_GET_IPV4_ADDRESS ("neighbor address", nbr_addr, argv[0]);
 
@@ -2231,7 +2231,7 @@
        "Timer value in seconds\n")
 {
   struct ospf *ospf = vty->index;
-  int interval;
+  unsigned int interval;
   
   VTY_GET_INTEGER_RANGE ("refresh timer", interval, argv[0], 10, 1800);
   interval = (interval / 10) * 10;
@@ -2248,7 +2248,7 @@
        "Timer value in seconds\n")
 {
   struct ospf *ospf = vty->index;
-  int interval;
+  unsigned int interval;
 
   if (argc == 1)
     {
@@ -2325,7 +2325,7 @@
   return CMD_SUCCESS;
 }
 
-char *ospf_abr_type_descr_str[] = 
+const char *ospf_abr_type_descr_str[] = 
 {
   "Unknown",
   "Standard (RFC2328)",
@@ -2334,7 +2334,7 @@
   "Alternative Shortcut"
 };
 
-char *ospf_shortcut_mode_descr_str[] = 
+const char *ospf_shortcut_mode_descr_str[] = 
 {
   "Default",
   "Enabled",
@@ -3132,7 +3132,7 @@
   return 0;
 }
 
-char *show_database_desc[] =
+const char *show_database_desc[] =
 {
   "unknown",
   "Router Link States",
@@ -3153,7 +3153,7 @@
 #define SHOW_OSPF_COMMON_HEADER \
   "Link ID         ADV Router      Age  Seq#       CkSum"
 
-char *show_database_header[] =
+const char *show_database_header[] =
 {
   "",
   "Link ID         ADV Router      Age  Seq#       CkSum  Link count",
@@ -3171,7 +3171,7 @@
 #endif /* HAVE_OPAQUE_LSA */
 };
 
-char *show_lsa_flags[] =
+const char *show_lsa_flags[] =
 {
   "Self-originated",
   "Checked",
@@ -3222,7 +3222,7 @@
   vty_out (vty, "  Length: %d%s", ntohs (lsa->data->length), VTY_NEWLINE);
 }
 
-char *link_type_desc[] =
+const char *link_type_desc[] =
 {
   "(null)",
   "another Router (point-to-point)",
@@ -3231,7 +3231,7 @@
   "a Virtual Link",
 };
 
-char *link_id_desc[] =
+const char *link_id_desc[] =
 {
   "(null)",
   "Neighboring Router ID",
@@ -3240,7 +3240,7 @@
   "Neighboring Router ID",
 };
 
-char *link_data_desc[] =
+const char *link_data_desc[] =
 {
   "(null)",
   "Router Interface address",
@@ -6641,7 +6641,7 @@
 }
 
 
-char *ospf_abr_type_str[] = 
+const char *ospf_abr_type_str[] = 
 {
   "unknown",
   "standard",
@@ -6650,7 +6650,7 @@
   "shortcut"
 };
 
-char *ospf_shortcut_mode_str[] = 
+const char *ospf_shortcut_mode_str[] = 
 {
   "default",
   "enable",
@@ -6670,7 +6670,7 @@
 }
 
 
-char *ospf_int_type_str[] = 
+const char *ospf_int_type_str[] = 
 {
   "unknown",		/* should never be used. */
   "point-to-point",
@@ -6730,7 +6730,7 @@
 	if (OSPF_IF_PARAM_CONFIGURED (params, auth_type) &&
 	    params->auth_type != OSPF_AUTH_NOTSET)
 	  {
-	    char *auth_str;
+	    const char *auth_str;
 	    
 	    /* Translation tables are not that much help here due to syntax
 	       of the simple option */
@@ -7087,8 +7087,8 @@
 }
 
 
-char *distribute_str[] = { "system", "kernel", "connected", "static", "rip",
-			   "ripng", "ospf", "ospf6", "isis", "bgp"};
+const char *distribute_str[] = { "system", "kernel", "connected", "static",
+				"rip", "ripng", "ospf", "ospf6", "isis", "bgp"};
 int
 config_write_ospf_redistribute (struct vty *vty, struct ospf *ospf)
 {
