]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virMacAddrCompare for comparing MAC addresses
authorRichard W.M. Jones <rjones@redhat.com>
Wed, 27 Feb 2008 16:14:44 +0000 (16:14 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Wed, 27 Feb 2008 16:14:44 +0000 (16:14 +0000)
* src/util.c, src/util.h, src/libvirt_sym.version: Added
  virMacAddrCompare utility function for comparing MAC
  addresses.
* src/virsh.c, src/xm_internal.c: Use virMacAddrCompare
  to compare addresses.  (Shigeki Sakamoto and Richard Jones).

ChangeLog
src/internal.h
src/libvirt_sym.version
src/util.c
src/util.h
src/virsh.c
src/xm_internal.c

index cfb239d326abe0c61f804f6ba0faaa19add6b393..0caae5e971c868afdbd1006d7e4d6ab43e16ca07 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Wed Feb 27 16:11:00 UTC 2008 Richard W.M. Jones <rjones@redhat.com>
+
+       virMacAddrCompare for comparing MAC addresses
+       * src/util.c, src/util.h, src/libvirt_sym.version: Added
+         virMacAddrCompare utility function for comparing MAC
+         addresses.
+       * src/virsh.c, src/xm_internal.c: Use virMacAddrCompare
+         to compare addresses.  (Shigeki Sakamoto and Richard Jones).
+
 Wed Feb 27 15:39:10 CET 2008 Jim Meyering <meyering@redhat.com>
 
        Avoid "make distcheck" failure.
index 7c6e13e45573d4e6ba6a64a5410dd3857a1348fc..d3a566459a0cec875b6cbc1782f18cdd67fbe6c9 100644 (file)
@@ -54,7 +54,6 @@ extern "C" {
 #define STRNEQLEN(a,b,n) (strncmp((a),(b),(n)) != 0)
 #define STRCASENEQLEN(a,b,n) (strncasecmp((a),(b),(n)) != 0)
 
-
 /* If configured with --enable-debug=yes then library calls
  * are printed to stderr for debugging.
  */
index 38b631e118f60556d2219af17b4a7490fff1e053..15c05dc3575cbb68542354a43cae4ea176c3df88 100644 (file)
         __virBufferAdd;
         __virBufferAddChar;
 
+       __virMacAddrCompare;
+
     local: *;
 };
index 91a5f813a2ec8f54028d3578fb11ed7d58893fcd..4d6154077cf391d28d5e57346bb223154a94ab42 100644 (file)
@@ -654,6 +654,16 @@ virParseNumber(const char **str)
     return (ret);
 }
 
+/* Use this function when comparing two MAC addresses.  It deals with
+ * string case compare and will eventually be extended to understand
+ * that 01:02:03:04:05:06 is the same as 1:2:3:4:5:6.
+ */
+int
+__virMacAddrCompare (const char *mac1, const char *mac2)
+{
+    return strcasecmp (mac1, mac2);
+}
+
 /*
  * Local variables:
  *  indent-tabs-mode: nil
index 4c12200c9f73fac7ceefb26a8e7042682c67db84..25a3ab831953f8320732ed0d2c15327e2c0c627a 100644 (file)
@@ -79,8 +79,10 @@ int __virStrToLong_ull(char const *s,
                       unsigned long long *result);
 #define virStrToLong_ull(s,e,b,r) __virStrToLong_ull((s),(e),(b),(r))
 
+int __virMacAddrCompare (const char *mac1, const char *mac2);
+#define virMacAddrCompare(mac1,mac2) __virMacAddrCompare((mac1),(mac2))
+
 void virSkipSpaces(const char **str);
 int virParseNumber(const char **str);
 
-
 #endif /* __VIR_UTIL_H__ */
index 356c4963612fdf8a13522f94ab4942fbc291958f..caeea458e82e119549d1b925608ce0917d76f2dc 100644 (file)
@@ -4742,7 +4742,7 @@ cmdDetachInterface(vshControl * ctl, vshCmd * cmd)
         while (cur != NULL) {
             if (cur->type == XML_ELEMENT_NODE && xmlStrEqual(cur->name, BAD_CAST "mac")) {
                 tmp_mac = xmlGetProp(cur, BAD_CAST "address");
-                diff_mac = xmlStrcasecmp(tmp_mac, BAD_CAST mac);
+                diff_mac = virMacAddrCompare ((char *) tmp_mac, mac);
                 xmlFree(tmp_mac);
                 if (!diff_mac) {
                     goto hit;
index b12d99cecf12ca2b39e59cb7cabf45a2ec0c14d1..6b4b4d740df3e50ef0556cbb845eb09a6410ccd2 100644 (file)
@@ -53,6 +53,7 @@
 #include "xml.h"
 #include "buf.h"
 #include "uuid.h"
+#include "util.h"
 
 static int xenXMConfigSetString(virConfPtr conf, const char *setting,
                                 const char *str);
@@ -2813,7 +2814,7 @@ xenXMAttachInterface(virDomainPtr domain, xmlXPathContextPtr ctxt, int hvm,
                 key = nextkey;
             }
 
-            if (!(strcmp(dommac, (const char *) mac))) {
+            if (virMacAddrCompare (dommac, (const char *) mac) == 0) {
                 if (autoassign) {
                     free(mac);
                     mac = NULL;
@@ -3088,7 +3089,7 @@ xenXMDomainDetachDevice(virDomainPtr domain, const char *xml) {
                     mac = nextmac;
                 }
 
-                if (!(strcmp(dommac, (const char *) key)))
+                if (virMacAddrCompare (dommac, (const char *) key) == 0)
                     break;
             }
         skip: