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_ */
|