diff --git a/lib/ChangeLog b/lib/ChangeLog
index 3573ac1..ab39073 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,21 @@
+2004-06-11 Sowmini Varadhan <sowmini.varadhan@sun.com>
+
+	* filter.c: (access_list_remark_cmd) buffer_putstr doesnt need cast
+	  to u_char. (ipv6_access_list_remark_cmd) ditto.
+	  if.c: ditto
+	* network.c: (readn/writen) pointer arg should be type u_char.
+	* plist.c: needs to include stream.h, not declare stream functions
+	  internally.
+	  (various) Add static qualifier to internal functions.
+	  (prefix_list_type_str) extraneous breaks in switch statement.
+	  (ip_prefix_list_description_cmd) buffer_putstr doesnt need cast
+	* stream.h: depends on plist.h and export stream_put_prefix
+	* vty.c: (vty_<telnet option build functions>) should use 
+	  unsigned char, telnet options are 0 -> 255.
+	* zclient.c: various u_char<->char type cleanups.
+	* zebra.h: Having to define CMSG_* can apply to more than just
+	  BSDI_NRL. 
+	  
 2004-06-09 Paul Jakma <paul@dishone.st>
 
 	* config.h: __attribute__ is a gcc'ism
diff --git a/lib/filter.c b/lib/filter.c
index a483ce2..cd4bc0a 100644
--- a/lib/filter.c
+++ b/lib/filter.c
@@ -1374,7 +1374,7 @@
   b = buffer_new (1024);
   for (i = 1; i < argc; i++)
     {
-      buffer_putstr (b, (u_char *)argv[i]);
+      buffer_putstr (b, argv[i]);
       buffer_putc (b, ' ');
     }
   buffer_putc (b, '\0');
@@ -1556,7 +1556,7 @@
   b = buffer_new (1024);
   for (i = 1; i < argc; i++)
     {
-      buffer_putstr (b, (u_char *)argv[i]);
+      buffer_putstr (b, argv[i]);
       buffer_putc (b, ' ');
     }
   buffer_putc (b, '\0');
diff --git a/lib/if.c b/lib/if.c
index e76f609..ff5ec50 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -462,7 +462,7 @@
   b = buffer_new (1024);
   for (i = 0; i < argc; i++)
     {
-      buffer_putstr (b, (u_char *)argv[i]);
+      buffer_putstr (b, argv[i]);
       buffer_putc (b, ' ');
     }
   buffer_putc (b, '\0');
diff --git a/lib/network.c b/lib/network.c
index b68761b..d105db4 100644
--- a/lib/network.c
+++ b/lib/network.c
@@ -24,7 +24,7 @@
 
 /* Read nbytes from fd and store into ptr. */
 int
