• L
    conf: move 'generated' member from virMacAddr to virDomainNetDef · e62cb4a9
    Laine Stump 提交于
    Commit 7e62c4cd (first appearing in libvirt-3.9.0 as a resolution
    to rhbz #1343919) added a "generated" attribute to virMacAddr that was
    set whenever a mac address was auto-generated by libvirt. This
    knowledge was used in a single place - when trying to match a NetDef
    from the Domain to Delete with user-provided XML. Since the XML parser
    always auto-generates a MAC address for NetDefs when none is provided,
    it was previously impossible to make a search where the MAC address
    isn't significant, but the addition of the "generated" attribute made
    it possible for the search function to ignore auto-generated MACs.
    
    This implementation had a problem though - it was adding a field to a
    "low level" struct - virMacAddr - which is used in other places with
    the assumption that it contains exactly a 6 byte MAC address and
    nothing else. In particular, virNWFilterSnoopEthHdr uses virMacAddr as
    part of the definition of an ethernet packet header, whose layout must
    of course match an actual ethernet packet. Adding the extra bools into
    virNWFilterSnoopEthHdr caused the nwfilter driver's "IP discovery via
    DHCP packet snooping" functionality to mysteriously stop working.
    
    In order to fix that behavior, and prevent potential future similar
    odd behavior, this patch moves the "generated" member out of
    virMacAddr (so that it is again really is just a MAC address) into
    virDomainNetDef, and sets it only when virDomainNetGenerateMAC() is
    called from virDomainNetDefParseXML() (which is the only time we care
    about it).
    
    Resolves: https://bugzilla.redhat.com/1529338
    
    (It should also be applied to any maintenance branch that applies
    commit 7e62c4cd and friends to resolve
    https://bugzilla.redhat.com/1343919)
    Signed-off-by: NLaine Stump <laine@laine.org>
    e62cb4a9
virmacaddr.h 2.5 KB