Add drv_event_eapol_rx() helper
authorJouni Malinen <j@w1.fi>
Sun, 3 Jan 2010 16:35:01 +0000 (18:35 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 3 Jan 2010 16:35:01 +0000 (18:35 +0200)
src/drivers/driver.h
src/drivers/driver_atheros.c
src/drivers/driver_bsd.c
src/drivers/driver_hostap.c
src/drivers/driver_madwifi.c
src/drivers/driver_nl80211.c
src/drivers/driver_privsep.c
src/drivers/driver_roboswitch.c
src/drivers/driver_test.c
src/drivers/driver_wired.c

index e338c0f..2b06d5a 100644 (file)
@@ -2305,4 +2305,15 @@ static inline void drv_event_disassoc(void *ctx, const u8 *addr)
        wpa_supplicant_event(ctx, EVENT_DISASSOC, &event);
 }
 
+static inline void drv_event_eapol_rx(void *ctx, const u8 *src, const u8 *data,
+                                     size_t data_len)
+{
+       union wpa_event_data event;
+       os_memset(&event, 0, sizeof(event));
+       event.eapol_rx.src = src;
+       event.eapol_rx.data = data;
+       event.eapol_rx.data_len = data_len;
+       wpa_supplicant_event(ctx, EVENT_EAPOL_RX, &event);
+}
+
 #endif /* DRIVER_H */
index 1e72ec5..3d04294 100644 (file)
@@ -1071,12 +1071,8 @@ static void
 handle_read(void *ctx, const u8 *src_addr, const u8 *buf, size_t len)
 {
        struct madwifi_driver_data *drv = ctx;
-       union wpa_event_data event;
-       os_memset(&event, 0, sizeof(event));
-       event.eapol_rx.src = src_addr;
-       event.eapol_rx.data = buf + sizeof(struct l2_ethhdr);
-       event.eapol_rx.data_len = len - sizeof(struct l2_ethhdr);
-       wpa_supplicant_event(drv->hapd, EVENT_EAPOL_RX, &event);
+       drv_event_eapol_rx(drv->hapd, src_addr, buf + sizeof(struct l2_ethhdr),
+                          len - sizeof(struct l2_ethhdr));
 }
 
 static void *
index ab01370..276588c 100644 (file)
@@ -736,12 +736,8 @@ static void
 handle_read(void *ctx, const u8 *src_addr, const u8 *buf, size_t len)
 {
        struct bsd_driver_data *drv = ctx;
-       union wpa_event_data event;
-       os_memset(&event, 0, sizeof(event));
-       event.eapol_rx.src = src_addr;
-       event.eapol_rx.data = buf + sizeof(struct l2_ethhdr);
-       event.eapol_rx.data_len = len - sizeof(struct l2_ethhdr);
-       wpa_supplicant_event(drv->hapd, EVENT_EAPOL_RX, &event);
+       drv_event_eapol_rx(drv->hapd, src_addr, buf + sizeof(struct l2_ethhdr),
+                          len - sizeof(struct l2_ethhdr));
 }
 
 static int
index 1aa52e8..4faec83 100644 (file)
@@ -112,11 +112,7 @@ static void handle_data(struct hostap_driver_data *drv, u8 *buf, size_t len,
        left -= 2;
        switch (ethertype) {
        case ETH_P_PAE:
-               os_memset(&event, 0, sizeof(event));
-               event.eapol_rx.src = sa;
-               event.eapol_rx.data = pos;
-               event.eapol_rx.data_len = left;
-               wpa_supplicant_event(drv->hapd, EVENT_EAPOL_RX, &event);
+               drv_event_eapol_rx(drv->hapd, sa, pos, left);
                break;
 
        default:
index 67efaab..31b32b5 100644 (file)
@@ -1141,12 +1141,8 @@ static void
 handle_read(void *ctx, const u8 *src_addr, const u8 *buf, size_t len)
 {
        struct madwifi_driver_data *drv = ctx;
-       union wpa_event_data event;
-       os_memset(&event, 0, sizeof(event));
-       event.eapol_rx.src = src_addr;
-       event.eapol_rx.data = buf + sizeof(struct l2_ethhdr);
-       event.eapol_rx.data_len = len - sizeof(struct l2_ethhdr);
-       wpa_supplicant_event(drv->hapd, EVENT_EAPOL_RX, &event);
+       drv_event_eapol_rx(drv->hapd, src_addr, buf + sizeof(struct l2_ethhdr),
+                          len - sizeof(struct l2_ethhdr));
 }
 
 static void *
index 5a36cf8..93d2727 100644 (file)
@@ -4233,14 +4233,8 @@ static void handle_eapol(int sock, void *eloop_ctx, void *sock_ctx)
                return;
        }
 
-       if (have_ifidx(drv, lladdr.sll_ifindex)) {
-               union wpa_event_data event;
-               os_memset(&event, 0, sizeof(event));
-               event.eapol_rx.src = lladdr.sll_addr;
-               event.eapol_rx.data = buf;
-               event.eapol_rx.data_len = len;
-               wpa_supplicant_event(drv->ctx, EVENT_EAPOL_RX, &event);
-       }
+       if (have_ifidx(drv, lladdr.sll_ifindex))
+               drv_event_eapol_rx(drv->ctx, lladdr.sll_addr, buf, len);
 }
 
 
