Network Packet Capture
Overview
The net_capture
API allows user to monitor the network
traffic in one of the Zephyr network interfaces and send that traffic to
external system for analysis. The monitoring can be setup either manually
using net-shell
or automatically by using the net_capture
API.
Sample usage
See Network capture sample application and Monitor Network Traffic for details.
API Reference
- group net_capture
Network packet capture support functions.
Functions
-
int net_capture_setup(const char *remote_addr, const char *my_local_addr, const char *peer_addr, const struct device **dev)
Setup network packet capturing support.
- Parameters
remote_addr – The value tells the tunnel remote/outer endpoint IP address. The IP address can be either IPv4 or IPv6 address. This address is used to select the network interface where the tunnel is created.
my_local_addr – The local/inner IP address of the tunnel. Can contain also port number which is used as UDP source port.
peer_addr – The peer/inner IP address of the tunnel. Can contain also port number which is used as UDP destination port.
dev – Network capture device. This is returned to the caller.
- Returns
0 if ok, <0 if network packet capture setup failed
-
static inline int net_capture_cleanup(const struct device *dev)
Cleanup network packet capturing support.
This should be called after the capturing is done and resources can be released.
- Parameters
dev – Network capture device. User must allocate using the net_capture_setup() function.
- Returns
0 if ok, <0 if network packet capture cleanup failed
-
static inline int net_capture_enable(const struct device *dev, struct net_if *iface)
Enable network packet capturing support.
This creates tunnel network interface where all the captured packets are pushed. The captured network packets are placed in UDP packets that are sent to tunnel peer.
- Parameters
dev – Network capture device
iface – Network interface we are starting to capture packets.
- Returns
0 if ok, <0 if network packet capture enable failed
-
static inline bool net_capture_is_enabled(const struct device *dev)
Is network packet capture enabled or disabled.
- Parameters
dev – Network capture device
- Returns
True if enabled, False if network capture is disabled.
-
static inline int net_capture_disable(const struct device *dev)
Disable network packet capturing support.
- Parameters
dev – Network capture device
- Returns
0 if ok, <0 if network packet capture disable failed
-
static inline int net_capture_send(const struct device *dev, struct net_if *iface, struct net_pkt *pkt)
Send captured packet.
- Parameters
dev – Network capture device
iface – Network interface the packet is being sent
pkt – The network packet that is sent
- Returns
0 if ok, <0 if network packet capture send failed
-
int net_capture_setup(const char *remote_addr, const char *my_local_addr, const char *peer_addr, const struct device **dev)