Defined functions in the kernel interface to flush SAD and SPD entries.

This commit is contained in:
Tobias Brunner
2011-10-21 14:18:23 +02:00
parent bf3c2dde68
commit 0b0f466bbc
3 changed files with 50 additions and 0 deletions
+22
View File
@@ -138,6 +138,16 @@ METHOD(kernel_interface_t, del_sa, status_t,
return this->ipsec->del_sa(this->ipsec, src, dst, spi, protocol, cpi, mark); return this->ipsec->del_sa(this->ipsec, src, dst, spi, protocol, cpi, mark);
} }
METHOD(kernel_interface_t, flush_sas, status_t,
private_kernel_interface_t *this)
{
if (!this->ipsec)
{
return NOT_SUPPORTED;
}
return this->ipsec->flush_sas(this->ipsec);
}
METHOD(kernel_interface_t, add_policy, status_t, METHOD(kernel_interface_t, add_policy, status_t,
private_kernel_interface_t *this, host_t *src, host_t *dst, private_kernel_interface_t *this, host_t *src, host_t *dst,
traffic_selector_t *src_ts, traffic_selector_t *dst_ts, traffic_selector_t *src_ts, traffic_selector_t *dst_ts,
@@ -178,6 +188,16 @@ METHOD(kernel_interface_t, del_policy, status_t,
direction, reqid, mark, priority); direction, reqid, mark, priority);
} }
METHOD(kernel_interface_t, flush_policies, status_t,
private_kernel_interface_t *this)
{
if (!this->ipsec)
{
return NOT_SUPPORTED;
}
return this->ipsec->flush_policies(this->ipsec);
}
METHOD(kernel_interface_t, get_source_addr, host_t*, METHOD(kernel_interface_t, get_source_addr, host_t*,
private_kernel_interface_t *this, host_t *dest, host_t *src) private_kernel_interface_t *this, host_t *dest, host_t *src)
{ {
@@ -505,9 +525,11 @@ kernel_interface_t *kernel_interface_create()
.update_sa = _update_sa, .update_sa = _update_sa,
.query_sa = _query_sa, .query_sa = _query_sa,
.del_sa = _del_sa, .del_sa = _del_sa,
.flush_sas = _flush_sas,
.add_policy = _add_policy, .add_policy = _add_policy,
.query_policy = _query_policy, .query_policy = _query_policy,
.del_policy = _del_policy, .del_policy = _del_policy,
.flush_policies = _flush_policies,
.get_source_addr = _get_source_addr, .get_source_addr = _get_source_addr,
.get_nexthop = _get_nexthop, .get_nexthop = _get_nexthop,
.get_interface = _get_interface, .get_interface = _get_interface,
+14
View File
@@ -174,6 +174,13 @@ struct kernel_interface_t {
u_int32_t spi, u_int8_t protocol, u_int16_t cpi, u_int32_t spi, u_int8_t protocol, u_int16_t cpi,
mark_t mark); mark_t mark);
/**
* Flush all SAs from the SAD.
*
* @return SUCCESS if operation completed
*/
status_t (*flush_sas) (kernel_interface_t *this);
/** /**
* Add a policy to the SPD. * Add a policy to the SPD.
* *
@@ -240,6 +247,13 @@ struct kernel_interface_t {
policy_dir_t direction, u_int32_t reqid, policy_dir_t direction, u_int32_t reqid,
mark_t mark, policy_priority_t priority); mark_t mark, policy_priority_t priority);
/**
* Flush all policies from the SPD.
*
* @return SUCCESS if operation completed
*/
status_t (*flush_policies) (kernel_interface_t *this);
/** /**
* Get our outgoing source address for a destination. * Get our outgoing source address for a destination.
* *
+14
View File
@@ -305,6 +305,13 @@ struct kernel_ipsec_t {
u_int32_t spi, u_int8_t protocol, u_int16_t cpi, u_int32_t spi, u_int8_t protocol, u_int16_t cpi,
mark_t mark); mark_t mark);
/**
* Flush all SAs from the SAD.
*
* @return SUCCESS if operation completed
*/
status_t (*flush_sas) (kernel_ipsec_t *this);
/** /**
* Add a policy to the SPD. * Add a policy to the SPD.
* *
@@ -372,6 +379,13 @@ struct kernel_ipsec_t {
policy_dir_t direction, u_int32_t reqid, policy_dir_t direction, u_int32_t reqid,
mark_t mark, policy_priority_t priority); mark_t mark, policy_priority_t priority);
/**
* Flush all policies from the SPD.
*
* @return SUCCESS if operation completed
*/
status_t (*flush_policies) (kernel_ipsec_t *this);
/** /**
* Install a bypass policy for the given socket. * Install a bypass policy for the given socket.
* *