kernel-pfkey: Set state to SADB_SASTATE_MATURE when adding/updating SAs
Picky kernels might otherwise reject our messages as RFC 2367 explicitly mandates this. Fixes #2212.
This commit is contained in:
@@ -1717,6 +1717,7 @@ METHOD(kernel_ipsec_t, add_sa, status_t,
|
|||||||
sa->sadb_sa_exttype = SADB_EXT_SA;
|
sa->sadb_sa_exttype = SADB_EXT_SA;
|
||||||
sa->sadb_sa_len = PFKEY_LEN(len);
|
sa->sadb_sa_len = PFKEY_LEN(len);
|
||||||
sa->sadb_sa_spi = id->spi;
|
sa->sadb_sa_spi = id->spi;
|
||||||
|
sa->sadb_sa_state = SADB_SASTATE_MATURE;
|
||||||
if (id->proto == IPPROTO_COMP)
|
if (id->proto == IPPROTO_COMP)
|
||||||
{
|
{
|
||||||
sa->sadb_sa_encrypt = lookup_algorithm(COMPRESSION_ALGORITHM,
|
sa->sadb_sa_encrypt = lookup_algorithm(COMPRESSION_ALGORITHM,
|
||||||
@@ -1889,6 +1890,7 @@ METHOD(kernel_ipsec_t, update_sa, status_t,
|
|||||||
sa->sadb_sa_exttype = SADB_EXT_SA;
|
sa->sadb_sa_exttype = SADB_EXT_SA;
|
||||||
sa->sadb_sa_len = PFKEY_LEN(sizeof(struct sadb_sa));
|
sa->sadb_sa_len = PFKEY_LEN(sizeof(struct sadb_sa));
|
||||||
sa->sadb_sa_spi = id->spi;
|
sa->sadb_sa_spi = id->spi;
|
||||||
|
sa->sadb_sa_state = SADB_SASTATE_MATURE;
|
||||||
PFKEY_EXT_ADD(msg, sa);
|
PFKEY_EXT_ADD(msg, sa);
|
||||||
|
|
||||||
/* the kernel wants a SADB_EXT_ADDRESS_SRC to be present even though
|
/* the kernel wants a SADB_EXT_ADDRESS_SRC to be present even though
|
||||||
|
|||||||
Reference in New Issue
Block a user