mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-21 03:32:42 +01:00
eap: Load MTU settings from iwd.conf
This commit is contained in:
parent
ec93454e65
commit
d03f23200a
15
src/eap.c
15
src/eap.c
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include "eap.h"
|
#include "eap.h"
|
||||||
|
|
||||||
|
static uint32_t default_mtu;
|
||||||
struct l_queue *eap_methods;
|
struct l_queue *eap_methods;
|
||||||
|
|
||||||
struct eap_state {
|
struct eap_state {
|
||||||
@ -58,7 +59,7 @@ struct eap_state *eap_new(eap_tx_packet_func_t tx_packet,
|
|||||||
eap = l_new(struct eap_state, 1);
|
eap = l_new(struct eap_state, 1);
|
||||||
|
|
||||||
eap->last_id = -1;
|
eap->last_id = -1;
|
||||||
eap->mtu = 1024;
|
eap->mtu = default_mtu;
|
||||||
|
|
||||||
eap->tx_packet = tx_packet;
|
eap->tx_packet = tx_packet;
|
||||||
eap->complete = complete;
|
eap->complete = complete;
|
||||||
@ -504,10 +505,20 @@ static void __eap_method_disable(struct eap_method_desc *start,
|
|||||||
extern struct eap_method_desc __start___eap[];
|
extern struct eap_method_desc __start___eap[];
|
||||||
extern struct eap_method_desc __stop___eap[];
|
extern struct eap_method_desc __stop___eap[];
|
||||||
|
|
||||||
void eap_init(void)
|
void eap_init(uint32_t mtu)
|
||||||
{
|
{
|
||||||
eap_methods = l_queue_new();
|
eap_methods = l_queue_new();
|
||||||
__eap_method_enable(__start___eap, __stop___eap);
|
__eap_method_enable(__start___eap, __stop___eap);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RFC 3748, Section 3.1, [4], "Minimum MTU":
|
||||||
|
* EAP is capable of functioning on lower layers that
|
||||||
|
* provide an EAP MTU size of 1020 octets or greater.
|
||||||
|
*/
|
||||||
|
if (mtu == 0)
|
||||||
|
default_mtu = 1020;
|
||||||
|
else
|
||||||
|
default_mtu = mtu;
|
||||||
}
|
}
|
||||||
|
|
||||||
void eap_exit(void)
|
void eap_exit(void)
|
||||||
|
@ -59,7 +59,7 @@ size_t eap_get_mtu(struct eap_state *eap);
|
|||||||
|
|
||||||
void eap_rx_packet(struct eap_state *eap, const uint8_t *pkt, size_t len);
|
void eap_rx_packet(struct eap_state *eap, const uint8_t *pkt, size_t len);
|
||||||
|
|
||||||
void eap_init(void);
|
void eap_init(uint32_t default_mtu);
|
||||||
void eap_exit(void);
|
void eap_exit(void);
|
||||||
|
|
||||||
/* EAP method API */
|
/* EAP method API */
|
||||||
|
@ -1642,8 +1642,6 @@ bool eapol_init()
|
|||||||
{
|
{
|
||||||
state_machines = l_queue_new();
|
state_machines = l_queue_new();
|
||||||
|
|
||||||
eap_init();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1654,7 +1652,5 @@ bool eapol_exit()
|
|||||||
|
|
||||||
l_queue_destroy(state_machines, eapol_sm_destroy);
|
l_queue_destroy(state_machines, eapol_sm_destroy);
|
||||||
|
|
||||||
eap_exit();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "src/wiphy.h"
|
#include "src/wiphy.h"
|
||||||
#include "src/dbus.h"
|
#include "src/dbus.h"
|
||||||
#include "src/network.h"
|
#include "src/network.h"
|
||||||
|
#include "src/eap.h"
|
||||||
#include "src/eapol.h"
|
#include "src/eapol.h"
|
||||||
#include "src/scan.h"
|
#include "src/scan.h"
|
||||||
#include "src/wsc.h"
|
#include "src/wsc.h"
|
||||||
@ -145,6 +146,7 @@ int main(int argc, char *argv[])
|
|||||||
struct l_genl *genl;
|
struct l_genl *genl;
|
||||||
struct l_genl_family *nl80211;
|
struct l_genl_family *nl80211;
|
||||||
char *config_path;
|
char *config_path;
|
||||||
|
uint32_t eap_mtu;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int opt;
|
int opt;
|
||||||
@ -244,6 +246,10 @@ int main(int argc, char *argv[])
|
|||||||
l_genl_family_set_watches(nl80211, nl80211_appeared, nl80211_vanished,
|
l_genl_family_set_watches(nl80211, nl80211_appeared, nl80211_vanished,
|
||||||
nl80211, NULL);
|
nl80211, NULL);
|
||||||
|
|
||||||
|
if (!l_settings_get_uint(iwd_config, "EAP", "mtu", &eap_mtu))
|
||||||
|
eap_mtu = 1400; /* on WiFi the real MTU is around 2304 */
|
||||||
|
|
||||||
|
eap_init(eap_mtu);
|
||||||
eapol_init();
|
eapol_init();
|
||||||
network_init();
|
network_init();
|
||||||
known_networks_init();
|
known_networks_init();
|
||||||
@ -256,6 +262,7 @@ int main(int argc, char *argv[])
|
|||||||
known_networks_exit();
|
known_networks_exit();
|
||||||
network_exit();
|
network_exit();
|
||||||
eapol_exit();
|
eapol_exit();
|
||||||
|
eap_exit();
|
||||||
|
|
||||||
l_genl_family_unref(nl80211);
|
l_genl_family_unref(nl80211);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user