Hi,
I think I found a bug, but wanted to check with people on the mailing
list before reporting it (since it seems like others are using UDP
without any problem, I wonder why it is that I am having a problem?).
Space for IP header (IP_HLEN) is not properly allocated when using the
UDP RAW API. The problem seems to be constrained to one of these
functions:
- udp_send (in src/core/udp.c)
- ip_output_if (in src/core/ipv4/ip.c)
The problem is that no function is assuming the responsibility of
allocating sufficient memory for the IP header (e.g. by calling
``pbuf_alloc`` and ``pbuf_chain``). Neither ``ip_output_if`` nor
``udp_send`` allocate any memory (pbufs) for the IP header.
However, ``udp_send`` does allocate enough memory for the UDP header
(but not the IP header). Looking at other code (``raw_send_to`` in
``src/core/raw.c``) seems to indicate that space for the IP header
must be allocated *before* calling ``ip_output_if`` which means that
``udp_send`` has a bug (because it does not allocate space for the IP
header). In either case, it seems that someone apparently needs to
allocate a pbuf and call pbuf_chain.
Here are some lines captured when enabling debug output (in
``src/include/lwip/debug.h``) and trying to call ``udp_send`` (NOTE:
this is not captured from the CVS head, but hopefully should follow it
closely enough)::
udp_send
pbuf_header: old 0x195aa8 new 0x195aa0 (8)
udp_send: added header in given pbuf 0x195a88
udp_send: sending datagram of length 13
udp_send: UDP packet length 13
udp_send: UDP checksum 0x0000
udp_send: ip_output_if (,,,,IP_PROTO_UDP,)
pbuf_header: failed as 0x195a8c < 0x195a98
ip_output: not enough room for IP header in pbuf
I am unable to send any UDP packets (even if I try different sizes).
However, if I rewrite ``udp_send`` to force it to call ``pbuf_alloc``
and ``pbuf_chain``, then everything works perfect (i.e. I am able to
send UDP packets).
So, is this a bug? Or do you think I am missing something important?
-David
_______________________________________________
lwip-users mailing list
address@hidden
http://lists.nongnu.org/mailman/listinfo/lwip-users