• L
    util: fix botched check for new netlink request filters · 6b3edda2
    Laine Stump 提交于
    This is an adjustment to the fix for
    
      https://bugzilla.redhat.com/show_bug.cgi?id=889319
    
    to account for two bonehead mistakes I made.
    
    commit ac2797cf attempted to fix a
    problem with netlink in newer kernels requiring an extra attribute
    with a filter flag set in order to receive an IFLA_VFINFO_LIST from
    netlink. Unfortunately, the #ifdef that protected against compiling it
    in on systems without the new flag went a bit too far, assuring that
    the new code would *never* be compiled, and even if it had, the code
    was incorrect.
    
    The first problem was that, while some IFLA_* enum values are also
    their existence at compile time, IFLA_EXT_MASK *isn't* #defined, so
    checking to see if it's #defined is not a valid method of determining
    whether or not to add the attribute. Fortunately, the flag that is
    being set (RTEXT_FILTER_VF) *is* #defined, and it is never present if
    IFLA_EXT_MASK isn't, so it's sufficient to just check for that flag.
    
    And to top it off, due to the code not actually compiling when I
    thought it did, I didn't realize that I'd been given the wrong arglist
    to nla_put() - you can't just send a const value to nla_put, you have
    to send it a pointer to memory containing what you want to add to the
    message, along with the length of that memory.
    
    This time I've actually sent the patch over to the other machine
    that's experiencing the problem, applied it to the branch being used
    (0.10.2) and verified that it works properly, i.e. it does fix the
    problem it's supposed to fix. :-/
    (cherry picked from commit 7c366506)
    6b3edda2
virnetdev.c 43.8 KB