ike-cfg: Add setting for childless IKE_SAs
This commit is contained in:
@@ -101,10 +101,15 @@ struct private_ike_cfg_t {
|
|||||||
bool force_encap;
|
bool force_encap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* use IKEv1 fragmentation
|
* use IKE fragmentation
|
||||||
*/
|
*/
|
||||||
fragmentation_t fragmentation;
|
fragmentation_t fragmentation;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* childless IKE_SAs
|
||||||
|
*/
|
||||||
|
childless_t childless;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DSCP value to use on sent IKE packets
|
* DSCP value to use on sent IKE packets
|
||||||
*/
|
*/
|
||||||
@@ -140,6 +145,12 @@ METHOD(ike_cfg_t, fragmentation, fragmentation_t,
|
|||||||
return this->fragmentation;
|
return this->fragmentation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
METHOD(ike_cfg_t, childless, childless_t,
|
||||||
|
private_ike_cfg_t *this)
|
||||||
|
{
|
||||||
|
return this->childless;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common function for resolve_me/other
|
* Common function for resolve_me/other
|
||||||
*/
|
*/
|
||||||
@@ -424,6 +435,7 @@ METHOD(ike_cfg_t, equals, bool,
|
|||||||
this->certreq == other->certreq &&
|
this->certreq == other->certreq &&
|
||||||
this->force_encap == other->force_encap &&
|
this->force_encap == other->force_encap &&
|
||||||
this->fragmentation == other->fragmentation &&
|
this->fragmentation == other->fragmentation &&
|
||||||
|
this->childless == other->childless &&
|
||||||
streq(this->me, other->me) &&
|
streq(this->me, other->me) &&
|
||||||
streq(this->other, other->other) &&
|
streq(this->other, other->other) &&
|
||||||
this->my_port == other->my_port &&
|
this->my_port == other->my_port &&
|
||||||
@@ -622,6 +634,7 @@ ike_cfg_t *ike_cfg_create(ike_cfg_create_t *data)
|
|||||||
.send_certreq = _send_certreq,
|
.send_certreq = _send_certreq,
|
||||||
.force_encap = _force_encap_,
|
.force_encap = _force_encap_,
|
||||||
.fragmentation = _fragmentation,
|
.fragmentation = _fragmentation,
|
||||||
|
.childless = _childless,
|
||||||
.resolve_me = _resolve_me,
|
.resolve_me = _resolve_me,
|
||||||
.resolve_other = _resolve_other,
|
.resolve_other = _resolve_other,
|
||||||
.match_me = _match_me,
|
.match_me = _match_me,
|
||||||
@@ -645,6 +658,7 @@ ike_cfg_t *ike_cfg_create(ike_cfg_create_t *data)
|
|||||||
.certreq = !data->no_certreq,
|
.certreq = !data->no_certreq,
|
||||||
.force_encap = data->force_encap,
|
.force_encap = data->force_encap,
|
||||||
.fragmentation = data->fragmentation,
|
.fragmentation = data->fragmentation,
|
||||||
|
.childless = data->childless,
|
||||||
.me = strdup(data->local),
|
.me = strdup(data->local),
|
||||||
.my_ranges = linked_list_create(),
|
.my_ranges = linked_list_create(),
|
||||||
.my_hosts = linked_list_create(),
|
.my_hosts = linked_list_create(),
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
typedef enum ike_version_t ike_version_t;
|
typedef enum ike_version_t ike_version_t;
|
||||||
typedef enum fragmentation_t fragmentation_t;
|
typedef enum fragmentation_t fragmentation_t;
|
||||||
|
typedef enum childless_t childless_t;
|
||||||
typedef struct ike_cfg_t ike_cfg_t;
|
typedef struct ike_cfg_t ike_cfg_t;
|
||||||
typedef struct ike_cfg_create_t ike_cfg_create_t;
|
typedef struct ike_cfg_create_t ike_cfg_create_t;
|
||||||
|
|
||||||
@@ -61,6 +62,18 @@ enum fragmentation_t {
|
|||||||
FRAGMENTATION_FORCE,
|
FRAGMENTATION_FORCE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Childless IKE_SAs (RFC 6023)
|
||||||
|
*/
|
||||||
|
enum childless_t {
|
||||||
|
/** Allow childless IKE_SAs as responder, but initiate regular IKE_SAs */
|
||||||
|
CHILDLESS_ALLOW,
|
||||||
|
/** Don't accept childless IKE_SAs as responder, don't initiate them */
|
||||||
|
CHILDLESS_NEVER,
|
||||||
|
/** Only accept the creation of childless IKE_SAs (also as responder) */
|
||||||
|
CHILDLESS_FORCE,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum strings for ike_version_t
|
* enum strings for ike_version_t
|
||||||
*/
|
*/
|
||||||
@@ -204,12 +217,19 @@ struct ike_cfg_t {
|
|||||||
bool (*force_encap) (ike_cfg_t *this);
|
bool (*force_encap) (ike_cfg_t *this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use proprietary IKEv1 fragmentation
|
* Use IKE fragmentation
|
||||||
*
|
*
|
||||||
* @return TRUE to use fragmentation
|
* @return TRUE to use fragmentation
|
||||||
*/
|
*/
|
||||||
fragmentation_t (*fragmentation) (ike_cfg_t *this);
|
fragmentation_t (*fragmentation) (ike_cfg_t *this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to initiate/accept childless IKE_SAs
|
||||||
|
*
|
||||||
|
* @return initiate/accept childless IKE_SAs
|
||||||
|
*/
|
||||||
|
childless_t (*childless)(ike_cfg_t *this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the DH group to use for IKE_SA setup.
|
* Get the DH group to use for IKE_SA setup.
|
||||||
*
|
*
|
||||||
@@ -266,6 +286,8 @@ struct ike_cfg_create_t {
|
|||||||
bool force_encap;
|
bool force_encap;
|
||||||
/** Use IKE fragmentation */
|
/** Use IKE fragmentation */
|
||||||
fragmentation_t fragmentation;
|
fragmentation_t fragmentation;
|
||||||
|
/** Childless IKE_SA configuration */
|
||||||
|
childless_t childless;
|
||||||
/** DSCP value to send IKE packets with */
|
/** DSCP value to send IKE packets with */
|
||||||
uint8_t dscp;
|
uint8_t dscp;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user