diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog
index 92dbf6f..112aa19 100644
--- a/ripngd/ChangeLog
+++ b/ripngd/ChangeLog
@@ -1,3 +1,9 @@
+2004-09-26 Hasso Tepper <hasso at quagga.net>
+
+	* ripingd.c: Access list hook argument function must have struct
+	  access_list * argument. Solution taken from ripd.
+	* ripngd.c, ripnf_nexthop.c: Fix compiler warnings.
+
 2004-09-23 Hasso Tepper <hasso at quagga.net>
 
 	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
diff --git a/ripngd/ripng_nexthop.c b/ripngd/ripng_nexthop.c
index 04b13c5..e946dc9 100644
--- a/ripngd/ripng_nexthop.c
+++ b/ripngd/ripng_nexthop.c
@@ -161,7 +161,7 @@
 
       /* A nexthop entry should be at least followed by 1 RTE */
       if (num == (rtemax-1)) {
-	ret = ripng_send_packet (STREAM_DATA (s), stream_get_endp (s),
+	ret = ripng_send_packet ((caddr_t) STREAM_DATA (s), stream_get_endp (s),
 				 to, ifp);
 
         if (ret >= 0 && IS_RIPNG_DEBUG_SEND)
@@ -191,7 +191,7 @@
 			  TAG_OUT(data), METRIC_OUT(data));
 
     if (num == rtemax) {
-      ret = ripng_send_packet (STREAM_DATA (s), stream_get_endp (s),
+      ret = ripng_send_packet ((caddr_t) STREAM_DATA (s), stream_get_endp (s),
 			       to, ifp);
 
       if (ret >= 0 && IS_RIPNG_DEBUG_SEND)
@@ -204,7 +204,7 @@
 
   /* If unwritten RTE exist, flush it. */
   if (num != 0) {
-    ret = ripng_send_packet (STREAM_DATA (s), stream_get_endp (s),
+    ret = ripng_send_packet ((caddr_t) STREAM_DATA (s), stream_get_endp (s),
 			     to, ifp);
 
     if (ret >= 0 && IS_RIPNG_DEBUG_SEND)
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c
index 874848c..4d7c021 100644
--- a/ripngd/ripngd.c
+++ b/ripngd/ripngd.c
@@ -1585,9 +1585,9 @@
 
   /* Write routing table entry. */
   if (!nexthop)
-    stream_write (s, (caddr_t) &p->prefix, sizeof (struct in6_addr));
+    stream_write (s, (u_char *) &p->prefix, sizeof (struct in6_addr));
   else
-    stream_write (s, (caddr_t) nexthop, sizeof (struct in6_addr));
+    stream_write (s, (u_char *) nexthop, sizeof (struct in6_addr));
   stream_putw (s, tag);
   if (p)
     stream_putc (s, p->prefixlen);
@@ -2813,7 +2813,7 @@
 
 /* Update all interface's distribute list. */
 void
-ripng_distribute_update_all ()
+ripng_distribute_update_all (struct prefix_list *notused)
 {
   struct interface *ifp;
   struct listnode *node;
@@ -2824,6 +2824,12 @@
       ripng_distribute_update_interface (ifp);
     }
 }
+
+void
+ripng_distribute_update_all_wrapper (struct access_list *notused)
+{
+  ripng_distribute_update_all(NULL);
+}
 
 /* delete all the added ripng routes. */
 void
@@ -2985,7 +2991,7 @@
 }
 
 void
-ripng_routemap_update ()
+ripng_routemap_update (char *unused)
 {
   struct interface *ifp;
   struct listnode *node;
@@ -3049,8 +3055,8 @@
 
   /* Access list install. */
   access_list_init ();
-  access_list_add_hook (ripng_distribute_update_all);
-  access_list_delete_hook (ripng_distribute_update_all);
+  access_list_add_hook (ripng_distribute_update_all_wrapper);
+  access_list_delete_hook (ripng_distribute_update_all_wrapper);
 
   /* Prefix list initialize.*/
   prefix_list_init ();
