Line data Source code
1 1 : /** @file 2 : * @brief Network interface promiscuous mode support 3 : * 4 : * An API for applications to start listening network traffic. 5 : * This requires support from network device driver and from application. 6 : */ 7 : 8 : /* 9 : * Copyright (c) 2018 Intel Corporation 10 : * 11 : * SPDX-License-Identifier: Apache-2.0 12 : */ 13 : 14 : #ifndef ZEPHYR_INCLUDE_NET_PROMISCUOUS_H_ 15 : #define ZEPHYR_INCLUDE_NET_PROMISCUOUS_H_ 16 : 17 : /** 18 : * @brief Promiscuous mode support. 19 : * @defgroup promiscuous Promiscuous mode 20 : * @since 1.13 21 : * @version 0.8.0 22 : * @ingroup networking 23 : * @{ 24 : */ 25 : 26 : #include <zephyr/net/net_pkt.h> 27 : #include <zephyr/net/net_if.h> 28 : 29 : #ifdef __cplusplus 30 : extern "C" { 31 : #endif 32 : 33 : /** 34 : * @brief Start to wait received network packets. 35 : * 36 : * @param timeout How long to wait before returning. 37 : * 38 : * @return Received net_pkt, NULL if not received any packet. 39 : */ 40 : #if defined(CONFIG_NET_PROMISCUOUS_MODE) 41 : struct net_pkt *net_promisc_mode_wait_data(k_timeout_t timeout); 42 : #else 43 1 : static inline struct net_pkt *net_promisc_mode_wait_data(k_timeout_t timeout) 44 : { 45 : ARG_UNUSED(timeout); 46 : 47 : return NULL; 48 : } 49 : #endif /* CONFIG_NET_PROMISCUOUS_MODE */ 50 : 51 : /** 52 : * @brief Enable promiscuous mode for a given network interface. 53 : * 54 : * @param iface Network interface 55 : * 56 : * @return 0 if ok, <0 if error 57 : */ 58 : #if defined(CONFIG_NET_PROMISCUOUS_MODE) 59 : int net_promisc_mode_on(struct net_if *iface); 60 : #else 61 1 : static inline int net_promisc_mode_on(struct net_if *iface) 62 : { 63 : ARG_UNUSED(iface); 64 : 65 : return -ENOTSUP; 66 : } 67 : #endif /* CONFIG_NET_PROMISCUOUS_MODE */ 68 : 69 : /** 70 : * @brief Disable promiscuous mode for a given network interface. 71 : * 72 : * @param iface Network interface 73 : * 74 : * @return 0 if ok, <0 if error 75 : */ 76 : #if defined(CONFIG_NET_PROMISCUOUS_MODE) 77 : int net_promisc_mode_off(struct net_if *iface); 78 : #else 79 1 : static inline int net_promisc_mode_off(struct net_if *iface) 80 : { 81 : ARG_UNUSED(iface); 82 : 83 : return -ENOTSUP; 84 : } 85 : #endif /* CONFIG_NET_PROMISCUOUS_MODE */ 86 : 87 : #ifdef __cplusplus 88 : } 89 : #endif 90 : 91 : /** 92 : * @} 93 : */ 94 : 95 : #endif /* ZEPHYR_INCLUDE_NET_PROMISCUOUS_H_ */