sockaddr_ll
struct sockaddr_ll sock;
(struct sockaddr *) &sock, sizeof(struct sockaddr_ll)) < 0) {
#define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
#define TPACKET2_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket2_hdr)) + sizeof(struct sockaddr_ll))
#define TPACKET3_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket3_hdr)) + sizeof(struct sockaddr_ll))
struct sockaddr_ll *sll;
struct sockaddr_ll *sll;
struct sockaddr_ll ll;
off_min = po->tp_hdrlen - sizeof(struct sockaddr_ll);
off = po->tp_hdrlen - sizeof(struct sockaddr_ll);
DECLARE_SOCKADDR(struct sockaddr_ll *, saddr, msg->msg_name);
if (msg->msg_namelen < sizeof(struct sockaddr_ll))
+ offsetof(struct sockaddr_ll,
offsetof(struct sockaddr_ll, sll_addr))
- (po->tp_hdrlen - sizeof(struct sockaddr_ll));
hlen + tlen + sizeof(struct sockaddr_ll) +
DECLARE_SOCKADDR(struct sockaddr_ll *, saddr, msg->msg_name);
if (msg->msg_namelen < sizeof(struct sockaddr_ll))
if (msg->msg_namelen < (saddr->sll_halen + offsetof(struct sockaddr_ll, sll_addr)))
offsetof(struct sockaddr_ll, sll_addr))
struct sockaddr_ll *sll = (struct sockaddr_ll *)uaddr;
if (addr_len < sizeof(struct sockaddr_ll))
struct sockaddr_ll *sll = &PACKET_SKB_CB(skb)->sa.ll;
struct sockaddr_ll *sll = &PACKET_SKB_CB(skb)->sa.ll;
offsetof(struct sockaddr_ll, sll_addr);
if (msg->msg_namelen < sizeof(struct sockaddr_ll)) {
offsetof(struct sockaddr_ll, sll_addr),
msg->msg_namelen = sizeof(struct sockaddr_ll);
struct sockaddr_ll *sll = &PACKET_SKB_CB(skb)->sa.ll;
DECLARE_SOCKADDR(struct sockaddr_ll *, sll, uaddr);
offsetof(struct sockaddr_ll, sll_addr) -
offsetofend(struct sockaddr_ll, sll_family),
return offsetof(struct sockaddr_ll, sll_addr) + sll->sll_halen;
struct sockaddr_ll sll;
struct sockaddr_ll sa = {
struct sockaddr_ll addr = {
struct sockaddr_ll saddr_ll = {
struct sockaddr_ll saddr = {
struct sockaddr_ll sa = {};
struct sockaddr_ll ll = { 0 };
struct sockaddr_ll addr = {0};
struct sockaddr_ll laddr = {0};
static void send_changed_ttl(int fd, struct sockaddr_ll *daddr)
static void send_changed_tos(int fd, struct sockaddr_ll *daddr)
static void send_changed_ECN(int fd, struct sockaddr_ll *daddr)
static void send_fragment6(int fd, struct sockaddr_ll *daddr)
static void send_changed_pppoe_sid(int fd, struct sockaddr_ll *daddr)
struct sockaddr_ll daddr = {};
struct sockaddr_ll daddr = {};
static void write_packet(int fd, char *buf, int len, struct sockaddr_ll *daddr)
static void send_capacity(int fd, struct sockaddr_ll *daddr)
static void send_flags(int fd, struct sockaddr_ll *daddr, int psh, int syn,
static void send_data_pkts(int fd, struct sockaddr_ll *daddr,
static void send_large(int fd, struct sockaddr_ll *daddr, int remainder)
static void send_ack(int fd, struct sockaddr_ll *daddr)
static void send_changed_checksum(int fd, struct sockaddr_ll *daddr)
static void send_changed_ip_checksum(int fd, struct sockaddr_ll *daddr)
static void send_changed_seq(int fd, struct sockaddr_ll *daddr)
static void send_changed_ts(int fd, struct sockaddr_ll *daddr)
static void send_diff_opt(int fd, struct sockaddr_ll *daddr)
static void send_flush_id_case(int fd, struct sockaddr_ll *daddr,
static void send_ipv6_exthdr(int fd, struct sockaddr_ll *daddr, char *ext_data1, char *ext_data2)
static void send_ip_options(int fd, struct sockaddr_ll *daddr)
static void send_fragment4(int fd, struct sockaddr_ll *daddr)
struct sockaddr_ll laddr;
struct sockaddr_ll addr = {0};
struct sockaddr_ll laddr = {0};
struct sockaddr_ll laddr = {0};
struct sockaddr_ll ll = {
sizeof(struct sockaddr_ll), packet,
sizeof(struct sockaddr_ll), packet,
sizeof(struct sockaddr_ll), packet,
struct sockaddr_ll ll;
struct sockaddr_ll s_ll __align_tpacket(sizeof(struct tpacket_hdr));
struct sockaddr_ll s_ll __align_tpacket(sizeof(struct tpacket2_hdr));
const int eth_off = TPACKET_HDRLEN - sizeof(struct sockaddr_ll);
struct sockaddr_ll laddr = {};
struct sockaddr_ll laddr;
struct sockaddr_ll saddrll = {0};
sizeof(struct sockaddr_ll));