410-multicall.patch 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. --- a/hostapd/Makefile
  2. +++ b/hostapd/Makefile
  3. @@ -14,6 +14,7 @@ CFLAGS += -I../src/utils
  4. # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include
  5. -include .config
  6. +-include $(if $(MULTICALL), ../wpa_supplicant/.config)
  7. ifndef CONFIG_OS
  8. ifdef CONFIG_NATIVE_WINDOWS
  9. @@ -168,10 +169,14 @@ ifdef CONFIG_IEEE80211N
  10. CFLAGS += -DCONFIG_IEEE80211N
  11. endif
  12. +ifndef MULTICALL
  13. +CFLAGS += -DNO_SUPPLICANT
  14. +endif
  15. +
  16. include ../src/drivers/drivers.mak
  17. -OBJS += $(DRV_AP_OBJS)
  18. -CFLAGS += $(DRV_AP_CFLAGS)
  19. -LDFLAGS += $(DRV_AP_LDFLAGS)
  20. +OBJS += $(sort $(DRV_AP_OBJS) $(if $(MULTICALL),$(DRV_WPA_OBJS)))
  21. +CFLAGS += $(DRV_AP_CFLAGS) $(if $(MULTICALL),$(DRV_WPA_CFLAGS))
  22. +LDFLAGS += $(DRV_AP_LDFLAGS) $(if $(MULTICALL),$(DRV_WPA_LDFLAGS))
  23. LIBS += $(DRV_AP_LIBS)
  24. ifdef CONFIG_L2_PACKET
  25. @@ -815,6 +820,12 @@ install: all
  26. BCHECK=../src/drivers/build.hostapd
  27. +hostapd_multi.a: $(BCHECK) $(OBJS)
  28. + $(Q)$(CC) -c -o hostapd_multi.o -Dmain=hostapd_main $(CFLAGS) main.c
  29. + @$(E) " CC " $<
  30. + @rm -f $@
  31. + @$(AR) cr $@ hostapd_multi.o $(OBJS)
  32. +
  33. hostapd: $(BCHECK) $(OBJS)
  34. $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
  35. @$(E) " LD " $@
  36. @@ -853,6 +864,12 @@ HOBJS += ../src/crypto/aes-internal.o
  37. HOBJS += ../src/crypto/aes-internal-enc.o
  38. endif
  39. +dump_cflags:
  40. + @echo -n $(CFLAGS) " "
  41. +
  42. +dump_ldflags:
  43. + @echo -n $(LDFLAGS) $(LIBS) $(EXTRALIBS) " "
  44. +
  45. nt_password_hash: $(NOBJS)
  46. $(Q)$(CC) $(LDFLAGS) -o nt_password_hash $(NOBJS) $(LIBS_n)
  47. @$(E) " LD " $@
  48. --- a/wpa_supplicant/Makefile
  49. +++ b/wpa_supplicant/Makefile
  50. @@ -14,6 +14,7 @@ CFLAGS += -I../src
  51. CFLAGS += -I../src/utils
  52. -include .config
  53. +-include $(if $(MULTICALL),../hostapd/.config)
  54. BINALL=wpa_supplicant wpa_cli
  55. @@ -673,6 +674,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
  56. CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
  57. LIBS += -ldl -rdynamic
  58. endif
  59. +else
  60. + ifdef MULTICALL
  61. + OBJS += ../src/eap_common/eap_common.o
  62. + endif
  63. endif
  64. ifdef CONFIG_AP
  65. @@ -681,9 +686,11 @@ NEED_EAP_COMMON=y
  66. NEED_RSN_AUTHENTICATOR=y
  67. CFLAGS += -DCONFIG_AP
  68. OBJS += ap.o
  69. +ifndef MULTICALL
  70. CFLAGS += -DCONFIG_NO_RADIUS
  71. CFLAGS += -DCONFIG_NO_ACCOUNTING
  72. CFLAGS += -DCONFIG_NO_VLAN
  73. +endif
  74. OBJS += ../src/ap/hostapd.o
  75. OBJS += ../src/ap/wpa_auth_glue.o
  76. OBJS += ../src/ap/utils.o
  77. @@ -731,10 +738,18 @@ endif
  78. ifdef CONFIG_INTERWORKING
  79. OBJS += ../src/ap/gas_serv.o
  80. endif
  81. +else
  82. + ifdef MULTICALL
  83. + OBJS += ../src/eap_server/eap_server.o
  84. + OBJS += ../src/eap_server/eap_server_identity.o
  85. + OBJS += ../src/eap_server/eap_server_methods.o
  86. + endif
  87. endif
  88. ifdef NEED_RSN_AUTHENTICATOR
  89. +ifndef MULTICALL
  90. CFLAGS += -DCONFIG_NO_RADIUS
  91. +endif
  92. NEED_AES_WRAP=y
  93. OBJS += ../src/ap/wpa_auth.o
  94. OBJS += ../src/ap/wpa_auth_ie.o
  95. @@ -1419,6 +1434,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
  96. $(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config
  97. +wpa_supplicant_multi.a: .config $(BCHECK) $(OBJS) $(EXTRA_progs)
  98. + $(Q)$(CC) -c -o wpa_supplicant_multi.o -Dmain=wpa_supplicant_main $(CFLAGS) main.c
  99. + @$(E) " CC " $<
  100. + @rm -f $@
  101. + @$(AR) cr $@ wpa_supplicant_multi.o $(OBJS)
  102. +
  103. wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
  104. $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
  105. @$(E) " LD " $@
  106. @@ -1485,6 +1506,12 @@ eap_ikev2.so: ../src/eap_peer/eap_ikev2.
  107. %@.service: %.service.arg.in
  108. sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
  109. +dump_cflags:
  110. + @echo -n $(CFLAGS) " "
  111. +
  112. +dump_ldflags:
  113. + @echo -n $(LDFLAGS) $(LIBS) $(EXTRALIBS) " "
  114. +
  115. wpa_supplicant.exe: wpa_supplicant
  116. mv -f $< $@
  117. wpa_cli.exe: wpa_cli
  118. --- a/src/drivers/driver.h
  119. +++ b/src/drivers/driver.h
  120. @@ -3572,8 +3572,8 @@ union wpa_event_data {
  121. * Driver wrapper code should call this function whenever an event is received
  122. * from the driver.
  123. */
  124. -void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
  125. - union wpa_event_data *data);
  126. +extern void (*wpa_supplicant_event)(void *ctx, enum wpa_event_type event,
  127. + union wpa_event_data *data);
  128. /*
  129. --- a/src/ap/drv_callbacks.c
  130. +++ b/src/ap/drv_callbacks.c
  131. @@ -467,8 +467,8 @@ static void hostapd_event_eapol_rx(struc
  132. }
  133. -void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
  134. - union wpa_event_data *data)
  135. +void hostapd_wpa_event(void *ctx, enum wpa_event_type event,
  136. + union wpa_event_data *data)
  137. {
  138. struct hostapd_data *hapd = ctx;
  139. #ifndef CONFIG_NO_STDOUT_DEBUG
  140. --- a/wpa_supplicant/wpa_priv.c
  141. +++ b/wpa_supplicant/wpa_priv.c
  142. @@ -819,8 +819,8 @@ static void wpa_priv_send_ft_response(st
  143. }
  144. -void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
  145. - union wpa_event_data *data)
  146. +static void supplicant_event(void *ctx, enum wpa_event_type event,
  147. + union wpa_event_data *data)
  148. {
  149. struct wpa_priv_interface *iface = ctx;
  150. @@ -962,6 +962,7 @@ int main(int argc, char *argv[])
  151. if (os_program_init())
  152. return -1;
  153. + wpa_supplicant_event = supplicant_event;
  154. wpa_priv_fd_workaround();
  155. for (;;) {
  156. --- a/wpa_supplicant/events.c
  157. +++ b/wpa_supplicant/events.c
  158. @@ -2046,8 +2046,8 @@ static void wnm_action_rx(struct wpa_sup
  159. }
  160. -void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
  161. - union wpa_event_data *data)
  162. +void supplicant_event(void *ctx, enum wpa_event_type event,
  163. + union wpa_event_data *data)
  164. {
  165. struct wpa_supplicant *wpa_s = ctx;
  166. u16 reason_code = 0;
  167. --- a/wpa_supplicant/wpa_supplicant.c
  168. +++ b/wpa_supplicant/wpa_supplicant.c
  169. @@ -2704,6 +2704,9 @@ static void wpa_supplicant_deinit_iface(
  170. }
  171. }
  172. +extern void supplicant_event(void *ctx, enum wpa_event_type event,
  173. + union wpa_event_data *data);
  174. +
  175. /**
  176. * wpa_supplicant_add_iface - Add a new network interface
  177. @@ -2895,6 +2898,7 @@ struct wpa_global * wpa_supplicant_init(
  178. wpa_msg_register_ifname_cb(wpa_supplicant_msg_ifname_cb);
  179. #endif /* CONFIG_NO_WPA_MSG */
  180. + wpa_supplicant_event = supplicant_event;
  181. wpa_debug_open_file(params->wpa_debug_file_path);
  182. if (params->wpa_debug_syslog)
  183. wpa_debug_open_syslog();
  184. --- a/hostapd/main.c
  185. +++ b/hostapd/main.c
  186. @@ -533,6 +533,9 @@ static const char * hostapd_msg_ifname_c
  187. return NULL;
  188. }
  189. +void hostapd_wpa_event(void *ctx, enum wpa_event_type event,
  190. + union wpa_event_data *data);
  191. +
  192. int main(int argc, char *argv[])
  193. {
  194. @@ -546,6 +549,7 @@ int main(int argc, char *argv[])
  195. if (os_program_init())
  196. return -1;
  197. + wpa_supplicant_event = hostapd_wpa_event;
  198. for (;;) {
  199. c = getopt(argc, argv, "Bde:f:hKP:tv");
  200. if (c < 0)
  201. --- a/src/drivers/drivers.c
  202. +++ b/src/drivers/drivers.c
  203. @@ -7,7 +7,11 @@
  204. */
  205. #include "includes.h"
  206. +#include "common.h"
  207. +#include "driver.h"
  208. +void (*wpa_supplicant_event)(void *ctx, enum wpa_event_type event,
  209. + union wpa_event_data *data);
  210. #ifdef CONFIG_DRIVER_WEXT
  211. extern struct wpa_driver_ops wpa_driver_wext_ops; /* driver_wext.c */