eap-dynamic: Publish the get_auth() method of the wrapped EAP method
authorTobias Brunner <tobias@strongswan.org>
Wed, 1 Feb 2017 10:16:42 +0000 (11:16 +0100)
committerTobias Brunner <tobias@strongswan.org>
Tue, 7 Feb 2017 09:52:24 +0000 (10:52 +0100)
Fixes #2238.

src/libcharon/plugins/eap_dynamic/eap_dynamic.c

index d0f0595..83ccd3a 100644 (file)
@@ -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)