[libvirt] [PATCH v3 2/4] Make virNetDevSetupControl() public.

Eric Blake eblake at redhat.com
Mon Feb 4 22:38:03 UTC 2013


On 01/26/2013 08:13 AM, Roman Bogorodskiy wrote:
> ---
>  src/libvirt_private.syms | 1 +
>  src/util/virnetdev.c     | 6 ++++--
>  src/util/virnetdev.h     | 6 ++++++
>  3 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index c589236..8ad4634 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1518,6 +1518,7 @@ virNetDevSetMTUFromDevice;
>  virNetDevSetName;
>  virNetDevSetNamespace;
>  virNetDevSetOnline;
> +virNetDevSetupControl;
>  virNetDevValidateConfig;
>  
>  
> diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
> index 503db9d..9ee84c3 100644
> --- a/src/util/virnetdev.c
> +++ b/src/util/virnetdev.c
> @@ -78,8 +78,9 @@ static int virNetDevSetupControlFull(const char *ifname,
>  }
>  
>  
> -static int virNetDevSetupControl(const char *ifname,
> -                                 struct ifreq *ifr)
> +int
> +virNetDevSetupControl(const char *ifname,
> +                          struct ifreq *ifr)

Indentation is off on the second line, now (the first s of 'struct'
should be directly below the c of 'const').

>  {
>  #if defined(__FreeBSD__)
>      return virNetDevSetupControlFull(ifname, ifr, AF_LOCAL, SOCK_DGRAM);
> @@ -87,6 +88,7 @@ static int virNetDevSetupControl(const char *ifname,
>      return virNetDevSetupControlFull(ifname, ifr, AF_PACKET, SOCK_DGRAM);
>  #endif
>  }
> +#else /* !(defined(HAVE_STRUCT_IFREQ) || defined(__FreeBSD__)) */
>  #endif

What good is it to add an #else with no body?  If you are trying to mark
the end of an #if, it might be better to do:

#endif /* defined(HAVE_STRUCT_IFREQ) || defined(__FreeBSD__) */

Meanwhile, this particular change fits better in patch 1/4, and needs to
account for my suggestions of doing a feature probe rather than an OS probe.

> +++ b/src/util/virnetdev.h
> @@ -28,6 +28,12 @@
>  # include "virmacaddr.h"
>  # include "virpci.h"
>  
> +# include <net/if.h>

<net/if.h> is a standard header (and therefore guaranteed by gnulib), but...

> +
> +int virNetDevSetupControl(const char *ifname,
> +                          struct ifreq *ifr)

struct ifreq is a non-standard type, and therefore this will cause
compilation errors on platforms that lack this struct (hello mingw).  We
have two choices: make a new typedef virIfreqPtr that maps to 'struct
ifreq *' on Linux and FreeBSD, and to 'void *' on other platforms; or
make this prototype be conditional on whether HAVE_STRUCT_IFREQ (or
whatever the right name is) was determined at configure time.

> +    ATTRIBUTE_RETURN_CHECK;

It is probably also worth using ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2).

> +
>  int virNetDevExists(const char *brname)
>      ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
>  
> 

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130204/6b4e2c4d/attachment-0001.sig>


More information about the libvir-list mailing list