diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index b856ff2..c56f01b 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,12 @@
+2005-10-11 Paul Jakma <paul.jakma@sun.com>
+
+	* ospf_api.c: sign warnings.
+	* ospf_apiserver.c: sign warning and convert all the struct
+	  in_addr initialisations so as not to make assumptions about
+	  how this struct is organised, initialise the s_addr member
+	  explicitely.
+	* ospf_packet.c: Add const qualifier to auth_key.
+
 2005-10-06 Alain Ritoux <alain.ritoux@6wind.com>
 
 	* ospf_snmp.c: Avoid mixing interface and ospf_interface objects
diff --git a/ospfd/ospf_api.c b/ospfd/ospf_api.c
index 03b3186..d9960d4 100644
--- a/ospfd/ospf_api.c
+++ b/ospfd/ospf_api.c
@@ -350,12 +350,12 @@
 {
   struct msg *msg;
   struct apimsghdr hdr;
-  char buf[OSPF_API_MAX_MSG_SIZE];
+  u_char buf[OSPF_API_MAX_MSG_SIZE];
   int bodylen;
   int rlen;
 
   /* Read message header */
-  rlen = readn (fd, (char *) &hdr, sizeof (struct apimsghdr));
+  rlen = readn (fd, (u_char *) &hdr, sizeof (struct apimsghdr));
 
   if (rlen < 0)
     {
diff --git a/ospfd/ospf_apiserver.c b/ospfd/ospf_apiserver.c
index b557d01..784716b 100644
--- a/ospfd/ospf_apiserver.c
+++ b/ospfd/ospf_apiserver.c
@@ -660,7 +660,7 @@
   struct ospf_apiserver *apiserv;
   struct sockaddr_in peer_async;
   struct sockaddr_in peer_sync;
-  int peerlen;
+  unsigned int peerlen;
   int ret;
 
   /* THREAD_ARG (thread) is NULL */
@@ -1174,8 +1174,8 @@
   for (ALL_LIST_ELEMENTS (apiserv->opaque_types, node, nnode, r))
     {
       struct msg *msg;
-      struct in_addr noarea_id = { 0L };
-
+      struct in_addr noarea_id = { .s_addr = 0L };
+      
       if (r->lsa_type == OSPF_OPAQUE_AS_LSA)
 	{
 	  /* Yes, this opaque type is ready */
@@ -1296,11 +1296,11 @@
     {
 
       /* Default area for AS-External and Opaque11 LSAs */
-      struct in_addr area_id = { 0L };
+      struct in_addr area_id = { .s_addr = 0L };
 
       /* Default interface for non Opaque9 LSAs */
-      struct in_addr ifaddr = { 0L };
-
+      struct in_addr ifaddr = { .s_addr = 0L };;
+      
       if (lsa->area)
 	{
 	  area_id = lsa->area->area_id;
@@ -2356,11 +2356,11 @@
 {
   struct listnode *node, *nnode;
   struct msg *msg;
-  struct in_addr id_null = { 0L };
+  struct in_addr id_null = { .s_addr = 0L };
   struct ospf_apiserver *apiserv;
-
+  
   assert (top);
-
+  
   if (!ospf_apiserver_is_ready_type11 (top))
     {
       zlog_warn ("AS not ready for type 11?");
@@ -2429,12 +2429,12 @@
 ospf_apiserver_clients_notify_ism_change (struct ospf_interface *oi)
 {
   struct msg *msg;
-  struct in_addr ifaddr = { 0L };
-  struct in_addr area_id = { 0L };
-
+  struct in_addr ifaddr = { .s_addr = 0L };
+  struct in_addr area_id = { .s_addr = 0L };
+  
   assert (oi);
   assert (oi->ifp);
-
+  
   if (oi->address)
     {
       ifaddr = oi->address->u.prefix4;
@@ -2459,8 +2459,8 @@
 ospf_apiserver_clients_notify_nsm_change (struct ospf_neighbor *nbr)
 {
   struct msg *msg;
-  struct in_addr ifaddr = { 0L };
-  struct in_addr nbraddr = { 0L };
+  struct in_addr ifaddr = { .s_addr = 0L };
+  struct in_addr nbraddr = { .s_addr = 0L };
 
   assert (nbr);
 
@@ -2490,10 +2490,10 @@
   struct ospf_apiserver *apiserv;
 
   /* Default area for AS-External and Opaque11 LSAs */
-  struct in_addr area_id = { 0L };
+  struct in_addr area_id = { .s_addr = 0L };
 
   /* Default interface for non Opaque9 LSAs */
-  struct in_addr ifaddr = { 0L };
+  struct in_addr ifaddr = { .s_addr = 0L };
 
   if (lsa->area)
     {
@@ -2588,10 +2588,10 @@
 {
   struct msg *msg;
   /* default area for AS-External and Opaque11 LSAs */
-  struct in_addr area_id = { 0L };
+  struct in_addr area_id = { .s_addr = 0L };
 
   /* default interface for non Opaque9 LSAs */
-  struct in_addr ifaddr = { 0L };
+  struct in_addr ifaddr = { .s_addr = 0L };
 
   /* Only notify this update if the LSA's age is smaller than
      MAXAGE. Otherwise clients would see LSA updates with max age just
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index c869d3d..e50b743 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -329,7 +329,7 @@
   void *ibuf;
   u_int32_t t;
   struct crypt_key *ck;
-  const char *auth_key;
+  const u_int8_t *auth_key;
 
   ibuf = STREAM_DATA (op->s);
   ospfh = (struct ospf_header *) ibuf;
@@ -345,7 +345,7 @@
 
   /* Get MD5 Authentication key from auth_key list. */
   if (list_isempty (OSPF_IF_PARAM (oi, auth_crypt)))
-    auth_key = "";
+    auth_key = (const u_int8_t *) "";
   else
     {
       ck = listgetdata (listtail(OSPF_IF_PARAM (oi, auth_crypt)));
