/** * wpa_ether_send - Send Ethernet frame * @wpa_s: Pointer to wpa_supplicant data * @dest: Destination MAC address * @proto: Ethertype in host byte order * @buf: Frame payload starting from IEEE 802.1X header * @len: Frame payload length * Returns: >=0 on success, <0 on failure */ static int wpa_ether_send(struct wpa_supplicant *wpa_s, const u8 *dest, u16 proto, const u8 *buf, size_t len) { if (wpa_s->l2) { return l2_packet_send(wpa_s->l2, dest, proto, buf, len); } return wpa_drv_send_eapol(wpa_s, dest, proto, buf, len); }
static int supp_ether_send(void *ctx, const u8 *dest, u16 proto, const u8 *buf, size_t len) { struct ibss_rsn_peer *peer = ctx; struct wpa_supplicant *wpa_s = peer->ibss_rsn->wpa_s; wpa_printf(MSG_DEBUG, "SUPP: %s(dest=" MACSTR " proto=0x%04x " "len=%lu)", __func__, MAC2STR(dest), proto, (unsigned long) len); if (wpa_s->l2) return l2_packet_send(wpa_s->l2, dest, proto, buf, len); return wpa_drv_send_eapol(wpa_s, dest, proto, buf, len); }
static int auth_send_eapol(void *ctx, const u8 *addr, const u8 *data, size_t data_len, int encrypt) { struct ibss_rsn *ibss_rsn = ctx; struct wpa_supplicant *wpa_s = ibss_rsn->wpa_s; wpa_printf(MSG_DEBUG, "AUTH: %s(addr=" MACSTR " data_len=%lu " "encrypt=%d)", __func__, MAC2STR(addr), (unsigned long) data_len, encrypt); if (wpa_s->l2) return l2_packet_send(wpa_s->l2, addr, ETH_P_EAPOL, data, data_len); return wpa_drv_send_eapol(wpa_s, addr, ETH_P_EAPOL, data, data_len); }
/** * wpa_ether_send - Send Ethernet frame * @wpa_s: Pointer to wpa_supplicant data * @dest: Destination MAC address * @proto: Ethertype in host byte order * @buf: Frame payload starting from IEEE 802.1X header * @len: Frame payload length * Returns: >=0 on success, <0 on failure */ static int wpa_ether_send(struct wpa_supplicant *wpa_s, const u8 *dest, u16 proto, const u8 *buf, size_t len) { #ifdef CONFIG_TESTING_OPTIONS if (wpa_s->ext_eapol_frame_io && proto == ETH_P_EAPOL) { size_t hex_len = 2 * len + 1; char *hex = os_malloc(hex_len); if (hex == NULL) return -1; wpa_snprintf_hex(hex, hex_len, buf, len); wpa_msg(wpa_s, MSG_INFO, "EAPOL-TX " MACSTR " %s", MAC2STR(dest), hex); os_free(hex); return 0; } #endif /* CONFIG_TESTING_OPTIONS */ if (wpa_s->l2) { return l2_packet_send(wpa_s->l2, dest, proto, buf, len); } return wpa_drv_send_eapol(wpa_s, dest, proto, buf, len); }