1 /* Definitions for use with Linux AF_PACKET sockets. 2 Copyright (C) 1998-2022 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #ifndef __NETPACKET_PACKET_H 20 #define __NETPACKET_PACKET_H 1 21 22 struct sockaddr_ll 23 { 24 unsigned short int sll_family; 25 unsigned short int sll_protocol; 26 int sll_ifindex; 27 unsigned short int sll_hatype; 28 unsigned char sll_pkttype; 29 unsigned char sll_halen; 30 unsigned char sll_addr[8]; 31 }; 32 33 /* Packet types. */ 34 35 #define PACKET_HOST 0 /* To us. */ 36 #define PACKET_BROADCAST 1 /* To all. */ 37 #define PACKET_MULTICAST 2 /* To group. */ 38 #define PACKET_OTHERHOST 3 /* To someone else. */ 39 #define PACKET_OUTGOING 4 /* Originated by us . */ 40 #define PACKET_LOOPBACK 5 41 #define PACKET_FASTROUTE 6 42 43 /* Packet socket options. */ 44 45 #define PACKET_ADD_MEMBERSHIP 1 46 #define PACKET_DROP_MEMBERSHIP 2 47 #define PACKET_RECV_OUTPUT 3 48 #define PACKET_RX_RING 5 49 #define PACKET_STATISTICS 6 50 #define PACKET_COPY_THRESH 7 51 #define PACKET_AUXDATA 8 52 #define PACKET_ORIGDEV 9 53 #define PACKET_VERSION 10 54 #define PACKET_HDRLEN 11 55 #define PACKET_RESERVE 12 56 #define PACKET_TX_RING 13 57 #define PACKET_LOSS 14 58 #define PACKET_VNET_HDR 15 59 #define PACKET_TX_TIMESTAMP 16 60 #define PACKET_TIMESTAMP 17 61 #define PACKET_FANOUT 18 62 #define PACKET_TX_HAS_OFF 19 63 #define PACKET_QDISC_BYPASS 20 64 #define PACKET_ROLLOVER_STATS 21 65 #define PACKET_FANOUT_DATA 22 66 #define PACKET_IGNORE_OUTGOING 23 67 68 struct packet_mreq 69 { 70 int mr_ifindex; 71 unsigned short int mr_type; 72 unsigned short int mr_alen; 73 unsigned char mr_address[8]; 74 }; 75 76 #define PACKET_MR_MULTICAST 0 77 #define PACKET_MR_PROMISC 1 78 #define PACKET_MR_ALLMULTI 2 79 #define PACKET_MR_UNICAST 3 80 81 #endif /* netpacket/packet.h */ 82