diff options
Diffstat (limited to 'src/wpa_parser.c')
-rw-r--r-- | src/wpa_parser.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/wpa_parser.c b/src/wpa_parser.c index 554e08c..6d25bf8 100644 --- a/src/wpa_parser.c +++ b/src/wpa_parser.c @@ -220,14 +220,26 @@ static int parse_ap_sta_connected(struct wfd_wpa_event *ev, char *tokens, size_t num) { int r; + size_t i; if (num < 1) return -EINVAL; - r = parse_mac(ev->p.ap_sta_connected.mac, tokens); + r = parse_mac(ev->p.ap_sta_connected.iface, tokens); if (r < 0) return r; + for (i = 1; i < num; ++i, tokens += strlen(tokens) + 1) { + if (strncmp(tokens, "p2p_dev_addr=", 13)) + continue; + + r = parse_mac(ev->p.ap_sta_connected.mac, &tokens[13]); + if (r < 0) + return r; + + return 0; + } + return 0; } @@ -235,14 +247,26 @@ static int parse_ap_sta_disconnected(struct wfd_wpa_event *ev, char *tokens, size_t num) { int r; + size_t i; if (num < 1) return -EINVAL; - r = parse_mac(ev->p.ap_sta_disconnected.mac, tokens); + r = parse_mac(ev->p.ap_sta_disconnected.iface, tokens); if (r < 0) return r; + for (i = 1; i < num; ++i, tokens += strlen(tokens) + 1) { + if (strncmp(tokens, "p2p_dev_addr=", 13)) + continue; + + r = parse_mac(ev->p.ap_sta_disconnected.mac, &tokens[13]); + if (r < 0) + return r; + + return 0; + } + return 0; } |