/* * Copyright (c) 2024 Nordic Semiconductor * * SPDX-License-Identifier: Apache-2.0 */ /* Defines for Linux cooked mode capture (SLL) */ #include #include /* Useful information about SLL header format can be found here * https://www.tcpdump.org/linktypes/LINKTYPE_LINUX_SLL.html */ #define SLL_HDR_LEN 16 /* Total header length */ #define SLL_ADDRLEN 8 /* Length of the address field */ struct sll_header { uint16_t sll_pkttype; /* Packet type */ uint16_t sll_hatype; /* Link-layer address type */ uint16_t sll_halen; /* Link-layer address length */ uint8_t sll_addr[SLL_ADDRLEN]; /* Link-layer address */ uint16_t sll_protocol; /* Protocol */ }; BUILD_ASSERT(sizeof(struct sll_header) == SLL_HDR_LEN); #define SLL2_HDR_LEN 20 /* Total header length */ struct sll2_header { uint16_t sll2_protocol; /* Protocol */ uint16_t sll2_reserved_mbz; /* Reserved - must be zero */ uint32_t sll2_if_index; /* 1-based interface index */ uint16_t sll2_hatype; /* Link-layer address type */ uint8_t sll2_pkttype; /* Packet type */ uint8_t sll2_halen; /* Link-layer address length */ uint8_t sll2_addr[SLL_ADDRLEN]; /* Link-layer address */ }; BUILD_ASSERT(sizeof(struct sll2_header) == SLL2_HDR_LEN); #define SLL_HOST 0 /* packet was sent to us by somebody else */ #define SLL_BROADCAST 1 /* packet was broadcast by somebody else */ #define SLL_MULTICAST 2 /* packet was multicast, but not broadcast, by somebody else */ #define SLL_OTHERHOST 3 /* packet was sent by somebody else to somebody else */ #define SLL_OUTGOING 4 /* packet was sent by us */