-readn (int fd, char *ptr, int nbytes)
+readn (int fd, u_char *ptr, int nbytes)
 {
   int nleft;
   int nread;
@@ -50,7 +50,7 @@
 
 /* Write nbytes from ptr to fd. */
 int
-writen(int fd, char *ptr, int nbytes)
+writen(int fd, u_char *ptr, int nbytes)
 {
   int nleft;
   int nwritten;
diff --git a/lib/network.h b/lib/network.h
index a021295..0544361 100644
--- a/lib/network.h
+++ b/lib/network.h
@@ -23,7 +23,7 @@
 #ifndef _ZEBRA_NETWORK_H
 #define _ZEBRA_NETWORK_H
 
-int readn (int, char *, int);
-int writen (int, char *, int);
+int readn (int, u_char *, int);
+int writen (int, u_char *, int);
 
 #endif /* _ZEBRA_NETWORK_H */
diff --git a/lib/plist.c b/lib/plist.c
index c2aeea5..4069f86 100644
--- a/lib/plist.c
+++ b/lib/plist.c
@@ -27,6 +27,7 @@
 #include "plist.h"
 #include "sockunion.h"
 #include "buffer.h"
+#include "stream.h"
 
 /* Each prefix-list's entry. */
 struct prefix_list_entry
@@ -109,7 +110,7 @@
   NULL,
 };
 
-struct prefix_master *
+static struct prefix_master *
 prefix_master_get (afi_t afi)
 {
   if (afi == AFI_IP)
@@ -148,7 +149,7 @@
   return NULL;
 }
 
-struct prefix_list *
+static struct prefix_list *
 prefix_list_new ()
 {
   struct prefix_list *new;
@@ -157,13 +158,13 @@
   return new;
 }
 
-void
+static void
 prefix_list_free (struct prefix_list *plist)
 {
   XFREE (MTYPE_PREFIX_LIST, plist);
 }
 
-struct prefix_list_entry *
+static struct prefix_list_entry *
 prefix_list_entry_new ()
 {
   struct prefix_list_entry *new;
@@ -172,7 +173,7 @@
   return new;
 }
 
-void
+static void
 prefix_list_entry_free (struct prefix_list_entry *pentry)
 {
   XFREE (MTYPE_PREFIX_LIST_ENTRY, pentry);
@@ -180,7 +181,7 @@
 
 /* Insert new prefix list to list of prefix_list.  Each prefix_list
    is sorted by the name. */
-struct prefix_list *
+static struct prefix_list *
 prefix_list_insert (afi_t afi, char *name)
 {
   int i;
@@ -270,7 +271,7 @@
   return plist;
 }
 
-struct prefix_list *
+static struct prefix_list *
 prefix_list_get (afi_t afi, char *name)
 {
   struct prefix_list *plist;
@@ -283,7 +284,7 @@
 }
 
 /* Delete prefix-list from prefix_list_master and free it. */
-void
+static void
 prefix_list_delete (struct prefix_list *plist)
 {
   struct prefix_list_list *list;
@@ -332,7 +333,7 @@
     (*master->delete_hook) ();
 }
 
-struct prefix_list_entry *
+static struct prefix_list_entry *
 prefix_list_entry_make (struct prefix *prefix, enum prefix_list_type type,
 			int seq, int le, int ge, int any)
 {
@@ -373,7 +374,7 @@
 }
 
 /* Calculate new sequential number. */
-int
+static int
 prefix_new_seq_get (struct prefix_list *plist)
 {
   int maxseq;
@@ -394,7 +395,7 @@
 }
 
 /* Return prefix list entry which has same seq number. */
-struct prefix_list_entry *
+static struct prefix_list_entry *
 prefix_seq_check (struct prefix_list *plist, int seq)
 {
   struct prefix_list_entry *pentry;
@@ -405,7 +406,7 @@
   return NULL;
 }
 
-struct prefix_list_entry *
+static struct prefix_list_entry *
 prefix_list_entry_lookup (struct prefix_list *plist, struct prefix *prefix,
 			  enum prefix_list_type type, int seq, int le, int ge)
 {
@@ -428,7 +429,7 @@
   return NULL;
 }
 
-void
+static void
 prefix_list_entry_delete (struct prefix_list *plist, 
 			  struct prefix_list_entry *pentry,
 			  int update_list)
@@ -460,7 +461,7 @@
     }
 }
 
-void
+static void
 prefix_list_entry_add (struct prefix_list *plist,
 		       struct prefix_list_entry *pentry)
 {
@@ -523,17 +524,14 @@
     {
     case PREFIX_PERMIT:
       return "permit";
-      break;
     case PREFIX_DENY:
       return "deny";
-      break;
     default:
       return "";
-      break;
     }
 }
 
-int
+static int
 prefix_list_entry_match (struct prefix_list_entry *pentry, struct prefix *p)
 {
   int ret;
@@ -624,7 +622,7 @@
 }
 
 /* Retrun 1 when plist already include pentry policy. */
-struct prefix_list_entry *
+static struct prefix_list_entry *
 prefix_entry_dup_check (struct prefix_list *plist,
 			struct prefix_list_entry *new)
 {
@@ -648,7 +646,7 @@
   return NULL;
 }
 
-int
+static int
 vty_invalid_prefix_range (struct vty *vty, char *prefix)
 {
   vty_out (vty, "%% Invalid prefix range for %s, make sure: len < ge-value <= le-value%s",
@@ -656,7 +654,7 @@
   return CMD_WARNING;
 }
 
-int
+static int
 vty_prefix_list_install (struct vty *vty, afi_t afi,
 			 char *name, char *seq, char *typestr,
 			 char *prefix, char *ge, char *le)
@@ -775,7 +773,7 @@
   return CMD_SUCCESS;
 }
 
-int
+static int
 vty_prefix_list_uninstall (struct vty *vty, afi_t afi,
 			   char *name, char *seq, char *typestr,
 			   char *prefix, char *ge, char *le)
@@ -879,7 +877,7 @@
   return CMD_SUCCESS;
 }
 
-int
+static int
 vty_prefix_list_desc_unset (struct vty *vty, afi_t afi, char *name)
 {
   struct prefix_list *plist;
@@ -913,7 +911,7 @@
   first_match_display
 };
 
-void
+static void
 vty_show_prefix_entry (struct vty *vty, afi_t afi, struct prefix_list *plist,
 		       struct prefix_master *master, enum display_type dtype,
 		       int seqnum)
@@ -983,7 +981,7 @@
     }
 }
 
-int
+static int
 vty_show_prefix_list (struct vty *vty, afi_t afi, char *name,
 		      char *seq, enum display_type dtype)
 {
@@ -1027,7 +1025,7 @@
   return CMD_SUCCESS;
 }
 
