]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
message: Include encrypted fragment payload in payload (order) rules
authorTobias Brunner <tobias@strongswan.org>
Tue, 28 Oct 2014 15:42:06 +0000 (16:42 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 29 Oct 2014 14:51:38 +0000 (15:51 +0100)
Otherwise fragmented CREATE_CHILD_SA exchanges won't get accepted
because they don't contain an SA payload.

It also prevents a warning when ordering payloads.

Fixes #752.

src/libcharon/encoding/message.c

index cb6c97f25ac7d92feac5e9d831c0734b51419ce0..fd476532d5c82024a7fef7ff44a0e5d91f09e48a 100644 (file)
@@ -180,6 +180,7 @@ static payload_order_t ike_sa_init_r_order[] = {
  */
 static payload_rule_t ike_auth_i_rules[] = {
 /*     payload type                                    min     max                                             encr    suff */
+       {PLV2_FRAGMENT,                                 0,      1,                                              TRUE,   TRUE},
        {PLV2_NOTIFY,                                   0,      MAX_NOTIFY_PAYLOADS,    TRUE,   FALSE},
        {PLV2_EAP,                                              0,      1,                                              TRUE,   TRUE},
        {PLV2_AUTH,                                             0,      1,                                              TRUE,   TRUE},
@@ -227,6 +228,7 @@ static payload_order_t ike_auth_i_order[] = {
        {PLV2_NOTIFY,                                   NO_ADDITIONAL_ADDRESSES},
        {PLV2_NOTIFY,                                   0},
        {PLV2_VENDOR_ID,                                0},
+       {PLV2_FRAGMENT,                                 0},
 };
 
 /**
@@ -234,6 +236,7 @@ static payload_order_t ike_auth_i_order[] = {
  */
 static payload_rule_t ike_auth_r_rules[] = {
 /*     payload type                                    min     max                                             encr    suff */
+       {PLV2_FRAGMENT,                                 0,      1,                                              TRUE,   TRUE},
        {PLV2_NOTIFY,                                   0,      MAX_NOTIFY_PAYLOADS,    TRUE,   TRUE},
        {PLV2_EAP,                                              0,      1,                                              TRUE,   TRUE},
        {PLV2_AUTH,                                             0,      1,                                              TRUE,   TRUE},
@@ -270,6 +273,7 @@ static payload_order_t ike_auth_r_order[] = {
        {PLV2_NOTIFY,                                   NO_ADDITIONAL_ADDRESSES},
        {PLV2_NOTIFY,                                   0},
        {PLV2_VENDOR_ID,                                0},
+       {PLV2_FRAGMENT,                                 0},
 };
 
 /**
@@ -277,6 +281,7 @@ static payload_order_t ike_auth_r_order[] = {
  */
 static payload_rule_t informational_i_rules[] = {
 /*     payload type                                    min     max                                             encr    suff */
+       {PLV2_FRAGMENT,                                 0,      1,                                              TRUE,   TRUE},
        {PLV2_NOTIFY,                                   0,      MAX_NOTIFY_PAYLOADS,    TRUE,   FALSE},
        {PLV2_CONFIGURATION,                    0,      1,                                              TRUE,   FALSE},
        {PLV2_DELETE,                                   0,      MAX_DELETE_PAYLOADS,    TRUE,   FALSE},
@@ -295,6 +300,7 @@ static payload_order_t informational_i_order[] = {
        {PLV2_NOTIFY,                                   0},
        {PLV2_DELETE,                                   0},
        {PLV2_CONFIGURATION,                    0},
+       {PLV2_FRAGMENT,                                 0},
 };
 
 /**
@@ -302,6 +308,7 @@ static payload_order_t informational_i_order[] = {
  */
 static payload_rule_t informational_r_rules[] = {
 /*     payload type                                    min     max                                             encr    suff */
+       {PLV2_FRAGMENT,                                 0,      1,                                              TRUE,   TRUE},
        {PLV2_NOTIFY,                                   0,      MAX_NOTIFY_PAYLOADS,    TRUE,   FALSE},
        {PLV2_CONFIGURATION,                    0,      1,                                              TRUE,   FALSE},
        {PLV2_DELETE,                                   0,      MAX_DELETE_PAYLOADS,    TRUE,   FALSE},
@@ -320,6 +327,7 @@ static payload_order_t informational_r_order[] = {
        {PLV2_NOTIFY,                                   0},
        {PLV2_DELETE,                                   0},
        {PLV2_CONFIGURATION,                    0},
+       {PLV2_FRAGMENT,                                 0},
 };
 
 /**
@@ -327,6 +335,7 @@ static payload_order_t informational_r_order[] = {
  */
 static payload_rule_t create_child_sa_i_rules[] = {
 /*     payload type                                    min     max                                             encr    suff */
+       {PLV2_FRAGMENT,                                 0,      1,                                              TRUE,   TRUE},
        {PLV2_NOTIFY,                                   0,      MAX_NOTIFY_PAYLOADS,    TRUE,   FALSE},
        {PLV2_SECURITY_ASSOCIATION,             1,      1,                                              TRUE,   FALSE},
        {PLV2_NONCE,                                    1,      1,                                              TRUE,   FALSE},
@@ -353,6 +362,7 @@ static payload_order_t create_child_sa_i_order[] = {
        {PLV2_TS_INITIATOR,                             0},
        {PLV2_TS_RESPONDER,                             0},
        {PLV2_NOTIFY,                                   0},
+       {PLV2_FRAGMENT,                                 0},
 };
 
 /**
@@ -360,6 +370,7 @@ static payload_order_t create_child_sa_i_order[] = {
  */
 static payload_rule_t create_child_sa_r_rules[] = {
 /*     payload type                                    min     max                                             encr    suff */
+       {PLV2_FRAGMENT,                                 0,      1,                                              TRUE,   TRUE},
        {PLV2_NOTIFY,                                   0,      MAX_NOTIFY_PAYLOADS,    TRUE,   TRUE},
        {PLV2_SECURITY_ASSOCIATION,             1,      1,                                              TRUE,   FALSE},
        {PLV2_NONCE,                                    1,      1,                                              TRUE,   FALSE},
@@ -386,6 +397,7 @@ static payload_order_t create_child_sa_r_order[] = {
        {PLV2_TS_RESPONDER,                             0},
        {PLV2_NOTIFY,                                   ADDITIONAL_TS_POSSIBLE},
        {PLV2_NOTIFY,                                   0},
+       {PLV2_FRAGMENT,                                 0},
 };
 
 #ifdef ME