diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h index 97eceef75443aca88df7afae2a5e9f304738f177..c9ff0a49ed70267e1acf7f425a86fa42dd69f0f8 100644 --- a/include/libvirt/libvirt-network.h +++ b/include/libvirt/libvirt-network.h @@ -455,4 +455,7 @@ virNetworkListAllPorts(virNetworkPtr network, int virNetworkPortFree(virNetworkPortPtr port); +int +virNetworkPortRef(virNetworkPortPtr port); + #endif /* LIBVIRT_NETWORK_H */ diff --git a/src/libvirt-network.c b/src/libvirt-network.c index 6ed32c8ba2fe2e396e1f81d2fb3702dbbceaf08e..c182064c0f7ac7c423e7fd0c5ff7845dc8c8d2cf 100644 --- a/src/libvirt-network.c +++ b/src/libvirt-network.c @@ -1690,3 +1690,35 @@ virNetworkPortFree(virNetworkPortPtr port) virObjectUnref(port); return 0; } + + +/** + * virNetworkPortRef: + * @port: a network port object + * + * Increment the reference count on the network port. For each + * additional call to this method, there shall be a corresponding + * call to virNetworkPortFree to release the reference count, once + * the caller no longer needs the reference to this object. + * + * This method is typically useful for applications where multiple + * threads are using a network port, and it is required that the + * port remain resident until all threads have finished using + * it. ie, each new thread using a network port would increment + * the reference count. + * + * Returns 0 in case of success, -1 in case of failure. + */ +int +virNetworkPortRef(virNetworkPortPtr port) +{ + VIR_DEBUG("port=%p refs=%d", port, + port ? port->parent.u.s.refs : 0); + + virResetLastError(); + + virCheckNetworkPortReturn(port, -1); + + virObjectRef(port); + return 0; +} diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index 46c32a081b582843c8397b11b39f4c762e52fd26..75f7fdfb0c4fe0694d0f2ecd34d49b3f8b3fc2f6 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -831,6 +831,7 @@ LIBVIRT_5.5.0 { virNetworkPortGetUUIDString; virNetworkPortDelete; virNetworkPortFree; + virNetworkPortRef; virNetworkPortSetParameters; } LIBVIRT_5.2.0;