On 3/19/19 8:46 AM, Daniel P. Berrangé wrote:
> Introduce a virNetworkPortDefPtr struct to represent the data associated
> with a virtual network port. Add APIs for parsing/formatting XML docs
> with the data.
>
> Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
> ---
> src/conf/Makefile.inc.am | 2 +
> src/conf/virnetworkportdef.c | 514 ++++++++++++++++++
> src/conf/virnetworkportdef.h | 112 ++++
> src/libvirt_private.syms | 10 +
> tests/Makefile.am | 7 +
> .../plug-bridge-mactbl.xml | 9 +
> .../virnetworkportxml2xmldata/plug-bridge.xml | 12 +
> .../virnetworkportxml2xmldata/plug-direct.xml | 12 +
> .../plug-hostdev-pci.xml | 12 +
> tests/virnetworkportxml2xmldata/plug-none.xml | 8 +
> tests/virnetworkportxml2xmltest.c | 104 ++++
> 11 files changed, 802 insertions(+)
> create mode 100644 src/conf/virnetworkportdef.c
> create mode 100644 src/conf/virnetworkportdef.h
> create mode 100644 tests/virnetworkportxml2xmldata/plug-bridge-mactbl.xml
> create mode 100644 tests/virnetworkportxml2xmldata/plug-bridge.xml
> create mode 100644 tests/virnetworkportxml2xmldata/plug-direct.xml
> create mode 100644 tests/virnetworkportxml2xmldata/plug-hostdev-pci.xml
> create mode 100644 tests/virnetworkportxml2xmldata/plug-none.xml
> create mode 100644 tests/virnetworkportxml2xmltest.c
>
> diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am
> index 9b4d80485b..388917c5dd 100644
> --- a/src/conf/Makefile.inc.am
> +++ b/src/conf/Makefile.inc.am
> @@ -5,6 +5,8 @@ NETDEV_CONF_SOURCES = \
> conf/netdev_vport_profile_conf.c \
> conf/netdev_vlan_conf.h \
> conf/netdev_vlan_conf.c \
> + conf/virnetworkportdef.h \
> + conf/virnetworkportdef.c \
> $(NULL)
> DOMAIN_CONF_SOURCES = \
> diff --git a/src/conf/virnetworkportdef.c b/src/conf/virnetworkportdef.c
> new file mode 100644
> index 0000000000..7023d9607e
> --- /dev/null
> +++ b/src/conf/virnetworkportdef.c
> @@ -0,0 +1,514 @@
> +/*
> + * virnetworkportdef.c: network port XML processing
> + *
> + * Copyright (C) 2018 Red Hat, Inc.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library. If not, see
> + * <
http://www.gnu.org/licenses/>.
> + */
> +
> +#include <config.h>
> +
> +#include "viralloc.h"
> +#include "virerror.h"
> +#include "virstring.h"
> +#include "virfile.h"
> +#include "virnetworkportdef.h"
> +#include "network_conf.h"
> +
> +#define VIR_FROM_THIS VIR_FROM_NETWORK
> +
> +VIR_ENUM_IMPL(virNetworkPortPlug, VIR_NETWORK_PORT_PLUG_TYPE_LAST,
> + "none", "bridge", "direct",
"hostdev-pci");
Are we going to need to differentiate between veth and macvtap later? Having
the choice implied based on which hypervisor it's coming from seems
potentially troublesome...
I view those as different axis.
"bridge" can be implemented with "tap" or "veth"
"direct" can be implemented with "macvtap" or "macvlan"
IOW, if we did need to distinguish tap & veth later, we can add
them as a separate attribute in the XML
Regards,
Daniel
--
|: