[libvirt] [PATCH 06/33] Add an API for retrieving the MAC address of an interface
Stefan Berger
stefanb at linux.vnet.ibm.com
Tue Nov 8 14:24:46 UTC 2011
On 11/03/2011 01:30 PM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange"<berrange at 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
More information about the libvir-list
mailing list