diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 7f00516..8fd6f82 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,11 @@
+2004-10-31 Paul Jakma <paul@dishone.st>
+
+	* ospf_packet.c: (ospf_write_frags) Add debug output
+	  (ospf_write) set type early, so we can pass it to
+	  ospf_write_frags.
+	  (ospf_ls_upd_packet_new) print size in debug output when too large
+	  packet is encountered.
+
 2004-10-22 Paul Jakma <paul@dishone.st>
 
 	* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index a931fdb..de66bcb 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -485,9 +485,9 @@
 #ifdef WANT_OSPF_WRITE_FRAGMENT
 void
 ospf_write_frags (int fd, struct ospf_packet *op, struct ip *iph, 
-                  struct msghdr *msg, struct iovec **iov, 
+                  struct msghdr *msg, struct iovec *iov[],
                   unsigned int maxdatasize, 
-                  unsigned int mtu, int flags)
+                  unsigned int mtu, int flags, u_char type)
 {
 #define OSPF_WRITE_FRAG_SHIFT 3
   u_int16_t offset;
@@ -530,7 +530,7 @@
       sockopt_iphdrincl_swab_systoh (iph);
       
       if (ret < 0)
-        zlog_warn ("*** sendmsg in ospf_write to %s,"
+        zlog_warn ("*** ospf_write_frags: sendmsg failed to %s,"
                    " id %d, off %d, len %d failed with %s",
                    inet_ntoa (iph->ip_dst),
                    iph->ip_id,
@@ -538,6 +538,19 @@
                    iph->ip_len,
                    strerror (errno));
       
+      if (IS_DEBUG_OSPF_PACKET (type - 1, SEND))
+        {
+          zlog_info ("ospf_write_frags: sent id %d, off %d, len %d to %s\n",
+                     iph->ip_id, iph->ip_off, iph->ip_len,
+                     inet_ntoa (iph->ip_dst));
+          if (IS_DEBUG_OSPF_PACKET (type - 1, DETAIL))
+            {
+              zlog_info ("-----------------IP Header Dump----------------------");
+              ospf_ip_header_dump (iph);
+              zlog_info ("-----------------------------------------------------");
+            }
+        }
+      
       iph->ip_off += offset;
       stream_forward (op->s, iov[1]->iov_len);
       iov[1]->iov_base = STREAM_PNT (op->s); 
@@ -598,6 +611,10 @@
   /* Rewrite the md5 signature & update the seq */
   ospf_make_md5_digest (oi, op);
 
+  /* Retrieve OSPF packet type. */
+  stream_set_getp (op->s, 1);
+  type = stream_getc (op->s);
+  
   /* reset get pointer */
   stream_set_getp (op->s, 0);
 
@@ -662,7 +679,7 @@
     {
       iovp = iov;
       ospf_write_frags (ospf->fd, op, &iph, &msg, &iovp, maxdatasize, 
-                        oi->ifp->mtu, flags);
+                        oi->ifp->mtu, flags, type);
     }
 #endif /* WANT_OSPF_WRITE_FRAGMENT */
 
@@ -675,16 +692,13 @@
     zlog_warn ("*** sendmsg in ospf_write to %s failed with %s",
       inet_ntoa (iph.ip_dst), strerror (errno));
 
-  /* Retrieve OSPF packet type. */
-  stream_set_getp (op->s, 1);
-  type = stream_getc (op->s);
-
   /* Show debug sending packet. */
   if (IS_DEBUG_OSPF_PACKET (type - 1, SEND))
     {
       if (IS_DEBUG_OSPF_PACKET (type - 1, DETAIL))
 	{
 	  zlog_info ("-----------------------------------------------------");
+	  ospf_ip_header_dump (&iph);
 	  stream_set_getp (op->s, 0);
 	  ospf_packet_dump (op->s);
 	}
@@ -3232,9 +3246,10 @@
   if (size > OSPF_MAX_PACKET_SIZE)
     {
       zlog_warn ("ospf_ls_upd_packet_new: oversized LSA id:%s too big,"
-                 " %d bytes, dropping it completely."
+                 " %d bytes, packet size %d, dropping it completely."
                  " OSPF routing is broken!",
-                 inet_ntoa (lsa->data->id), ntohs (lsa->data->length));
+                 inet_ntoa (lsa->data->id), ntohs (lsa->data->length),
+                 size);
       list_delete_node (update, ln);
       return NULL;
     }
