xref: /freebsd/contrib/wpa/src/ap/eth_p_oui.h (revision 67350cb56a69468c118bd4ccf6e361b7ebfa9eb4)
1*85732ac8SCy Schubert /*
2*85732ac8SCy Schubert  * hostapd / IEEE 802 OUI Extended Ethertype
3*85732ac8SCy Schubert  * Copyright (c) 2016, Jouni Malinen <j@w1.fi>
4*85732ac8SCy Schubert  *
5*85732ac8SCy Schubert  * This software may be distributed under the terms of the BSD license.
6*85732ac8SCy Schubert  * See README for more details.
7*85732ac8SCy Schubert  */
8*85732ac8SCy Schubert 
9*85732ac8SCy Schubert #ifndef ETH_P_OUI_H
10*85732ac8SCy Schubert #define ETH_P_OUI_H
11*85732ac8SCy Schubert 
12*85732ac8SCy Schubert struct eth_p_oui_ctx;
13*85732ac8SCy Schubert struct hostapd_data;
14*85732ac8SCy Schubert 
15*85732ac8SCy Schubert /* rx_callback only gets payload after OUI passed as buf */
16*85732ac8SCy Schubert struct eth_p_oui_ctx *
17*85732ac8SCy Schubert eth_p_oui_register(struct hostapd_data *hapd, const char *ifname, u8 oui_suffix,
18*85732ac8SCy Schubert 		   void (*rx_callback)(void *ctx, const u8 *src_addr,
19*85732ac8SCy Schubert 				       const u8 *dst_addr, u8 oui_suffix,
20*85732ac8SCy Schubert 				       const u8 *buf, size_t len),
21*85732ac8SCy Schubert 		   void *rx_callback_ctx);
22*85732ac8SCy Schubert void eth_p_oui_unregister(struct eth_p_oui_ctx *eth_p_oui);
23*85732ac8SCy Schubert int eth_p_oui_send(struct eth_p_oui_ctx *ctx, const u8 *src_addr,
24*85732ac8SCy Schubert 		   const u8 *dst_addr, const u8 *buf, size_t len);
25*85732ac8SCy Schubert void eth_p_oui_deliver(struct eth_p_oui_ctx *ctx, const u8 *src_addr,
26*85732ac8SCy Schubert 		       const u8 *dst_addr, const u8 *buf, size_t len);
27*85732ac8SCy Schubert 
28*85732ac8SCy Schubert #endif /* ETH_P_OUI_H */
29