mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-05 20:45:18 +00:00
57f5621f46
Currently the nwfilter driver does not keep any record of what filter bindings it has active. This means that when it needs to recreate filters, it has to rely on triggering callbacks provided by the virt drivers. This introduces a hash table recording the virNWFilterBinding objects so the driver has a record of all active filters. Reviewed-by: John Ferlan <jferlan@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
118 lines
3.4 KiB
C
118 lines
3.4 KiB
C
/*
|
|
* virnwfilterobj.h: network filter object processing
|
|
* (derived from nwfilter_conf.h)
|
|
*
|
|
* 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 VIRNWFILTEROBJ_H
|
|
# define VIRNWFILTEROBJ_H
|
|
|
|
# include "internal.h"
|
|
|
|
# include "nwfilter_conf.h"
|
|
# include "virnwfilterbindingobjlist.h"
|
|
|
|
typedef struct _virNWFilterObj virNWFilterObj;
|
|
typedef virNWFilterObj *virNWFilterObjPtr;
|
|
|
|
typedef struct _virNWFilterObjList virNWFilterObjList;
|
|
typedef virNWFilterObjList *virNWFilterObjListPtr;
|
|
|
|
typedef struct _virNWFilterDriverState virNWFilterDriverState;
|
|
typedef virNWFilterDriverState *virNWFilterDriverStatePtr;
|
|
struct _virNWFilterDriverState {
|
|
virMutex lock;
|
|
bool privileged;
|
|
|
|
virNWFilterObjListPtr nwfilters;
|
|
|
|
virNWFilterBindingObjListPtr bindings;
|
|
|
|
char *configDir;
|
|
char *bindingDir;
|
|
};
|
|
|
|
virNWFilterDefPtr
|
|
virNWFilterObjGetDef(virNWFilterObjPtr obj);
|
|
|
|
virNWFilterDefPtr
|
|
virNWFilterObjGetNewDef(virNWFilterObjPtr obj);
|
|
|
|
bool
|
|
virNWFilterObjWantRemoved(virNWFilterObjPtr obj);
|
|
|
|
virNWFilterObjListPtr
|
|
virNWFilterObjListNew(void);
|
|
|
|
void
|
|
virNWFilterObjListFree(virNWFilterObjListPtr nwfilters);
|
|
|
|
void
|
|
virNWFilterObjListRemove(virNWFilterObjListPtr nwfilters,
|
|
virNWFilterObjPtr obj);
|
|
|
|
virNWFilterObjPtr
|
|
virNWFilterObjListFindByUUID(virNWFilterObjListPtr nwfilters,
|
|
const unsigned char *uuid);
|
|
|
|
virNWFilterObjPtr
|
|
virNWFilterObjListFindByName(virNWFilterObjListPtr nwfilters,
|
|
const char *name);
|
|
|
|
virNWFilterObjPtr
|
|
virNWFilterObjListFindInstantiateFilter(virNWFilterObjListPtr nwfilters,
|
|
const char *filtername);
|
|
|
|
virNWFilterObjPtr
|
|
virNWFilterObjListAssignDef(virNWFilterObjListPtr nwfilters,
|
|
virNWFilterDefPtr def);
|
|
|
|
int
|
|
virNWFilterObjTestUnassignDef(virNWFilterObjPtr obj);
|
|
|
|
typedef bool
|
|
(*virNWFilterObjListFilter)(virConnectPtr conn,
|
|
virNWFilterDefPtr def);
|
|
|
|
int
|
|
virNWFilterObjListNumOfNWFilters(virNWFilterObjListPtr nwfilters,
|
|
virConnectPtr conn,
|
|
virNWFilterObjListFilter filter);
|
|
|
|
int
|
|
virNWFilterObjListGetNames(virNWFilterObjListPtr nwfilters,
|
|
virConnectPtr conn,
|
|
virNWFilterObjListFilter filter,
|
|
char **const names,
|
|
int maxnames);
|
|
|
|
int
|
|
virNWFilterObjListExport(virConnectPtr conn,
|
|
virNWFilterObjListPtr nwfilters,
|
|
virNWFilterPtr **filters,
|
|
virNWFilterObjListFilter filter);
|
|
|
|
int
|
|
virNWFilterObjListLoadAllConfigs(virNWFilterObjListPtr nwfilters,
|
|
const char *configDir);
|
|
|
|
void
|
|
virNWFilterObjLock(virNWFilterObjPtr obj);
|
|
|
|
void
|
|
virNWFilterObjUnlock(virNWFilterObjPtr obj);
|
|
|
|
#endif /* VIRNWFILTEROBJ_H */
|