Re: [libvirt] [PATCH 06/33] Add an API for retrieving the MAC address of an interface

2011-11-08 Thread Stefan Berger

On 11/03/2011 01:30 PM, Daniel P. Berrange wrote:

From: Daniel P. Berrangeberra...@redhat.com

* src/util/bridge.c, src/util/bridge.h: Add virNetDevGetMAC
---
  src/util/bridge.c |   35 +++
  src/util/bridge.h |3 +++
  2 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/src/util/bridge.c b/src/util/bridge.c
index 247ce93..3a7012c 100644
--- a/src/util/bridge.c
+++ b/src/util/bridge.c
@@ -358,6 +358,41 @@ cleanup:
  }

  /**
+ * virNetDevGetMAC:
+ * @ifname: interface name to set MTU for
+ * @macaddr: MAC address (VIR_MAC_BUFLEN in size)
+ *
+ * This function gets the @macaddr for a given interface @ifname.
+ *
+ * Returns 0 in case of success or -1 on failure
+ */
+int virNetDevGetMAC(const char *ifname,
+unsigned char *macaddr)
+{
+int fd = -1;
+int ret = -1;
+struct ifreq ifr;
+
+if ((fd = virNetDevSetupControl(ifname,ifr))  0)
+return -1;
+
+if (ioctl(fd, SIOCGIFHWADDR,ifr)  0) {
+virReportSystemError(errno,
+ _(Cannot get interface MAC on '%s'),
+ ifname);
+goto cleanup;
+}
+
+memcpy(macaddr, ifr.ifr_hwaddr.sa_data, VIR_MAC_BUFLEN);
+
+ret = 0;
+
+cleanup:
+VIR_FORCE_CLOSE(fd);
+return ret;
+}
+
+/**
   * virNetDevGetMTU:
   * @ifname: interface name get MTU for
   *
diff --git a/src/util/bridge.h b/src/util/bridge.h
index 0cc89c0..7504925 100644
--- a/src/util/bridge.h
+++ b/src/util/bridge.h
@@ -112,6 +112,9 @@ int virNetDevTapCreate(char **ifname,
  int virNetDevSetMAC(const char *ifname,
  const unsigned char *macaddr)
  ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
+int virNetDevGetMAC(const char *ifname,
+unsigned char *macaddr)
+ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
  int virNetDevSetMTU(const char *ifname,
  int mtu)
  ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;

I like the short patches :-)

ACK

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 06/33] Add an API for retrieving the MAC address of an interface

2011-11-03 Thread Daniel P. Berrange
From: Daniel P. Berrange berra...@redhat.com

* src/util/bridge.c, src/util/bridge.h: Add virNetDevGetMAC
---
 src/util/bridge.c |   35 +++
 src/util/bridge.h |3 +++
 2 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/src/util/bridge.c b/src/util/bridge.c
index 247ce93..3a7012c 100644
--- a/src/util/bridge.c
+++ b/src/util/bridge.c
@@ -358,6 +358,41 @@ cleanup:
 }
 
 /**
+ * virNetDevGetMAC:
+ * @ifname: interface name to set MTU for
+ * @macaddr: MAC address (VIR_MAC_BUFLEN in size)
+ *
+ * This function gets the @macaddr for a given interface @ifname.
+ *
+ * Returns 0 in case of success or -1 on failure
+ */
+int virNetDevGetMAC(const char *ifname,
+unsigned char *macaddr)
+{
+int fd = -1;
+int ret = -1;
+struct ifreq ifr;
+
+if ((fd = virNetDevSetupControl(ifname, ifr))  0)
+return -1;
+
+if (ioctl(fd, SIOCGIFHWADDR, ifr)  0) {
+virReportSystemError(errno,
+ _(Cannot get interface MAC on '%s'),
+ ifname);
+goto cleanup;
+}
+
+memcpy(macaddr, ifr.ifr_hwaddr.sa_data, VIR_MAC_BUFLEN);
+
+ret = 0;
+
+cleanup:
+VIR_FORCE_CLOSE(fd);
+return ret;
+}
+
+/**
  * virNetDevGetMTU:
  * @ifname: interface name get MTU for
  *
diff --git a/src/util/bridge.h b/src/util/bridge.h
index 0cc89c0..7504925 100644
--- a/src/util/bridge.h
+++ b/src/util/bridge.h
@@ -112,6 +112,9 @@ int virNetDevTapCreate(char **ifname,
 int virNetDevSetMAC(const char *ifname,
 const unsigned char *macaddr)
 ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
+int virNetDevGetMAC(const char *ifname,
+unsigned char *macaddr)
+ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
 int virNetDevSetMTU(const char *ifname,
 int mtu)
 ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
-- 
1.7.6.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list