diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index d174337..e3efeb1 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,13 @@
+2004-11-02 Paul Jakma <paul@dishone.st>
+
+	* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points
+	  to it. Add convenience pointer to msg->msg_iov[1], and use this,
+	  fixing the unfortunate borkenness introduced in moving of this code 
+	  to a function.
+	  (ospf_write) remove iovp and fix up call to previous.
+	  (ospf_ls_upd_packet_new) cast size to long int - unfortunately 
+          glibc's size_t format modifier is not portable.
+
 2004-10-31 Paul Jakma <paul@dishone.st>
 
 	* ospf_packet.c: (ospf_write_frags) Add debug output
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index 2664b4e..5a1c091 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -485,15 +485,16 @@
 #ifdef WANT_OSPF_WRITE_FRAGMENT
 void
 ospf_write_frags (int fd, struct ospf_packet *op, struct ip *iph, 
-                  struct msghdr *msg, struct iovec *iov[],
-                  unsigned int maxdatasize, 
+                  struct msghdr *msg, unsigned int maxdatasize, 
                   unsigned int mtu, int flags, u_char type)
 {
 #define OSPF_WRITE_FRAG_SHIFT 3
   u_int16_t offset;
+  struct iovec *iovp;
   int ret;
 
   assert ( op->length == stream_get_endp(op->s) );
+  assert (msg->msg_iovlen == 2);
 
   /* we can but try.
    *
@@ -515,12 +516,14 @@
   /* ip frag offset is expressed in units of 8byte words */
   offset = maxdatasize >> OSPF_WRITE_FRAG_SHIFT;
   
+  iovp = &msg->msg_iov[1];
+  
   while ( (stream_get_endp(op->s) - stream_get_getp (op->s)) 
          > maxdatasize )
     {
       /* data length of this frag is to next offset value */
-      iov[1]->iov_len = offset << OSPF_WRITE_FRAG_SHIFT;
-      iph->ip_len = iov[1]->iov_len + sizeof (struct ip);
+      iovp->iov_len = offset << OSPF_WRITE_FRAG_SHIFT;
+      iph->ip_len = iovp->iov_len + sizeof (struct ip);
       assert (iph->ip_len <= mtu);
 
       sockopt_iphdrincl_swab_htosys (iph);
@@ -552,13 +555,13 @@
         }
       
       iph->ip_off += offset;
-      stream_forward (op->s, iov[1]->iov_len);
-      iov[1]->iov_base = STREAM_PNT (op->s); 
+      stream_forward (op->s, iovp->iov_len);
+      iovp->iov_base = STREAM_PNT (op->s); 
     }
     
   /* setup for final fragment */
-  iov[1]->iov_len = stream_get_endp(op->s) - stream_get_getp (op->s);
-  iph->ip_len = iov[1]->iov_len + sizeof (struct ip);
+  iovp->iov_len = stream_get_endp(op->s) - stream_get_getp (op->s);
+  iph->ip_len = iovp->iov_len + sizeof (struct ip);
   iph->ip_off &= (~IP_MF);
 }
 #endif /* WANT_OSPF_WRITE_FRAGMENT */
@@ -572,7 +575,7 @@
   struct sockaddr_in sa_dst;
   struct ip iph;
   struct msghdr msg;
-  struct iovec iov[2], *iovp;
+  struct iovec iov[2];
   u_char type;
   int ret;
   int flags = 0;
@@ -676,11 +679,8 @@
    */
 #ifdef WANT_OSPF_WRITE_FRAGMENT
   if ( op->length > maxdatasize )
-    {
-      iovp = iov;
-      ospf_write_frags (ospf->fd, op, &iph, &msg, &iovp, maxdatasize, 
-                        oi->ifp->mtu, flags, type);
-    }
+    ospf_write_frags (ospf->fd, op, &iph, &msg, maxdatasize, 
+                      oi->ifp->mtu, flags, type);
 #endif /* WANT_OSPF_WRITE_FRAGMENT */
 
   /* send final fragment (could be first) */
@@ -3249,7 +3249,7 @@
                  " %d bytes, packet size %ld, dropping it completely."
                  " OSPF routing is broken!",
                  inet_ntoa (lsa->data->id), ntohs (lsa->data->length),
-                 size);
+                 (long int) size);
       list_delete_node (update, ln);
       return NULL;
     }
