提交 6498f76e 编写于 作者: O Osier Yang

list: Define new API virConnectListAllNWFilters

This is to list the network filter objects. No flags are supported

include/libvirt/libvirt.h.in: Declare enum virConnectListAllNWFilterFlags
                              and virConnectListAllNWFilters.
python/generator.py: Skip auto-generating
src/driver.h: (virDrvConnectListAllNWFilters)
src/libvirt.c: Implement the public API
src/libvirt_public.syms: Export the symbol to public
上级 aa20e975
...@@ -4126,7 +4126,9 @@ int virConnectNumOfNWFilters (virConnectPtr conn); ...@@ -4126,7 +4126,9 @@ int virConnectNumOfNWFilters (virConnectPtr conn);
int virConnectListNWFilters (virConnectPtr conn, int virConnectListNWFilters (virConnectPtr conn,
char **const names, char **const names,
int maxnames); int maxnames);
int virConnectListAllNWFilters(virConnectPtr conn,
virNWFilterPtr **filters,
unsigned int flags);
/* /*
* Lookup nwfilter by name or uuid * Lookup nwfilter by name or uuid
*/ */
......
...@@ -465,6 +465,7 @@ skip_function = ( ...@@ -465,6 +465,7 @@ skip_function = (
'virConnectListAllNetworks', # overridden in virConnect.py 'virConnectListAllNetworks', # overridden in virConnect.py
'virConnectListAllInterfaces', # overridden in virConnect.py 'virConnectListAllInterfaces', # overridden in virConnect.py
'virConnectListAllNodeDevices', # overridden in virConnect.py 'virConnectListAllNodeDevices', # overridden in virConnect.py
'virConnectListAllNWFilters', # overridden in virConnect.py
'virStreamRecvAll', # Pure python libvirt-override-virStream.py 'virStreamRecvAll', # Pure python libvirt-override-virStream.py
'virStreamSendAll', # Pure python libvirt-override-virStream.py 'virStreamSendAll', # Pure python libvirt-override-virStream.py
......
...@@ -1638,6 +1638,10 @@ typedef int ...@@ -1638,6 +1638,10 @@ typedef int
(*virDrvConnectListNWFilters) (virConnectPtr conn, (*virDrvConnectListNWFilters) (virConnectPtr conn,
char **const names, char **const names,
int maxnames); int maxnames);
typedef int
(*virDrvConnectListAllNWFilters) (virConnectPtr conn,
virNWFilterPtr **filters,
unsigned int flags);
typedef virNWFilterPtr typedef virNWFilterPtr
(*virDrvNWFilterLookupByName) (virConnectPtr conn, (*virDrvNWFilterLookupByName) (virConnectPtr conn,
const char *name); const char *name);
...@@ -1675,6 +1679,7 @@ struct _virNWFilterDriver { ...@@ -1675,6 +1679,7 @@ struct _virNWFilterDriver {
virDrvConnectNumOfNWFilters numOfNWFilters; virDrvConnectNumOfNWFilters numOfNWFilters;
virDrvConnectListNWFilters listNWFilters; virDrvConnectListNWFilters listNWFilters;
virDrvConnectListAllNWFilters listAllNWFilters;
virDrvNWFilterLookupByName nwfilterLookupByName; virDrvNWFilterLookupByName nwfilterLookupByName;
virDrvNWFilterLookupByUUID nwfilterLookupByUUID; virDrvNWFilterLookupByUUID nwfilterLookupByUUID;
virDrvNWFilterDefineXML defineXML; virDrvNWFilterDefineXML defineXML;
......
...@@ -16165,6 +16165,56 @@ error: ...@@ -16165,6 +16165,56 @@ error:
return -1; return -1;
} }
/**
* virConnectListAllNWFilters:
* @conn: Pointer to the hypervisor connection.
* @filters: Pointer to a variable to store the array containing the network
* filter objects or NULL if the list is not required (just returns
* number of network filters).
* @flags: extra flags; not used yet, so callers should always pass 0
*
* Collect the list of network filters, and allocate an array to store those
* objects.
*
* Returns the number of network filters found or -1 and sets @filters to NULL
* in case of error. On success, the array stored into @filters is guaranteed to
* have an extra allocated element set to NULL but not included in the return count,
* to make iteration easier. The caller is responsible for calling
* virNWFilterFree() on each array element, then calling free() on @filters.
*/
int
virConnectListAllNWFilters(virConnectPtr conn,
virNWFilterPtr **filters,
unsigned int flags)
{
VIR_DEBUG("conn=%p, filters=%p, flags=%x", conn, filters, flags);
virResetLastError();
if (filters)
*filters = NULL;
if (!VIR_IS_CONNECT(conn)) {
virLibConnError(VIR_ERR_INVALID_CONN, __FUNCTION__);
virDispatchError(NULL);
return -1;
}
if (conn->nwfilterDriver &&
conn->nwfilterDriver->listAllNWFilters) {
int ret;
ret = conn->nwfilterDriver->listAllNWFilters(conn, filters, flags);
if (ret < 0)
goto error;
return ret;
}
virLibConnError(VIR_ERR_NO_SUPPORT, __FUNCTION__);
error:
virDispatchError(conn);
return -1;
}
/** /**
* virConnectListNWFilters: * virConnectListNWFilters:
......
...@@ -559,6 +559,7 @@ LIBVIRT_0.10.2 { ...@@ -559,6 +559,7 @@ LIBVIRT_0.10.2 {
virConnectListAllInterfaces; virConnectListAllInterfaces;
virConnectListAllNetworks; virConnectListAllNetworks;
virConnectListAllNodeDevices; virConnectListAllNodeDevices;
virConnectListAllNWFilters;
virConnectListAllStoragePools; virConnectListAllStoragePools;
virStoragePoolListAllVolumes; virStoragePoolListAllVolumes;
} LIBVIRT_0.10.0; } LIBVIRT_0.10.0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册