summarylogtreecommitdiffstats
path: root/2238-eap-dynamic-auth.patch
diff options
context:
space:
mode:
Diffstat (limited to '2238-eap-dynamic-auth.patch')
-rw-r--r--2238-eap-dynamic-auth.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/2238-eap-dynamic-auth.patch b/2238-eap-dynamic-auth.patch
new file mode 100644
index 000000000000..17b954ea7d38
--- /dev/null
+++ b/2238-eap-dynamic-auth.patch
@@ -0,0 +1,38 @@
+diff --git a/src/libcharon/plugins/eap_dynamic/eap_dynamic.c b/src/libcharon/plugins/eap_dynamic/eap_dynamic.c
+index d0f0595de..83ccd3a8a 100644
+--- a/src/libcharon/plugins/eap_dynamic/eap_dynamic.c
++++ b/src/libcharon/plugins/eap_dynamic/eap_dynamic.c
+@@ -94,6 +94,13 @@ static eap_method_t *load_method(private_eap_dynamic_t *this,
+ return method;
+ }
+
++METHOD(eap_method_t, get_auth, auth_cfg_t*,
++ private_eap_dynamic_t *this)
++{
++ /* get_auth() is only registered if the EAP method supports it */
++ return this->method->get_auth(this->method);
++}
++
+ /**
+ * Select the first method we can instantiate and is supported by both peers.
+ */
+@@ -135,6 +142,10 @@ static void select_method(private_eap_dynamic_t *this)
+ this->method = load_method(this, entry->type, entry->vendor);
+ if (this->method)
+ {
++ if (this->method->get_auth)
++ {
++ this->public.interface.get_auth = _get_auth;
++ }
+ if (entry->vendor)
+ {
+ DBG1(DBG_IKE, "vendor specific EAP method %d-%d selected",
+@@ -211,6 +222,7 @@ METHOD(eap_method_t, process, status_t,
+ /* restart with a different method */
+ this->method->destroy(this->method);
+ this->method = NULL;
++ this->public.interface.get_auth = NULL;
+ return initiate(this, out);
+ }
+ if (!this->other_types)
+