There's no code sharing between virNWFilterDef and virNWFilterBindingDefPtr types, so it is clearer if they live in separate source files and headers. Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> --- src/conf/Makefile.inc.am | 2 + src/conf/nwfilter_conf.c | 54 --------------------- src/conf/nwfilter_conf.h | 17 ------- src/conf/virnwfilterbindingdef.c | 83 ++++++++++++++++++++++++++++++++ src/conf/virnwfilterbindingdef.h | 47 ++++++++++++++++++ src/libvirt_private.syms | 7 ++- 6 files changed, 137 insertions(+), 73 deletions(-) create mode 100644 src/conf/virnwfilterbindingdef.c create mode 100644 src/conf/virnwfilterbindingdef.h diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am index 6d7b0f076b..f5fb323233 100644 --- a/src/conf/Makefile.inc.am +++ b/src/conf/Makefile.inc.am @@ -85,6 +85,8 @@ NWFILTER_CONF_SOURCES = \ conf/nwfilter_conf.h \ conf/virnwfilterobj.c \ conf/virnwfilterobj.h \ + conf/virnwfilterbindingdef.c \ + conf/virnwfilterbindingdef.h \ $(NULL) STORAGE_CONF_SOURCES = \ diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 6422f6b8ea..de26a6d034 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -3265,57 +3265,3 @@ virNWFilterRuleIsProtocolEthernet(virNWFilterRuleDefPtr rule) return true; return false; } - - -void -virNWFilterBindingDefFree(virNWFilterBindingDefPtr def) -{ - if (!def) - return; - - VIR_FREE(def->ownername); - VIR_FREE(def->portdevname); - VIR_FREE(def->linkdevname); - VIR_FREE(def->filter); - virHashFree(def->filterparams); - - VIR_FREE(def); -} - - -virNWFilterBindingDefPtr -virNWFilterBindingDefCopy(virNWFilterBindingDefPtr src) -{ - virNWFilterBindingDefPtr ret; - - if (VIR_ALLOC(ret) < 0) - return NULL; - - if (VIR_STRDUP(ret->ownername, src->ownername) < 0) - goto error; - - memcpy(ret->owneruuid, src->owneruuid, sizeof(ret->owneruuid)); - - if (VIR_STRDUP(ret->portdevname, src->portdevname) < 0) - goto error; - - if (VIR_STRDUP(ret->linkdevname, src->linkdevname) < 0) - goto error; - - ret->mac = src->mac; - - if (VIR_STRDUP(ret->filter, src->filter) < 0) - goto error; - - if (!(ret->filterparams = virNWFilterHashTableCreate(0))) - goto error; - - if (virNWFilterHashTablePutAll(src->filterparams, ret->filterparams) < 0) - goto error; - - return ret; - - error: - virNWFilterBindingDefFree(ret); - return NULL; -} diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h index c72171f2f2..08fc07c55c 100644 --- a/src/conf/nwfilter_conf.h +++ b/src/conf/nwfilter_conf.h @@ -545,19 +545,6 @@ struct _virNWFilterDef { virNWFilterEntryPtr *filterEntries; }; -typedef struct _virNWFilterBindingDef virNWFilterBindingDef; -typedef virNWFilterBindingDef *virNWFilterBindingDefPtr; - -struct _virNWFilterBindingDef { - char *ownername; - unsigned char owneruuid[VIR_UUID_BUFLEN]; - char *portdevname; - char *linkdevname; - virMacAddr mac; - char *filter; - virHashTablePtr filterparams; -}; - typedef enum { STEP_APPLY_NEW, @@ -663,10 +650,6 @@ virNWFilterRuleIsProtocolIPv6(virNWFilterRuleDefPtr rule); bool virNWFilterRuleIsProtocolEthernet(virNWFilterRuleDefPtr rule); -void -virNWFilterBindingDefFree(virNWFilterBindingDefPtr binding); -virNWFilterBindingDefPtr -virNWFilterBindingDefCopy(virNWFilterBindingDefPtr src); VIR_ENUM_DECL(virNWFilterRuleAction); VIR_ENUM_DECL(virNWFilterRuleDirection); diff --git a/src/conf/virnwfilterbindingdef.c b/src/conf/virnwfilterbindingdef.c new file mode 100644 index 0000000000..c7533d4063 --- /dev/null +++ b/src/conf/virnwfilterbindingdef.c @@ -0,0 +1,83 @@ +/* + * virnwfilterbindingdef.c: network filter binding 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 "nwfilter_params.h" +#include "virnwfilterbindingdef.h" + + +#define VIR_FROM_THIS VIR_FROM_NWFILTER + +void +virNWFilterBindingDefFree(virNWFilterBindingDefPtr def) +{ + if (!def) + return; + + VIR_FREE(def->ownername); + VIR_FREE(def->portdevname); + VIR_FREE(def->linkdevname); + VIR_FREE(def->filter); + virHashFree(def->filterparams); + + VIR_FREE(def); +} + + +virNWFilterBindingDefPtr +virNWFilterBindingDefCopy(virNWFilterBindingDefPtr src) +{ + virNWFilterBindingDefPtr ret; + + if (VIR_ALLOC(ret) < 0) + return NULL; + + if (VIR_STRDUP(ret->ownername, src->ownername) < 0) + goto error; + + memcpy(ret->owneruuid, src->owneruuid, sizeof(ret->owneruuid)); + + if (VIR_STRDUP(ret->portdevname, src->portdevname) < 0) + goto error; + + if (VIR_STRDUP(ret->linkdevname, src->linkdevname) < 0) + goto error; + + ret->mac = src->mac; + + if (VIR_STRDUP(ret->filter, src->filter) < 0) + goto error; + + if (!(ret->filterparams = virNWFilterHashTableCreate(0))) + goto error; + + if (virNWFilterHashTablePutAll(src->filterparams, ret->filterparams) < 0) + goto error; + + return ret; + + error: + virNWFilterBindingDefFree(ret); + return NULL; +} diff --git a/src/conf/virnwfilterbindingdef.h b/src/conf/virnwfilterbindingdef.h new file mode 100644 index 0000000000..e3b18af151 --- /dev/null +++ b/src/conf/virnwfilterbindingdef.h @@ -0,0 +1,47 @@ +/* + * virnwfilterbindingdef.h: network filter binding 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/>. + * + */ +#ifndef VIR_NWFILTER_BINDING_DEF_H +# define VIR_NWFILTER_BINDING_DEF_H + +# include "internal.h" +# include "virmacaddr.h" +# include "virhash.h" + +typedef struct _virNWFilterBindingDef virNWFilterBindingDef; +typedef virNWFilterBindingDef *virNWFilterBindingDefPtr; + +struct _virNWFilterBindingDef { + char *ownername; + unsigned char owneruuid[VIR_UUID_BUFLEN]; + char *portdevname; + char *linkdevname; + virMacAddr mac; + char *filter; + virHashTablePtr filterparams; +}; + + +void +virNWFilterBindingDefFree(virNWFilterBindingDefPtr binding); +virNWFilterBindingDefPtr +virNWFilterBindingDefCopy(virNWFilterBindingDefPtr src); + +#endif /* VIR_NWFILTER_BINDING_DEF_H */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 80062df3f7..fb754fbfea 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -781,8 +781,6 @@ virDomainNumatuneSpecifiedMaxNode; # conf/nwfilter_conf.h -virNWFilterBindingDefCopy; -virNWFilterBindingDefFree; virNWFilterCallbackDriversLock; virNWFilterCallbackDriversUnlock; virNWFilterChainSuffixTypeToString; @@ -1043,6 +1041,11 @@ virNodeDeviceObjListNumOfDevices; virNodeDeviceObjListRemove; +# conf/virnwfilterbindingdef.h +virNWFilterBindingDefCopy; +virNWFilterBindingDefFree; + + # conf/virnwfilterobj.h virNWFilterObjGetDef; virNWFilterObjGetNewDef; -- 2.17.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list