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