130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _NFNETLINK_LOG_H
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _NFNETLINK_LOG_H
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* This file describes the netlink messages (i.e. 'protocol packets'),
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * and not any kind of function definitions.  It is shared between kernel and
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * userspace.  Don't put kernel specific stuff in here */
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h>
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/netfilter/nfnetlink.h>
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1130692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum nfulnl_msg_types {
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_MSG_PACKET,		/* packet from kernel to userspace */
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_MSG_CONFIG,		/* connect to a particular queue */
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_MSG_MAX
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nfulnl_msg_packet_hdr {
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__be16		hw_protocol;	/* hw protocol (network order) */
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	hook;		/* netfilter hook */
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	_pad;
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nfulnl_msg_packet_hw {
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__be16		hw_addrlen;
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u16	_pad;
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	hw_addr[8];
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nfulnl_msg_packet_timestamp {
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__aligned_be64	sec;
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__aligned_be64	usec;
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
3530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum nfulnl_attr_type {
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_UNSPEC,
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_PACKET_HDR,
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_MARK,			/* __u32 nfmark */
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_TIMESTAMP,		/* nfulnl_msg_packet_timestamp */
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_IFINDEX_INDEV,		/* __u32 ifindex */
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_IFINDEX_OUTDEV,		/* __u32 ifindex */
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_IFINDEX_PHYSINDEV,	/* __u32 ifindex */
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_IFINDEX_PHYSOUTDEV,	/* __u32 ifindex */
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_HWADDR,			/* nfulnl_msg_packet_hw */
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_PAYLOAD,			/* opaque data payload */
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_PREFIX,			/* string prefix */
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_UID,			/* user id of socket */
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_SEQ,			/* instance-local sequence number */
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_SEQ_GLOBAL,		/* global sequence number */
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_GID,			/* group id of socket */
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_HWTYPE,			/* hardware type */
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_HWHEADER,			/* hardware header */
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_HWLEN,			/* hardware header length */
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__NFULA_MAX
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NFULA_MAX (__NFULA_MAX - 1)
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5930692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum nfulnl_msg_config_cmds {
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_CFG_CMD_NONE,
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_CFG_CMD_BIND,
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_CFG_CMD_UNBIND,
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_CFG_CMD_PF_BIND,
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULNL_CFG_CMD_PF_UNBIND,
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nfulnl_msg_config_cmd {
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	command;	/* nfulnl_msg_config_cmds */
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__ ((packed));
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
7130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct nfulnl_msg_config_mode {
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__be32		copy_range;
7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	copy_mode;
7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__u8	_pad;
7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__ ((packed));
7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
7730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum nfulnl_attr_config {
7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_CFG_UNSPEC,
7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_CFG_CMD,			/* nfulnl_msg_config_cmd */
8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_CFG_MODE,			/* nfulnl_msg_config_mode */
8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_CFG_NLBUFSIZ,		/* __u32 buffer size */
8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_CFG_TIMEOUT,		/* __u32 in 1/100 s */
8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_CFG_QTHRESH,		/* __u32 */
8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	NFULA_CFG_FLAGS,		/* __u16 */
8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng	__NFULA_CFG_MAX
8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng};
8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NFULA_CFG_MAX (__NFULA_CFG_MAX -1)
8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NFULNL_COPY_NONE	0x00
9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NFULNL_COPY_META	0x01
9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NFULNL_COPY_PACKET	0x02
9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 0xff is reserved, don't use it for new copy modes. */
9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NFULNL_CFG_F_SEQ	0x0001
9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NFULNL_CFG_F_SEQ_GLOBAL	0x0002
9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _NFNETLINK_LOG_H */
98