diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog
index e7ef97e..a37c4ac 100644
--- a/ospf6d/ChangeLog
+++ b/ospf6d/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-25  Hasso Tepper  <hasso at estpak.ee>
+
+	* ospf6_asbr.c, ospf6_lsa.c, ospf6_proto.c, ospf6_proto.h: Fix
+	compiler warnings.
+
 2004-09-23 Hasso Tepper <hasso at quagga.net>
 
 	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index a3728f4..3105081 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -383,7 +383,7 @@
 }
 
 void
-ospf6_asbr_routemap_update ()
+ospf6_asbr_routemap_update (char *mapname)
 {
   int type;
 
@@ -460,7 +460,7 @@
   if (ospf6->rmap[type].name)
     {
       if (ospf6->rmap[type].map == NULL)
-        ospf6_asbr_routemap_update ();
+        ospf6_asbr_routemap_update (NULL);
       if (ospf6->rmap[type].map == NULL)
         {
           zlog_warn ("route-map \"%s\" not found, suppress redistributing",
diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c
index 6cc6f4d..da73279 100644
--- a/ospf6d/ospf6_lsa.c
+++ b/ospf6d/ospf6_lsa.c
@@ -51,8 +51,8 @@
   u_char *start, *end, *current;
   char byte[4];
 
-  start = (char *) lsa->header + sizeof (struct ospf6_lsa_header);
-  end = (char *) lsa->header + ntohs (lsa->header->length);
+  start = (u_char *) lsa->header + sizeof (struct ospf6_lsa_header);
+  end = (u_char *) lsa->header + ntohs (lsa->header->length);
 
   vty_out (vty, "        Unknown contents:%s", VNL);
   for (current = start; current < end; current ++)
@@ -366,8 +366,8 @@
   u_char *start, *end, *current;
   char byte[4];
 
-  start = (char *) lsa->header;
-  end = (char *) lsa->header + ntohs (lsa->header->length);
+  start = (u_char *) lsa->header;
+  end = (u_char *) lsa->header + ntohs (lsa->header->length);
 
   vty_out (vty, "%s", VNL);
   vty_out (vty, "%s:%s", lsa->name, VNL);
@@ -670,7 +670,7 @@
 
   lsa_header->checksum = 0;
   length = ntohs (lsa_header->length) - 2;
-  sp = (char *) &lsa_header->type;
+  sp = (u_char *) &lsa_header->type;
 
   for (ep = sp + length; sp < ep; sp = q)
     {
diff --git a/ospf6d/ospf6_network.c b/ospf6d/ospf6_network.c
index d5bfdd5..de0c3f3 100644
--- a/ospf6d/ospf6_network.c
+++ b/ospf6d/ospf6_network.c
@@ -24,6 +24,7 @@
 #include "log.h"
 #include "memory.h"
 #include "sockunion.h"
+#include "sockopt.h"
 #include "privs.h"
 
 #include "ospf6_proto.h"
diff --git a/ospf6d/ospf6_proto.c b/ospf6d/ospf6_proto.c
index 5b47cf8..584382a 100644
--- a/ospf6d/ospf6_proto.c
+++ b/ospf6d/ospf6_proto.c
@@ -70,7 +70,7 @@
 }
 
 void
-ospf6_options_printbuf (char *options, char *buf, int size)
+ospf6_options_printbuf (u_char *options, char *buf, int size)
 {
   char *dc, *r, *n, *mc, *e, *v6;
   dc = (OSPF6_OPT_ISSET (options, OSPF6_OPT_DC) ? "DC" : "--");
diff --git a/ospf6d/ospf6_proto.h b/ospf6d/ospf6_proto.h
index 2b6ae54..9fe821d 100644
--- a/ospf6d/ospf6_proto.h
+++ b/ospf6d/ospf6_proto.h
@@ -116,7 +116,7 @@
 void ospf6_prefix_options_printbuf (u_int8_t prefix_options,
                                     char *buf, int size);
 void ospf6_capability_printbuf (char capability, char *buf, int size);
-void ospf6_options_printbuf (char *options, char *buf, int size);
+void ospf6_options_printbuf (u_char *options, char *buf, int size);
 
 #endif /* OSPF6_PROTO_H */
 
