Lines Matching defs:l2

56 	struct l2_packet_data *l2[2];
84 int l2_packet_get_own_addr(struct l2_packet_data *l2, u8 *addr)
86 os_memcpy(addr, l2->own_addr, ETH_ALEN);
91 int l2_packet_send(struct l2_packet_data *l2, const u8 *dst_addr, u16 proto,
102 if (l2 == NULL)
112 if (l2->l2_hdr) {
122 os_memcpy(eth->h_source, l2->own_addr, ETH_ALEN);
157 static void l2_packet_callback(struct l2_packet_data *l2);
160 static void l2_packet_rx_thread_try_read(struct l2_packet_data *l2)
165 if (!ReadFile(driver_ndis_get_ndisuio_handle(), l2->rx_buf,
166 sizeof(l2->rx_buf), &l2->rx_written, NULL)) {
182 (int) l2->rx_written);
188 SetEvent(l2->rx_avail);
198 struct l2_packet_data *l2 = arg;
233 l2_packet_rx_thread_try_read(l2);
250 static int l2_ndisuio_start_read(struct l2_packet_data *l2, int recursive)
252 os_memset(&l2->rx_overlapped, 0, sizeof(l2->rx_overlapped));
253 l2->rx_overlapped.hEvent = l2->rx_avail;
254 if (!ReadFile(driver_ndis_get_ndisuio_handle(), l2->rx_buf,
255 sizeof(l2->rx_buf), &l2->rx_written, &l2->rx_overlapped))
271 l2_packet_callback(l2);
279 static void l2_packet_callback(struct l2_packet_data *l2)
283 struct l2_ethhdr *ethhdr = (struct l2_ethhdr *) l2->rx_buf;
286 (int) l2->rx_written);
288 if (l2->l2_hdr || l2->rx_written < sizeof(*ethhdr)) {
290 rx_len = l2->rx_written;
293 rx_len = l2->rx_written - sizeof(*ethhdr);
297 l2->rx_callback(l2->rx_callback_ctx, rx_src, rx_buf, rx_len);
299 l2_ndisuio_start_read(l2, 1);
306 struct l2_packet_data *l2 = eloop_data;
309 l2 = l2_ndisuio_global->l2[l2_ndisuio_global->refcount - 1];
311 ResetEvent(l2->rx_avail);
315 &l2->rx_overlapped, &l2->rx_written, FALSE)) {
322 l2_packet_callback(l2);
354 struct l2_packet_data *l2;
369 l2 = os_zalloc(sizeof(struct l2_packet_data));
370 if (l2 == NULL)
372 l2_ndisuio_global->l2[l2_ndisuio_global->refcount - 1] = l2;
374 os_strlcpy(l2->ifname, ifname, sizeof(l2->ifname));
375 l2->rx_callback = rx_callback;
376 l2->rx_callback_ctx = rx_callback_ctx;
377 l2->l2_hdr = l2_hdr;
380 os_memcpy(l2->own_addr, own_addr, ETH_ALEN);
383 os_free(l2);
390 if (l2_ndisuio_global->l2[0])
391 l2->rx_avail = l2_ndisuio_global->l2[0]->rx_avail;
392 return l2;
395 l2->rx_avail = CreateEvent(NULL, TRUE, FALSE, NULL);
396 if (l2->rx_avail == NULL) {
397 os_free(l2);
401 eloop_register_event(l2->rx_avail, sizeof(l2->rx_avail),
402 l2_packet_rx_event, l2, NULL);
428 eloop_unregister_event(l2->rx_avail, sizeof(l2->rx_avail));
429 os_free(l2);
434 l2_packet_rx_thread, l2, 0,
439 eloop_unregister_event(l2->rx_avail, sizeof(l2->rx_avail));
442 os_free(l2);
446 l2_ndisuio_start_read(l2, 0);
449 return l2;
465 void l2_packet_deinit(struct l2_packet_data *l2)
467 if (l2 == NULL)
472 l2_ndisuio_global->l2[l2_ndisuio_global->refcount] = NULL;
514 eloop_unregister_event(l2->rx_avail, sizeof(l2->rx_avail));
515 CloseHandle(l2->rx_avail);
516 os_free(l2);
520 int l2_packet_get_ip_addr(struct l2_packet_data *l2, char *buf, size_t len)
526 void l2_packet_notify_auth_start(struct l2_packet_data *l2)
531 int l2_packet_set_packet_filter(struct l2_packet_data *l2,