111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _IP_QUEUE_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _IP_QUEUE_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <net/if.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ipq_packet_msg {
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long packet_id;
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long mark;
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long timestamp_sec;
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert long timestamp_usec;
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int hook;
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char indev_name[IFNAMSIZ];
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char outdev_name[IFNAMSIZ];
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short hw_protocol;
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short hw_type;
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char hw_addrlen;
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char hw_addr[8];
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t data_len;
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char payload[0];
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} ipq_packet_msg_t;
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ipq_mode_msg {
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char value;
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t range;
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} ipq_mode_msg_t;
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ipq_verdict_msg {
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int value;
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long id;
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t data_len;
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char payload[0];
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} ipq_verdict_msg_t;
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ipq_peer_msg {
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union {
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ipq_verdict_msg_t verdict;
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ipq_mode_msg_t mode;
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } msg;
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} ipq_peer_msg_t;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPQ_COPY_NONE,
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPQ_COPY_META,
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert IPQ_COPY_PACKET
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IPQ_COPY_MAX IPQ_COPY_PACKET
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IPQM_BASE 0x10
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IPQM_MODE (IPQM_BASE + 1)
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IPQM_VERDICT (IPQM_BASE + 2)
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IPQM_PACKET (IPQM_BASE + 3)
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IPQM_MAX (IPQM_BASE + 4)
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
66