On 03/19/2012 01:46 PM, Eric Blake wrote: > On 03/19/2012 11:32 AM, Laine Stump wrote: >> A few times libvirt users manually setting mac addresses have >> complained of networking failure that ends up being due to a multicast >> mac address being used for a guest interface. This patch prevents that >> by loggin an error and failing if a multicast mac address is > s/loggin/logging/ > >> encountered in each of the three following cases: >> >> 1) domain xml <interface> mac address. >> 2) network xml bridge mac address. >> 3) network xml dhcp/host mac address. >> >> There are several other places where a mac address cna be input that > s/cna/can/ > >> aren't controlled in this manner because failure to do so has no >> consequences (e.g., if the address will be used to search through >> existing interfaces for a match). >> >> The RNG has been updated to add multiMacAddr and uniMacAddr along with >> the existing macAddr, and macAddr was switched to uniMacAddr where >> appropriate. >> --- >> docs/schemas/basictypes.rng | 17 ++++++++++++++++- >> docs/schemas/domaincommon.rng | 6 +++--- >> docs/schemas/network.rng | 4 ++-- >> src/conf/domain_conf.c | 8 +++++++- >> src/conf/network_conf.c | 33 ++++++++++++++++++++++++--------- >> src/libvirt_private.syms | 2 ++ >> src/util/virmacaddr.c | 13 +++++++++++++ >> src/util/virmacaddr.h | 3 ++- > Is there any way to add a test of an expected error, where we prove that > a multicast mac fails to validate? But since the existing tests use > unicast addrs, and those still validate, you've at least tested for no > regressions on sane usage. > >> + <!-- The lowest bit of the 1st byte is the "multicast" bit. a --> >> + <!-- uniMacAddr requires that bit to be 0, and a multiMacAddr --> >> + <!-- requires it to be 1. Plain macAddr will accept either. --> >> + <!-- Currently there is no use of multiMacAddr in libvirt, it --> >> + <!-- is included here for documentation/comparison purposes. --> >> + <define name="uniMacAddr"> >> + <data type="string"> >> + <param name="pattern">[a-fA-F0-9][02468aAcCeE](:[a-fA-F0-9]{2}){5}</param> >> + </data> >> + </define> >> + <define name="multiMacAddr"> >> + <data type="string"> >> + <param name="pattern">[a-fA-F0-9][13579bBdDfF](:[a-fA-F0-9]{2}){5}</param> >> + </data> >> + </define> >> <define name="macAddr"> >> <data type="string"> >> - <param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param> >> + <param name="pattern">[a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}</param> > Changed to match the earlier patterns. Nice patterns. > > ACK. If you do figure out how to add a negative test for expected > validation failure, I'm okay if you submit it as a separate followup patch. > Pushed (I agree that negative tests are in general a weak spot of the xml2argv and xml2xml tests, just can't afford the distraction to deal with it now). -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list