On 06/21/2011 10:08 AM, Stefan Berger wrote:
In a first cleanup step, make nlComm from macvtap.c commonly
available
for other code to use. Since nlComm uses Linux-specific structures as
parameters it's prototype is only visible on Linux.
Signed-off-by: Stefan Berger <stefanb(a)linux.vnet.ibm.com>
---
src/Makefile.am | 1
src/libvirt_private.syms | 4 +
The code motion looks okay to me. However:
Exporting the private symbols says the symbols must be available
everywhere...
+#if __linux__
+int nlComm(struct nl_msg *nl_msg,
+ unsigned char **respbuf, unsigned int *respbuflen,
+ int nl_pid)
+{
+
+#endif /* __linux__ */
so you should provide an #else clause with a dummy implementation that
always fails, as well as a dummy:
struct nl_msg;
forward prototype to allow compilation on non-Linux.
> +
> Index: libvirt-acl/src/util/netlink.h
> ===================================================================
> --- /dev/null
> +++ libvirt-acl/src/util/netlink.h
> @@ -0,0 +1,14 @@
> +#ifndef __VIR_NETLINK_H__
> +# define __VIR_NETLINK_H__
> +
> +# if __linux__
> +
> +# include <netlink/msg.h>
> +
> +int nlComm(struct nl_msg *nl_msg,
> + unsigned char **respbuf, unsigned int *respbuflen,
> + int nl_pid);
+
+#endif /* __linux__ */
at which point this header can be unconditional.
+++ libvirt-acl/src/libvirt_private.syms
@@ -668,6 +668,10 @@ virResizeN;
virShrinkN;
+#netlink.h
+nlComm;
+
An alternative would be finding a way to only conditionally export
nlComm on Linux, by sticking it in a separate .syms file only when
actually used.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org