30
30
#define DEFAULT_IFNAME "wlan0"
31
31
#define MAX_ARGS 32
32
32
33
- struct wpa_ctrl * ctrl_conn ;
34
- struct wpa_ctrl * mon_conn ;
35
33
struct wpa_ctrl * global_ctrl_conn ;
36
34
char * ifname_prefix = NULL ;
37
35
extern struct wpa_global * global ;
@@ -47,7 +45,7 @@ static int _wpa_ctrl_command(struct wpa_ctrl *ctrl, const char *cmd, int print,
47
45
size_t len ;
48
46
int ret ;
49
47
50
- if (ctrl_conn == NULL && global_ctrl_conn == NULL ) {
48
+ if (ctrl == NULL && global_ctrl_conn == NULL ) {
51
49
wpa_printf (MSG_ERROR , "Not connected to wpa_supplicant - command dropped." );
52
50
return -1 ;
53
51
}
@@ -94,30 +92,30 @@ static int wpa_ctrl_command_resp(struct wpa_ctrl *ctrl, const char *cmd, char *r
94
92
return _wpa_ctrl_command (ctrl , cmd , 0 , resp );
95
93
}
96
94
97
- int zephyr_wpa_cli_cmd_resp (const char * cmd , char * resp )
95
+ int zephyr_wpa_cli_cmd_resp (struct wpa_ctrl * ctrl , const char * cmd , char * resp )
98
96
{
99
- return _wpa_ctrl_command (ctrl_conn , cmd , 1 , resp );
97
+ return _wpa_ctrl_command (ctrl , cmd , 1 , resp );
100
98
}
101
99
102
100
static void wpa_cli_close_connection (struct wpa_supplicant * wpa_s )
103
101
{
104
102
int ret ;
105
103
106
- if (ctrl_conn == NULL )
104
+ if (wpa_s -> ctrl_conn == NULL )
107
105
return ;
108
106
109
- ret = wpa_ctrl_detach (ctrl_conn );
107
+ ret = wpa_ctrl_detach (wpa_s -> ctrl_conn );
110
108
if (ret < 0 ) {
111
109
wpa_printf (MSG_INFO , "Failed to detach from wpa_supplicant: %s" ,
112
110
strerror (errno ));
113
111
}
114
- wpa_ctrl_close (ctrl_conn );
115
- ctrl_conn = NULL ;
112
+ wpa_ctrl_close (wpa_s -> ctrl_conn );
113
+ wpa_s -> ctrl_conn = NULL ;
116
114
117
115
eloop_unregister_read_sock (wpa_s -> ctrl_iface -> mon_sock_pair [0 ]);
118
116
119
- wpa_ctrl_close (mon_conn );
120
- mon_conn = NULL ;
117
+ wpa_ctrl_close (wpa_s -> mon_conn );
118
+ wpa_s -> mon_conn = NULL ;
121
119
122
120
close (wpa_s -> ctrl_iface -> mon_sock_pair [1 ]);
123
121
wpa_s -> ctrl_iface -> mon_sock_pair [1 ] = -1 ;
@@ -178,15 +176,15 @@ static void wpa_cli_mon_receive(int sock, void *eloop_ctx,
178
176
{
179
177
struct wpa_supplicant * wpa_s = (struct wpa_supplicant * )eloop_ctx ;
180
178
181
- wpa_cli_recv_pending (mon_conn , wpa_s );
179
+ wpa_cli_recv_pending (wpa_s -> mon_conn , wpa_s );
182
180
}
183
181
184
182
static int wpa_cli_open_connection (struct wpa_supplicant * wpa_s )
185
183
{
186
184
int ret ;
187
185
188
- ctrl_conn = wpa_ctrl_open (wpa_s -> ctrl_iface -> sock_pair [0 ]);
189
- if (ctrl_conn == NULL ) {
186
+ wpa_s -> ctrl_conn = wpa_ctrl_open (wpa_s -> ctrl_iface -> sock_pair [0 ]);
187
+ if (wpa_s -> ctrl_conn == NULL ) {
190
188
wpa_printf (MSG_ERROR , "Failed to open control connection to %d" ,
191
189
wpa_s -> ctrl_iface -> sock_pair [0 ]);
192
190
return -1 ;
@@ -198,17 +196,18 @@ static int wpa_cli_open_connection(struct wpa_supplicant *wpa_s)
198
196
strerror (errno ));
199
197
goto fail ;
200
198
}
201
- mon_conn = wpa_ctrl_open (wpa_s -> ctrl_iface -> mon_sock_pair [0 ]);
202
- if (mon_conn ) {
203
- if (wpa_ctrl_attach (ctrl_conn ) == 0 ) {
199
+ wpa_s -> mon_conn = wpa_ctrl_open (wpa_s -> ctrl_iface -> mon_sock_pair [0 ]);
200
+ if (wpa_s -> mon_conn ) {
201
+ if (wpa_ctrl_attach (wpa_s -> ctrl_conn ) == 0 ) {
204
202
eloop_register_read_sock (wpa_s -> ctrl_iface -> mon_sock_pair [0 ],
205
203
wpa_cli_mon_receive , wpa_s , NULL );
206
204
}
207
205
}
208
206
209
207
return 0 ;
210
208
fail :
211
- wpa_ctrl_close (ctrl_conn );
209
+ wpa_ctrl_close (wpa_s -> ctrl_conn );
210
+ wpa_s -> ctrl_conn = NULL ;
212
211
return -1 ;
213
212
}
214
213
@@ -411,12 +410,12 @@ void zephyr_wpa_ctrl_deinit(void *wpa_s)
411
410
wpa_cli_close_connection ((struct wpa_supplicant * )wpa_s );
412
411
}
413
412
414
- int zephyr_wpa_ctrl_zephyr_cmd (int argc , const char * argv [])
413
+ int zephyr_wpa_ctrl_zephyr_cmd (struct wpa_ctrl * ctrl , int argc , const char * argv [])
415
414
{
416
- return wpa_request (ctrl_conn , argc , (char * * ) argv );
415
+ return wpa_request (ctrl , argc , (char * * ) argv );
417
416
}
418
417
419
- int zephyr_wpa_cli_cmd_v (const char * fmt , ...)
418
+ int zephyr_wpa_cli_cmd_v (struct wpa_ctrl * ctrl , const char * fmt , ...)
420
419
{
421
420
va_list cmd_args ;
422
421
int argc ;
@@ -433,15 +432,15 @@ int zephyr_wpa_cli_cmd_v(const char *fmt, ...)
433
432
for (int i = 0 ; i < argc ; i ++ )
434
433
wpa_printf (MSG_DEBUG , "argv[%d]: %s" , i , argv [i ]);
435
434
436
- return zephyr_wpa_ctrl_zephyr_cmd (argc , argv );
435
+ return zephyr_wpa_ctrl_zephyr_cmd (ctrl , argc , argv );
437
436
}
438
437
439
- int z_wpa_ctrl_add_network (struct add_network_resp * resp )
438
+ int z_wpa_ctrl_add_network (struct wpa_ctrl * ctrl , struct add_network_resp * resp )
440
439
{
441
440
int ret ;
442
441
char buf [MAX_RESPONSE_SIZE ] = {0 };
443
442
444
- ret = wpa_ctrl_command_resp (ctrl_conn , "ADD_NETWORK" , buf );
443
+ ret = wpa_ctrl_command_resp (ctrl , "ADD_NETWORK" , buf );
445
444
if (ret ) {
446
445
return ret ;
447
446
}
@@ -456,12 +455,12 @@ int z_wpa_ctrl_add_network(struct add_network_resp *resp)
456
455
return 0 ;
457
456
}
458
457
459
- int z_wpa_ctrl_signal_poll (struct signal_poll_resp * resp )
458
+ int z_wpa_ctrl_signal_poll (struct wpa_ctrl * ctrl , struct signal_poll_resp * resp )
460
459
{
461
460
int ret ;
462
461
char buf [MAX_RESPONSE_SIZE ] = {0 };
463
462
464
- ret = wpa_ctrl_command_resp (ctrl_conn , "SIGNAL_POLL" , buf );
463
+ ret = wpa_ctrl_command_resp (ctrl , "SIGNAL_POLL" , buf );
465
464
if (ret ) {
466
465
return ret ;
467
466
}
@@ -476,12 +475,12 @@ int z_wpa_ctrl_signal_poll(struct signal_poll_resp *resp)
476
475
return 0 ;
477
476
}
478
477
479
- int z_wpa_ctrl_status (struct status_resp * resp )
478
+ int z_wpa_ctrl_status (struct wpa_ctrl * ctrl , struct status_resp * resp )
480
479
{
481
480
int ret ;
482
481
char buf [MAX_RESPONSE_SIZE ] = {0 };
483
482
484
- ret = wpa_ctrl_command_resp (ctrl_conn , "STATUS" , buf );
483
+ ret = wpa_ctrl_command_resp (ctrl , "STATUS" , buf );
485
484
if (ret ) {
486
485
return ret ;
487
486
}
0 commit comments