mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-03 00:00:24 -04:00
kernel-interface: Add method to increase refcount for allocated reqid
This commit is contained in:
parent
02180ae2ff
commit
e623f5792b
@ -433,6 +433,23 @@ METHOD(kernel_interface_t, alloc_reqid, status_t,
|
|||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(kernel_interface_t, ref_reqid, status_t,
|
||||||
|
private_kernel_interface_t *this, uint32_t reqid)
|
||||||
|
{
|
||||||
|
reqid_entry_t *entry, tmpl = {
|
||||||
|
.reqid = reqid,
|
||||||
|
};
|
||||||
|
|
||||||
|
this->mutex->lock(this->mutex);
|
||||||
|
entry = this->reqids->get(this->reqids, &tmpl);
|
||||||
|
if (entry)
|
||||||
|
{
|
||||||
|
entry->refs++;
|
||||||
|
}
|
||||||
|
this->mutex->unlock(this->mutex);
|
||||||
|
return entry ? SUCCESS : NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
METHOD(kernel_interface_t, release_reqid, status_t,
|
METHOD(kernel_interface_t, release_reqid, status_t,
|
||||||
private_kernel_interface_t *this, uint32_t reqid)
|
private_kernel_interface_t *this, uint32_t reqid)
|
||||||
{
|
{
|
||||||
@ -1039,6 +1056,7 @@ kernel_interface_t *kernel_interface_create()
|
|||||||
.get_spi = _get_spi,
|
.get_spi = _get_spi,
|
||||||
.get_cpi = _get_cpi,
|
.get_cpi = _get_cpi,
|
||||||
.alloc_reqid = _alloc_reqid,
|
.alloc_reqid = _alloc_reqid,
|
||||||
|
.ref_reqid = _ref_reqid,
|
||||||
.release_reqid = _release_reqid,
|
.release_reqid = _release_reqid,
|
||||||
.add_sa = _add_sa,
|
.add_sa = _add_sa,
|
||||||
.update_sa = _update_sa,
|
.update_sa = _update_sa,
|
||||||
|
@ -158,6 +158,18 @@ struct kernel_interface_t {
|
|||||||
uint32_t if_id_out, sec_label_t *label,
|
uint32_t if_id_out, sec_label_t *label,
|
||||||
uint32_t *reqid);
|
uint32_t *reqid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increase the reference count for the given reqid that was previously
|
||||||
|
* allocated by alloc_reqid().
|
||||||
|
*
|
||||||
|
* The reference must be released with a call to release_reqid().
|
||||||
|
*
|
||||||
|
* @param reqid previously allocated reqid
|
||||||
|
* @return SUCCESS if refcount increased, NOT_FOUND if reqid is
|
||||||
|
* unknown (shouldn't happen)
|
||||||
|
*/
|
||||||
|
status_t (*ref_reqid)(kernel_interface_t *this, uint32_t reqid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release a previously allocated reqid.
|
* Release a previously allocated reqid.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user