| /* |
| * Copyright (c) 2024 Nordic Semiconductor |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* Defines for Linux cooked mode capture (SLL) */ |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/types.h> |
| |
| /* 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 */ |