Added initiator/responder_id load tester options to enforce different identities

This commit is contained in:
Martin Willi
2011-05-16 15:24:14 +02:00
parent 187bf24e4d
commit ac96ca80eb
@@ -64,6 +64,16 @@ struct private_load_tester_config_t {
*/ */
char *responder_auth; char *responder_auth;
/**
* Initiator ID to enforce
*/
char *initiator_id;
/**
* Responder ID to enforce
*/
char *responder_id;
/** /**
* IKE_SA rekeying delay * IKE_SA rekeying delay
*/ */
@@ -102,19 +112,40 @@ static void generate_auth_cfg(private_load_tester_config_t *this, char *str,
enumerator = enumerator_create_token(str, "|", " "); enumerator = enumerator_create_token(str, "|", " ");
while (enumerator->enumerate(enumerator, &str)) while (enumerator->enumerate(enumerator, &str))
{ {
id = NULL;
auth = auth_cfg_create(); auth = auth_cfg_create();
rnd++; rnd++;
if (this->initiator_id)
{
if ((local && num) || (!local && !num))
{
snprintf(buf, sizeof(buf), this->initiator_id, num, rnd);
id = identification_create_from_string(buf);
}
}
if (this->responder_id)
{
if ((local && !num) || (!local && num))
{
snprintf(buf, sizeof(buf), this->responder_id, num, rnd);
id = identification_create_from_string(buf);
}
}
if (streq(str, "psk")) if (streq(str, "psk"))
{ /* PSK authentication, use FQDNs */ { /* PSK authentication, use FQDNs */
class = AUTH_CLASS_PSK; class = AUTH_CLASS_PSK;
if (!id)
{
if ((local && !num) || (!local && num)) if ((local && !num) || (!local && num))
{ {
id = identification_create_from_string("srv.strongswan.org"); id = identification_create_from_string("srv.strongswan.org");
} }
else if (local) else if (local)
{ {
snprintf(buf, sizeof(buf), "c%d-r%d.strongswan.org", num, rnd); snprintf(buf, sizeof(buf), "c%d-r%d.strongswan.org",
num, rnd);
id = identification_create_from_string(buf); id = identification_create_from_string(buf);
} }
else else
@@ -122,6 +153,7 @@ static void generate_auth_cfg(private_load_tester_config_t *this, char *str,
id = identification_create_from_string("*.strongswan.org"); id = identification_create_from_string("*.strongswan.org");
} }
} }
}
else if (strneq(str, "eap", strlen("eap"))) else if (strneq(str, "eap", strlen("eap")))
{ /* EAP authentication, use a NAI */ { /* EAP authentication, use a NAI */
class = AUTH_CLASS_EAP; class = AUTH_CLASS_EAP;
@@ -133,9 +165,12 @@ static void generate_auth_cfg(private_load_tester_config_t *this, char *str,
auth->add(auth, AUTH_RULE_EAP_TYPE, type); auth->add(auth, AUTH_RULE_EAP_TYPE, type);
} }
} }
if (!id)
{
if (local && num) if (local && num)
{ {
snprintf(buf, sizeof(buf), "1%.10d%[email protected]", num, rnd); snprintf(buf, sizeof(buf), "1%.10d%[email protected]",
num, rnd);
id = identification_create_from_string(buf); id = identification_create_from_string(buf);
} }
else else
@@ -143,6 +178,7 @@ static void generate_auth_cfg(private_load_tester_config_t *this, char *str,
id = identification_create_from_encoding(ID_ANY, chunk_empty); id = identification_create_from_encoding(ID_ANY, chunk_empty);
} }
} }
}
else else
{ {
if (!streq(str, "pubkey")) if (!streq(str, "pubkey"))
@@ -152,6 +188,8 @@ static void generate_auth_cfg(private_load_tester_config_t *this, char *str,
} }
/* certificate authentication, use distinguished names */ /* certificate authentication, use distinguished names */
class = AUTH_CLASS_PUBKEY; class = AUTH_CLASS_PUBKEY;
if (!id)
{
if ((local && !num) || (!local && num)) if ((local && !num) || (!local && num))
{ {
id = identification_create_from_string( id = identification_create_from_string(
@@ -169,6 +207,7 @@ static void generate_auth_cfg(private_load_tester_config_t *this, char *str,
"CN=*, OU=load-test, O=strongSwan"); "CN=*, OU=load-test, O=strongSwan");
} }
} }
}
auth->add(auth, AUTH_RULE_AUTH_CLASS, class); auth->add(auth, AUTH_RULE_AUTH_CLASS, class);
auth->add(auth, AUTH_RULE_IDENTITY, id); auth->add(auth, AUTH_RULE_IDENTITY, id);
peer_cfg->add_auth_cfg(peer_cfg, auth, local); peer_cfg->add_auth_cfg(peer_cfg, auth, local);
@@ -317,6 +356,10 @@ load_tester_config_t *load_tester_config_create()
"charon.plugins.load-tester.initiator_auth", "pubkey"); "charon.plugins.load-tester.initiator_auth", "pubkey");
this->responder_auth = lib->settings->get_str(lib->settings, this->responder_auth = lib->settings->get_str(lib->settings,
"charon.plugins.load-tester.responder_auth", "pubkey"); "charon.plugins.load-tester.responder_auth", "pubkey");
this->initiator_id = lib->settings->get_str(lib->settings,
"charon.plugins.load-tester.initiator_id", NULL);
this->responder_id = lib->settings->get_str(lib->settings,
"charon.plugins.load-tester.responder_id", NULL);
this->port = lib->settings->get_int(lib->settings, this->port = lib->settings->get_int(lib->settings,
"charon.plugins.load-tester.dynamic_port", 0); "charon.plugins.load-tester.dynamic_port", 0);