1 /*
2  * Copyright (c) 2023 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef __SUPP_MAIN_H_
7 #define __SUPP_MAIN_H_
8 
9 #ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_ENTERPRISE
10 /* At least one of the EAP methods need to be enabled in enterprise mode */
11 #if !defined(CONFIG_EAP_TLS) && !defined(CONFIG_EAP_TTLS) && \
12 	!defined(CONFIG_EAP_PEAP) && !defined(CONFIG_EAP_FAST) && \
13 	!defined(CONFIG_EAP_SIM) && !defined(CONFIG_EAP_AKA) && \
14 	!defined(CONFIG_EAP_MD5) && !defined(CONFIG_EAP_MSCHAPV2) && \
15 	!defined(CONFIG_EAP_PSK) && !defined(CONFIG_EAP_PAX) && \
16 	!defined(CONFIG_EAP_SAKE) && !defined(CONFIG_EAP_GPSK) && \
17 	!defined(CONFIG_EAP_PWD) && !defined(CONFIG_EAP_EKE) && \
18 	!defined(CONFIG_EAP_IKEV2) && !defined(CONFIG_EAP_GTC) && \
19 	!defined(CONFIG_EAP_LEAP)
20 #error "At least one of the following EAP methods need to be defined    \
21 	CONFIG_EAP_TLS    \
22 	CONFIG_EAP_TTLS   \
23 	CONFIG_EAP_PEAP   \
24 	CONFIG_EAP_MD5        \
25 	CONFIG_EAP_MSCHAPV2    \
26 	CONFIG_EAP_LEAP    \
27 	CONFIG_EAP_PSK   \
28 	CONFIG_EAP_PAX   \
29 	CONFIG_EAP_SAKE   \
30 	CONFIG_EAP_GPSK   \
31 	CONFIG_EAP_PWD   \
32 	CONFIG_EAP_EKE   \
33 	CONFIG_EAP_IKEV2   \
34 	CONFIG_EAP_SIM   \
35 	CONFIG_EAP_AKA   \
36 	CONFIG_EAP_GTC   \
37 	CONFIG_EAP_ALL "
38 #endif /* EAP METHODS */
39 #endif /* CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_ENTERPRISE */
40 
41 #if !defined(CONFIG_NET_DHCPV4)
net_dhcpv4_start(struct net_if * iface)42 static inline void net_dhcpv4_start(struct net_if *iface)
43 {
44 	ARG_UNUSED(iface);
45 }
net_dhcpv4_stop(struct net_if * iface)46 static inline void net_dhcpv4_stop(struct net_if *iface)
47 {
48 	ARG_UNUSED(iface);
49 }
50 #else
51 #include <zephyr/net/dhcpv4.h>
52 #endif
53 
54 struct wpa_global *zephyr_get_default_supplicant_context(void);
55 struct wpa_supplicant *zephyr_get_handle_by_ifname(const char *ifname);
56 
57 #ifdef CONFIG_WIFI_NM_HOSTAPD_AP
58 #include "common.h"
59 #include "wpa_debug_zephyr.h"
60 
61 struct hostapd_iface *zephyr_get_hapd_handle_by_ifname(const char *ifname);
62 void wpa_supplicant_msg_send(void *ctx, int level, enum wpa_msg_type type, const char *txt,
63 			     size_t len);
64 void hostapd_msg_send(void *ctx, int level, enum wpa_msg_type type, const char *buf, size_t len);
65 #endif
66 
67 struct wpa_supplicant_event_msg {
68 #ifdef CONFIG_WIFI_NM_HOSTAPD_AP
69 	int hostapd;
70 #endif
71 	bool global;
72 	void *ctx;
73 	unsigned int event;
74 	void *data;
75 };
76 int zephyr_wifi_send_event(const struct wpa_supplicant_event_msg *msg);
77 #endif /* __SUPP_MAIN_H_ */
78