-int
+static int
 vty_show_prefix_list_prefix (struct vty *vty, afi_t afi, char *name, 
 			     char *prefix, enum display_type type)
 {
@@ -1099,7 +1097,7 @@
   return CMD_SUCCESS;
 }
 
-int
+static int
 vty_clear_prefix_list (struct vty *vty, afi_t afi, char *name, char *prefix)
 {
   struct prefix_master *master;
@@ -1577,7 +1575,7 @@
   b = buffer_new (1024);
   for (i = 1; i < argc; i++)
     {
-      buffer_putstr (b, (u_char *)argv[i]);
+      buffer_putstr (b, argv[i]);
       buffer_putc (b, ' ');
     }
   buffer_putc (b, '\0');
@@ -2187,7 +2185,7 @@
   b = buffer_new (1024);
   for (i = 1; i < argc; i++)
     {
-      buffer_putstr (b, (u_char *)argv[i]);
+      buffer_putstr (b, argv[i]);
       buffer_putc (b, ' ');
     }
   buffer_putc (b, '\0');
@@ -2374,7 +2372,7 @@
 #endif /* HAVE_IPV6 */
 
 /* Configuration write function. */
-int
+static int
 config_write_prefix_afi (afi_t afi, struct vty *vty)
 {
   struct prefix_list *plist;
@@ -2481,10 +2479,6 @@
   return write;
 }
 
-int stream_putc (struct stream *, u_char);
-int stream_putl (struct stream *, u_int32_t);
-int stream_put_prefix (struct stream *, struct prefix *);
-
 struct stream *
 prefix_bgp_orf_entry (struct stream *s, struct prefix_list *plist,
 		      u_char init_flag, u_char permit_flag, u_char deny_flag)
@@ -2610,7 +2604,7 @@
   return plist->count;
 }
 
-void
+static void
 prefix_list_reset_orf ()
 {
   struct prefix_list *plist;
@@ -2651,13 +2645,13 @@
   1
 };
 
-int
+static int
 config_write_prefix_ipv4 (struct vty *vty)
 {
   return config_write_prefix_afi (AFI_IP, vty);
 }
 
-void
+static void
 prefix_list_reset_ipv4 ()
 {
   struct prefix_list *plist;
@@ -2689,7 +2683,7 @@
   master->recent = NULL;
 }
 
-void
+static void
 prefix_list_init_ipv4 ()
 {
   install_node (&prefix_node, config_write_prefix_ipv4);
@@ -2760,13 +2754,13 @@
   1
 };
 
-int
+static int
 config_write_prefix_ipv6 (struct vty *vty)
 {
   return config_write_prefix_afi (AFI_IP6, vty);
 }
 
-void
+static void
 prefix_list_reset_ipv6 ()
 {
   struct prefix_list *plist;
@@ -2798,7 +2792,7 @@
   master->recent = NULL;
 }
 
