On Fri, Mar 1, 2013 at 8:44 AM, Eric Blake <eblake(a)redhat.com>
wrote:
> On 03/01/2013 03:18 AM, Daniel P. Berrange wrote:
>>>
>>> So the conclusion is that I see no extra harm in calling nl_geterror().
ACK.
>>
>> Except the API signature is different, so my patch won't work with
>> both versions :-(
>
> Sounds like its time for a wrapper function that #ifdefs away the
> difference in underlying API calls between libnl1 and libnl3, with the
> bulk of our code using our wrapper instead of direct nl_* functions.
> And by the time we convert our code to all go through our wrappers, how
> much simpler is it to have our wrapper do the direct socket work instead
> of catering to two parallel nl_ abstractions?
>
> --
> Eric Blake eblake redhat com +1-919-301-3266
> Libvirt virtualization library
http://libvirt.org
>
This is the same road I went down with for an application at work. By
the time I got close to abstracting away all the badness, I had a
working netlink layer and dropped libnl entirely. I wasn't using all
the complex gennl types that libnl contains and abstracts however. A
reasonable read is libnfnetlink to see how really simple it is to use
netlink.
https://git.netfilter.org/libnfnetlink/
Thanks for the tip. I don't have time to work on this myself, but I'd
encourage anyone interested to cook up a patch to remove libvirt's
use of the nl_ prefixed functions (leaving only the nla_ functions)
Daniel
--
|: