<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body wsmode="reply" bgcolor="#FFFFFF" text="#000000">
    I'm having issues with this release, specifically around the fact
    that nl.c::nl_recvmsgs() now returns a positive number on successful
    reads indicating the number of messages that were actually recv'd. 
    The issue is that I have run across several instances where the
    caller of nl.c::nl_recvmsgs() "assumes" that a return of 0 is a
    successful read instead of >0 and therefore does not take the
    same paths as 3.2.7.  A good example is that when I call
    link.c::rtnl_link_get_kernel() the code should wait for an ACK if an
    object is returned, but is does not because the return of
    nl.c::nl_pickup() is now >0 instead of 0.  Now we are out of
    order/sequence with our ACK packets and things go downhill from
    there.<br>
    <br>
    There are probably other situations, but that was the one I tracked
    down.  What was the reason for this API change to nl_recvmsgs() and
    what will I break if I remove the nrecv counter in recvmsgs()?<br>
    <div class="moz-signature">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <br>
      Scott Bonar<br>
    </div>
    <br>
    On 04/26/2012 03:35 AM, Thomas Graf wrote:
    <blockquote cite="mid:20120426093557.GK27640@canuck.infradead.org"
      type="cite">
      <pre wrap="">
Hello everyone

I'm pleased to announce the release of libnl 3.2.8. It contains
various fixes and several new API additions.

Thanks to everyone who contributed to this release.

Brett Ciphery (1):
      add new function to provide neighbour event parsing

Nicolas CARRIER (1):
      Memory leak in classid.c

Romary Sonrier (1):
      missing extended Table attribute for lib/route/

Shriram Rajagopalan (1):
      Support plug qdisc - queue traffic until explicit release

Thierry Reding (1):
      Add new nl_cache_clone() function.

Thomas Graf (25):
      doc: Fix typos in autoconf example
      doc: Fix incorrect nl_socket_add_memberships() example
      genl-ctrl-list: Introduce -d|--details as a shortcut for --format=details
      genl-ctrl-list: Provide manual page
      genl-ctrl-list: fix copyright and summary
      genl-ctrl-list: Mark for installation
      cache_mngr: document uncommon error codes
      tests: Convert tests/Makefile to use automake
      tests: fix test programs to compile again
      cache_mngr: Don't modify callback setup of socket
      cache_manager: Move documentation to doc/core.txt
      cache_mngr: Automatically allocate socket if needed
      test-cache-mngr: Let the cache manager allocate the socket
      cache_mngr: Fix memory corruption after resizing
      nl: Make nl_recvmsgs() return the number of netlink messages processed
      cache_mngr: Let nl_cache_mngr_data_ready() read multiple messages
      cache_mngr: API doc updates
      cache_mngr: Provide nl_cache_mngr_info() to pring cache manager details
      test-cache-mngr: Allow for management of arbitary caches via argument string
      cache_mngr: Make providing the result pointer to nl_cache_mngr_add() optional
      genl: Make genl_unregister() a NOP if NULL pointer is passed
      cache: improve documentation of co_event_filter
      cache: Add co_include_event allowing caches to provide their own nl_cache_include() implementation
      object: Add functions to access the object type, cache and object ops
      3.2.8 release

The source tarball can be found at the usual location:
<a class="moz-txt-link-freetext" href="http://www.infradead.org/~tgr/libnl/">http://www.infradead.org/~tgr/libnl/</a>


Thomas

_______________________________________________
libnl mailing list
<a class="moz-txt-link-abbreviated" href="mailto:libnl@lists.infradead.org">libnl@lists.infradead.org</a>
<a class="moz-txt-link-freetext" href="http://lists.infradead.org/mailman/listinfo/libnl">http://lists.infradead.org/mailman/listinfo/libnl</a>

!SIG:4f99175a29451982320748!

</pre>
    </blockquote>
  </body>
</html>