-void
+static void
 prefix_list_init_ipv6 ()
 {
   install_node (&prefix_ipv6_node, config_write_prefix_ipv6);
diff --git a/lib/stream.h b/lib/stream.h
index c6ef3c8..f7a94ea 100644
--- a/lib/stream.h
+++ b/lib/stream.h
@@ -23,6 +23,8 @@
 #ifndef _ZEBRA_STREAM_H
 #define _ZEBRA_STREAM_H
 
+#include "prefix.h"
+
 /* Stream buffer. */
 struct stream
 {
@@ -82,6 +84,7 @@
 int stream_putl_at (struct stream *, unsigned long, u_int32_t);
 int stream_put_ipv4 (struct stream *, u_int32_t);
 int stream_put_in_addr (struct stream *, struct in_addr *);
+int stream_put_prefix (struct stream *, struct prefix *);
 
 void stream_get (void *, struct stream *, size_t);
 u_char stream_getc (struct stream *);
diff --git a/lib/vty.c b/lib/vty.c
index 831660d..4b23487 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -221,7 +221,7 @@
 void
 vty_will_echo (struct vty *vty)
 {
-  char cmd[] = { IAC, WILL, TELOPT_ECHO, '\0' };
+  unsigned char cmd[] = { IAC, WILL, TELOPT_ECHO, '\0' };
   vty_out (vty, "%s", cmd);
 }
 
@@ -229,7 +229,7 @@
 static void
 vty_will_suppress_go_ahead (struct vty *vty)
 {
-  char cmd[] = { IAC, WILL, TELOPT_SGA, '\0' };
+  unsigned char cmd[] = { IAC, WILL, TELOPT_SGA, '\0' };
   vty_out (vty, "%s", cmd);
 }
 
@@ -237,7 +237,7 @@
 static void
 vty_dont_linemode (struct vty *vty)
 {
-  char cmd[] = { IAC, DONT, TELOPT_LINEMODE, '\0' };
+  unsigned char cmd[] = { IAC, DONT, TELOPT_LINEMODE, '\0' };
   vty_out (vty, "%s", cmd);
 }
 
@@ -245,7 +245,7 @@
 static void
 vty_do_window_size (struct vty *vty)
 {
-  char cmd[] = { IAC, DO, TELOPT_NAWS, '\0' };
+  unsigned char cmd[] = { IAC, DO, TELOPT_NAWS, '\0' };
   vty_out (vty, "%s", cmd);
 }
 
@@ -254,7 +254,7 @@
 static void
 vty_dont_lflow_ahead (struct vty *vty)
 {
-  char cmd[] = { IAC, DONT, TELOPT_LFLOW, '\0' };
+  unsigned char cmd[] = { IAC, DONT, TELOPT_LFLOW, '\0' };
   vty_out (vty, "%s", cmd);
 }
 #endif /* 0 */
diff --git a/lib/zclient.c b/lib/zclient.c
index dcfa45f..3b68338 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -512,7 +512,7 @@
 zebra_interface_add_read (struct stream *s)
 {
   struct interface *ifp;
-  u_char ifname_tmp[INTERFACE_NAMSIZ];
+  char ifname_tmp[INTERFACE_NAMSIZ];
 
   /* Read interface name. */
   stream_get (ifname_tmp, s, INTERFACE_NAMSIZ);
@@ -556,7 +556,7 @@
 zebra_interface_state_read (struct stream *s)
 {
   struct interface *ifp;
-  u_char ifname_tmp[INTERFACE_NAMSIZ];
+  char ifname_tmp[INTERFACE_NAMSIZ];
 
   /* Read interface name. */
   stream_get (ifname_tmp, s, INTERFACE_NAMSIZ);
diff --git a/lib/zebra.h b/lib/zebra.h
index ed3024d..7ba01d5 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -207,14 +207,29 @@
 
 #define IN6_ARE_ADDR_EQUAL IN6_IS_ADDR_EQUAL
 
-/* BSD/OS 4.0 has lost belows defines, it should appear at
-   /usr/include/sys/socket.h.  */
-#define CMSG_ALIGN(n)           (((n) + 3) & ~3)
-#define CMSG_SPACE(l)   (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(l))
-#define CMSG_LEN(l)     (CMSG_ALIGN(sizeof(struct cmsghdr)) + (l))
-
 #endif /* BSDI_NRL */
 
+/* 
+ * RFC 2553-bis defines not available on some systems.
+ */
+#ifndef _CMSG_DATA_ALIGN
+#define _CMSG_DATA_ALIGN(n)           (((n) + 3) & ~3)
+#endif /* _CMSG_DATA_ALIGN */
+
+#ifndef _CMSG_HDR_ALIGN
+#define _CMSG_HDR_ALIGN(n)            (((n) + 3) & ~3)
+#endif /* _CMSG_HDR_ALIGN */
+
+#ifndef CMSG_SPACE
+#define CMSG_SPACE(l)       (_CMSG_DATA_ALIGN(sizeof(struct cmsghdr)) + \
+                              _CMSG_HDR_ALIGN(l))
+#endif  /* CMSG_SPACE */
+
+
+#ifndef CMSG_LEN
+#define CMSG_LEN(l)         (_CMSG_DATA_ALIGN(sizeof(struct cmsghdr)) + (l))
+#endif /* CMSG_LEN */
+
 #if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5
 #define __attribute__(x)
 #endif  /* !__GNUC__ */
diff --git a/ripd/ChangeLog b/ripd/ChangeLog
index 848efee..2080333 100644
--- a/ripd/ChangeLog
+++ b/ripd/ChangeLog
@@ -1,3 +1,10 @@
+2004-06-11 Sowmini Varadhan <sowmini.varadhan@sun.com>
+
+	* ripd.c: (rip_distribute_update_all) distribute list hook
+	  function pointer prototype requires struct prefix_list * arg.
+	  (rip_distribute_update_all_wrapper) update to pass required arg,
+	  NULL.
+	 
 2004-06-06 Paul Jakma <paul.jakma@sun.com>
 
 	* ripd.h: Add define for the RIPv2 Authentication Data family
diff --git a/ripd/ripd.c b/ripd/ripd.c
index 6914822..8b76073 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -3745,8 +3745,9 @@
 }
 
 /* Update all interface's distribute list. */
+/* ARGSUSED */
 void
-rip_distribute_update_all ()
+rip_distribute_update_all (struct prefix_list *notused)
 {
   struct interface *ifp;
   listnode node;
@@ -3761,7 +3762,7 @@
 void
 rip_distribute_update_all_wrapper(struct access_list *notused)
 {
-        rip_distribute_update_all();
+        rip_distribute_update_all(NULL);
 }
 
 /* Delete all added rip route. */
