Re: [Qemu-devel] [PATCH] net: disallow to specify multicast MAC address

2013-10-18 Thread Stefan Hajnoczi
On Thu, Oct 17, 2013 at 07:06:28PM +0400, Dmitry Krivenok wrote:
 Added explicit check of MAC address specified via macaddr option.
 Multicast MAC addresses are no longer allowed.
 This fixes bug #495566.
 
 Signed-off-by: Dmitry V. Krivenok krivenok.dmi...@gmail.com
 ---
  net/net.c  | 5 +
  net/util.c | 5 +
  net/util.h | 2 ++
  3 files changed, 12 insertions(+)

I dropped the ? true : false when merging the patch.

Thanks, applied to my net tree:
https://github.com/stefanha/qemu/commits/net

Stefan



Re: [Qemu-devel] [PATCH] net: disallow to specify multicast MAC address

2013-10-18 Thread Stefan Hajnoczi
On Thu, Oct 17, 2013 at 07:06:28PM +0400, Dmitry Krivenok wrote:
 +bool net_macaddr_is_multicast(uint8_t *macaddr)
 +{
 +return (macaddr[0] % 2) ? true : false;
 +}

Please use is_multicast_ether_addr() instead.  Thanks Amos for pointing
out this function is duplicated.

I have dropped this patch and will merge the next revision instead.



[Qemu-devel] [PATCH] net: disallow to specify multicast MAC address

2013-10-17 Thread Dmitry Krivenok
Added explicit check of MAC address specified via macaddr option.
Multicast MAC addresses are no longer allowed.
This fixes bug #495566.

Signed-off-by: Dmitry V. Krivenok krivenok.dmi...@gmail.com
---
 net/net.c  | 5 +
 net/util.c | 5 +
 net/util.h | 2 ++
 3 files changed, 12 insertions(+)

diff --git a/net/net.c b/net/net.c
index c330c9a..b3a42e5 100644
--- a/net/net.c
+++ b/net/net.c
@@ -689,6 +689,11 @@ static int net_init_nic(const NetClientOptions
*opts, const char *name,
 error_report(invalid syntax for ethernet address);
 return -1;
 }
+if (nic-has_macaddr 
+net_macaddr_is_multicast(nd-macaddr.a)) {
+error_report(NIC cannot have multicast MAC address (odd 1st byte));
+return -1;
+}
 qemu_macaddr_default_if_unset(nd-macaddr);

 if (nic-has_vectors) {
diff --git a/net/util.c b/net/util.c
index 7e95076..b86ac03 100644
--- a/net/util.c
+++ b/net/util.c
@@ -58,3 +58,8 @@ int net_parse_macaddr(uint8_t *macaddr, const char *p)

 return 0;
 }
+
+bool net_macaddr_is_multicast(uint8_t *macaddr)
+{
+return (macaddr[0] % 2) ? true : false;
+}
diff --git a/net/util.h b/net/util.h
index 10c7da9..4581cb7 100644
--- a/net/util.h
+++ b/net/util.h
@@ -26,7 +26,9 @@
 #define QEMU_NET_UTIL_H

 #include stdint.h
+#include stdbool.h

 int net_parse_macaddr(uint8_t *macaddr, const char *p);
+bool net_macaddr_is_multicast(uint8_t *macaddr);

 #endif /* QEMU_NET_UTIL_H */
-- 
1.8.3



Re: [Qemu-devel] [PATCH] net: disallow to specify multicast MAC address

2013-10-17 Thread Eric Blake
On 10/17/2013 09:06 AM, Dmitry Krivenok wrote:
 Added explicit check of MAC address specified via macaddr option.
 Multicast MAC addresses are no longer allowed.
 This fixes bug #495566.
 
 Signed-off-by: Dmitry V. Krivenok krivenok.dmi...@gmail.com
 ---

  }
 +
 +bool net_macaddr_is_multicast(uint8_t *macaddr)
 +{
 +return (macaddr[0] % 2) ? true : false;

Personally, I find 'expr ? true : false' rather verbose; why not just:

return macaddr[0] % 2;

But as you're not the first person to do this (a quick grep found two
other offenders in the code base), it's not a strong reason for a respin.

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature


Re: [Qemu-devel] [PATCH] net: disallow to specify multicast MAC address

2013-10-17 Thread Dmitry Krivenok
 Personally, I find 'expr ? true : false' rather verbose; why not just:

 return macaddr[0] % 2;

I agree, your variant is shorter and easier to read.



[Qemu-devel] [PATCH] net: disallow to specify multicast MAC address

2013-10-17 Thread Dmitry Krivenok
Added explicit check of MAC address specified via macaddr option.
Multicast MAC addresses are no longer allowed.
This fixes bug #495566.

Signed-off-by: Dmitry V. Krivenok krivenok.dmi...@gmail.com
---
 net/net.c  | 5 +
 net/util.c | 5 +
 net/util.h | 2 ++
 3 files changed, 12 insertions(+)

diff --git a/net/net.c b/net/net.c
index c330c9a..b3a42e5 100644
--- a/net/net.c
+++ b/net/net.c
@@ -689,6 +689,11 @@ static int net_init_nic(const NetClientOptions
*opts, const char *name,
 error_report(invalid syntax for ethernet address);
 return -1;
 }
+if (nic-has_macaddr 
+net_macaddr_is_multicast(nd-macaddr.a)) {
+error_report(NIC cannot have multicast MAC address (odd 1st byte));
+return -1;
+}
 qemu_macaddr_default_if_unset(nd-macaddr);

 if (nic-has_vectors) {
diff --git a/net/util.c b/net/util.c
index 7e95076..b86ac03 100644
--- a/net/util.c
+++ b/net/util.c
@@ -58,3 +58,8 @@ int net_parse_macaddr(uint8_t *macaddr, const char *p)

 return 0;
 }
+
+bool net_macaddr_is_multicast(uint8_t *macaddr)
+{
+return (macaddr[0] % 2) ? true : false;
+}
diff --git a/net/util.h b/net/util.h
index 10c7da9..4581cb7 100644
--- a/net/util.h
+++ b/net/util.h
@@ -26,7 +26,9 @@
 #define QEMU_NET_UTIL_H

 #include stdint.h
+#include stdbool.h

 int net_parse_macaddr(uint8_t *macaddr, const char *p);
+bool net_macaddr_is_multicast(uint8_t *macaddr);

 #endif /* QEMU_NET_UTIL_H */
-- 
1.8.3