diff options
author | Mike Belopuhov <mikeb@cvs.openbsd.org> | 2011-07-05 01:28:07 +0000 |
---|---|---|
committer | Mike Belopuhov <mikeb@cvs.openbsd.org> | 2011-07-05 01:28:07 +0000 |
commit | 5cf939d711ef3abda3c3d47bd195a2ce56a54ec7 (patch) | |
tree | 60c304b4e8e0f31c4efb157e65372cc03768580e /sbin/iked/ikev2.c | |
parent | c0d9a53f905d0a9ce26e6ac1b3ccd4079701dfa9 (diff) |
Fix IKEV2_N_NO_ADDITIONAL_SAS notification by including the SPI
Diffstat (limited to 'sbin/iked/ikev2.c')
-rw-r--r-- | sbin/iked/ikev2.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sbin/iked/ikev2.c b/sbin/iked/ikev2.c index 3ab9684f8bf..2c130466445 100644 --- a/sbin/iked/ikev2.c +++ b/sbin/iked/ikev2.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ikev2.c,v 1.56 2011/05/27 12:01:02 reyk Exp $ */ +/* $OpenBSD: ikev2.c,v 1.57 2011/07/05 01:28:06 mikeb Exp $ */ /* $vantronix: ikev2.c,v 1.101 2010/06/03 07:57:33 reyk Exp $ */ /* @@ -2228,6 +2228,8 @@ ikev2_resp_create_child_sa(struct iked *env, struct iked_message *msg) struct ikev2_payload *pld; struct ibuf *buf = NULL, *e = NULL, *nonce = NULL; struct group *group; + u_int64_t spi64; + u_int32_t spi32; ssize_t len = 0; int initiator, protoid, rekeying = 1; int ret = -1; @@ -2294,8 +2296,18 @@ ikev2_resp_create_child_sa(struct iked *env, struct iked_message *msg) return (-1); } n->n_protoid = protoid; - n->n_spisize = 0; + n->n_spisize = rekey->spi_size; n->n_type = htobe16(IKEV2_N_NO_ADDITIONAL_SAS); + switch (rekey->spi_size) { + case 4: + spi32 = htobe32(rekey->spi); + ibuf_add(buf, &spi32, rekey->spi_size); + break; + case 8: + spi64 = htobe64(rekey->spi); + ibuf_add(buf, &spi64, rekey->spi_size); + break; + } ikev2_send_ike_e(env, sa, buf, IKEV2_PAYLOAD_NOTIFY, IKEV2_EXCHANGE_CREATE_CHILD_SA, 1); ibuf_release(buf); |