index 223695a..2848521 100644 (file)
@@ -432,16 +432,9 @@ static void wpa_driver_privsep_event_ft_response(void *ctx, u8 *buf,
 
 static void wpa_driver_privsep_event_rx_eapol(void *ctx, u8 *buf, size_t len)
 {
-       union wpa_event_data event;
-
        if (len < ETH_ALEN)
                return;
-
-       os_memset(&event, 0, sizeof(event));
-       event.eapol_rx.src = buf;
-       event.eapol_rx.data = buf + ETH_ALEN;
-       event.eapol_rx.data_len = len - ETH_ALEN;
-       wpa_supplicant_event(ctx, EVENT_EAPOL_RX, &event);
+       drv_event_eapol_rx(ctx, buf, buf + ETH_ALEN, len - ETH_ALEN);
 }
 
 
index fe63bc1..6877eda 100644 (file)
@@ -179,14 +179,8 @@ static void wpa_driver_roboswitch_receive(void *priv, const u8 *src_addr,
        struct wpa_driver_roboswitch_data *drv = priv;
 
        if (len > 14 && WPA_GET_BE16(buf + 12) == ETH_P_EAPOL &&
-           os_memcmp(buf, drv->own_addr, ETH_ALEN) == 0) {
-               union wpa_event_data event;
-               os_memset(&event, 0, sizeof(event));
-               event.eapol_rx.src = src_addr;
-               event.eapol_rx.data = buf + 14;
-               event.eapol_rx.data_len = len - 14;
-               wpa_supplicant_event(drv->ctx, EVENT_EAPOL_RX, &event);
-       }
+           os_memcmp(buf, drv->own_addr, ETH_ALEN) == 0)
+               drv_event_eapol_rx(drv->ctx, src_addr, buf + 14, len - 14);
 }
 
 
index 818c197..5144317 100644 (file)
@@ -647,8 +647,6 @@ static void test_driver_eapol(struct wpa_driver_test_data *drv,
        struct test_client_socket *cli;
 #endif /* HOSTAPD */
        const u8 *src = NULL;
-       union wpa_event_data event;
-       void *ctx;
 
        if (datalen > 14) {
                /* Skip Ethernet header */
@@ -661,29 +659,19 @@ static void test_driver_eapol(struct wpa_driver_test_data *drv,
                datalen -= 14;
        }
 
-       os_memset(&event, 0, sizeof(event));
-       event.eapol_rx.data = data;
-       event.eapol_rx.data_len = datalen;
-
 #ifdef HOSTAPD
        cli = test_driver_get_cli(drv, from, fromlen);
        if (cli) {
-               event.eapol_rx.src = cli->addr;
-               ctx = cli->bss->bss_ctx;
+               drv_event_eapol_rx(cli->bss->bss_ctx, cli->addr, data,
+                                  datalen);
        } else {
                wpa_printf(MSG_DEBUG, "test_socket: EAPOL from unknown "
                           "client");
-               return;
        }
 #else /* HOSTAPD */
-       if (src) {
-               event.eapol_rx.src = src;
-               ctx = drv->ctx;
-       } else
-               return;
+       if (src)
+               drv_event_eapol_rx(drv->ctx, src, data, datalen);
 #endif /* HOSTAPD */
-
-       wpa_supplicant_event(ctx, EVENT_EAPOL_RX, &event);
 }
 
 
@@ -1811,7 +1799,6 @@ static void wpa_driver_test_eapol(struct wpa_driver_test_data *drv,
                                  const u8 *data, size_t data_len)
 {
        const u8 *src = drv->bssid;
-       union wpa_event_data event;
 
        if (data_len > 14) {
                /* Skip Ethernet header */
@@ -1820,11 +1807,7 @@ static void wpa_driver_test_eapol(struct wpa_driver_test_data *drv,
                data_len -= 14;
        }
 
-       os_memset(&event, 0, sizeof(event));
-       event.eapol_rx.src = src;
-       event.eapol_rx.data = data;
-       event.eapol_rx.data_len = data_len;
-       wpa_supplicant_event(drv->ctx, EVENT_EAPOL_RX, &event);
+       drv_event_eapol_rx(drv->ctx, src, data, data_len);
 }
 
 
index ba6ae00..17e6cd3 100644 (file)
@@ -140,12 +140,7 @@ static void handle_data(void *ctx, unsigned char *buf, size_t len)
 
                        pos = (u8 *) (hdr + 1);
                        left = len - sizeof(*hdr);
-
-                       os_memset(&event, 0, sizeof(event));
-                       event.eapol_rx.src = sa;
-                       event.eapol_rx.data = pos;
-                       event.eapol_rx.data_len = left;
-                       wpa_supplicant_event(ctx, EVENT_EAPOL_RX, &event);
+                       drv_event_eapol_rx(ctx, sa, pos, left);
                break;
 
        default: