Blame sysdeps/unix/sysv/linux/netpacket/packet.h

Packit 6c4009
/* Definitions for use with Linux AF_PACKET sockets.
Packit 6c4009
   Copyright (C) 1998-2018 Free Software Foundation, Inc.
Packit 6c4009
   This file is part of the GNU C Library.
Packit 6c4009
Packit 6c4009
   The GNU C Library is free software; you can redistribute it and/or
Packit 6c4009
   modify it under the terms of the GNU Lesser General Public
Packit 6c4009
   License as published by the Free Software Foundation; either
Packit 6c4009
   version 2.1 of the License, or (at your option) any later version.
Packit 6c4009
Packit 6c4009
   The GNU C Library is distributed in the hope that it will be useful,
Packit 6c4009
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6c4009
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6c4009
   Lesser General Public License for more details.
Packit 6c4009
Packit 6c4009
   You should have received a copy of the GNU Lesser General Public
Packit 6c4009
   License along with the GNU C Library; if not, see
Packit 6c4009
   <http://www.gnu.org/licenses/>.  */
Packit 6c4009
Packit 6c4009
#ifndef __NETPACKET_PACKET_H
Packit 6c4009
#define __NETPACKET_PACKET_H	1
Packit 6c4009
Packit 6c4009
struct sockaddr_ll
Packit 6c4009
  {
Packit 6c4009
    unsigned short int sll_family;
Packit 6c4009
    unsigned short int sll_protocol;
Packit 6c4009
    int sll_ifindex;
Packit 6c4009
    unsigned short int sll_hatype;
Packit 6c4009
    unsigned char sll_pkttype;
Packit 6c4009
    unsigned char sll_halen;
Packit 6c4009
    unsigned char sll_addr[8];
Packit 6c4009
  };
Packit 6c4009
Packit 6c4009
/* Packet types.  */
Packit 6c4009
Packit 6c4009
#define PACKET_HOST		0		/* To us.  */
Packit 6c4009
#define PACKET_BROADCAST	1		/* To all.  */
Packit 6c4009
#define PACKET_MULTICAST	2		/* To group.  */
Packit 6c4009
#define PACKET_OTHERHOST	3		/* To someone else.  */
Packit 6c4009
#define PACKET_OUTGOING		4		/* Originated by us . */
Packit 6c4009
#define PACKET_LOOPBACK		5
Packit 6c4009
#define PACKET_FASTROUTE	6
Packit 6c4009
Packit 6c4009
/* Packet socket options.  */
Packit 6c4009
Packit 6c4009
#define PACKET_ADD_MEMBERSHIP		1
Packit 6c4009
#define PACKET_DROP_MEMBERSHIP		2
Packit 6c4009
#define	PACKET_RECV_OUTPUT		3
Packit 6c4009
#define	PACKET_RX_RING			5
Packit 6c4009
#define	PACKET_STATISTICS		6
Packit 6c4009
#define	PACKET_COPY_THRESH		7
Packit 6c4009
#define	PACKET_AUXDATA			8
Packit 6c4009
#define	PACKET_ORIGDEV			9
Packit 6c4009
#define	PACKET_VERSION			10
Packit 6c4009
#define	PACKET_HDRLEN			11
Packit 6c4009
#define	PACKET_RESERVE			12
Packit 6c4009
#define	PACKET_TX_RING			13
Packit 6c4009
#define	PACKET_LOSS			14
Packit 6c4009
#define	PACKET_VNET_HDR			15
Packit 6c4009
#define	PACKET_TX_TIMESTAMP		16
Packit 6c4009
#define	PACKET_TIMESTAMP		17
Packit 6c4009
#define	PACKET_FANOUT			18
Packit 6c4009
#define	PACKET_TX_HAS_OFF		19
Packit 6c4009
#define	PACKET_QDISC_BYPASS		20
Packit 6c4009
#define	PACKET_ROLLOVER_STATS		21
Packit 6c4009
#define	PACKET_FANOUT_DATA		22
Packit 6c4009
Packit 6c4009
struct packet_mreq
Packit 6c4009
  {
Packit 6c4009
    int mr_ifindex;
Packit 6c4009
    unsigned short int mr_type;
Packit 6c4009
    unsigned short int mr_alen;
Packit 6c4009
    unsigned char mr_address[8];
Packit 6c4009
  };
Packit 6c4009
Packit 6c4009
#define PACKET_MR_MULTICAST	0
Packit 6c4009
#define PACKET_MR_PROMISC	1
Packit 6c4009
#define PACKET_MR_ALLMULTI	2
Packit 6c4009
#define PACKET_MR_UNICAST	3
Packit 6c4009
Packit 6c4009
#endif	/* netpacket/packet.h */