Home | History | Annotate | Download | only in netfilter
      1 #ifndef _NFNETLINK_LOG_H
      2 #define _NFNETLINK_LOG_H
      3 
      4 /* This file describes the netlink messages (i.e. 'protocol packets'),
      5  * and not any kind of function definitions.  It is shared between kernel and
      6  * userspace.  Don't put kernel specific stuff in here */
      7 
      8 #include <linux/types.h>
      9 #include <linux/netfilter/nfnetlink.h>
     10 
     11 enum nfulnl_msg_types {
     12 	NFULNL_MSG_PACKET,		/* packet from kernel to userspace */
     13 	NFULNL_MSG_CONFIG,		/* connect to a particular queue */
     14 
     15 	NFULNL_MSG_MAX
     16 };
     17 
     18 struct nfulnl_msg_packet_hdr {
     19 	__be16		hw_protocol;	/* hw protocol (network order) */
     20 	u_int8_t	hook;		/* netfilter hook */
     21 	u_int8_t	_pad;
     22 };
     23 
     24 struct nfulnl_msg_packet_hw {
     25 	__be16		hw_addrlen;
     26 	u_int16_t	_pad;
     27 	u_int8_t	hw_addr[8];
     28 };
     29 
     30 struct nfulnl_msg_packet_timestamp {
     31 	aligned_be64	sec;
     32 	aligned_be64	usec;
     33 };
     34 
     35 enum nfulnl_attr_type {
     36 	NFULA_UNSPEC,
     37 	NFULA_PACKET_HDR,
     38 	NFULA_MARK,			/* u_int32_t nfmark */
     39 	NFULA_TIMESTAMP,		/* nfulnl_msg_packet_timestamp */
     40 	NFULA_IFINDEX_INDEV,		/* u_int32_t ifindex */
     41 	NFULA_IFINDEX_OUTDEV,		/* u_int32_t ifindex */
     42 	NFULA_IFINDEX_PHYSINDEV,	/* u_int32_t ifindex */
     43 	NFULA_IFINDEX_PHYSOUTDEV,	/* u_int32_t ifindex */
     44 	NFULA_HWADDR,			/* nfulnl_msg_packet_hw */
     45 	NFULA_PAYLOAD,			/* opaque data payload */
     46 	NFULA_PREFIX,			/* string prefix */
     47 	NFULA_UID,			/* user id of socket */
     48 	NFULA_SEQ,			/* instance-local sequence number */
     49 	NFULA_SEQ_GLOBAL,		/* global sequence number */
     50 
     51 	__NFULA_MAX
     52 };
     53 #define NFULA_MAX (__NFULA_MAX - 1)
     54 
     55 enum nfulnl_msg_config_cmds {
     56 	NFULNL_CFG_CMD_NONE,
     57 	NFULNL_CFG_CMD_BIND,
     58 	NFULNL_CFG_CMD_UNBIND,
     59 	NFULNL_CFG_CMD_PF_BIND,
     60 	NFULNL_CFG_CMD_PF_UNBIND,
     61 };
     62 
     63 struct nfulnl_msg_config_cmd {
     64 	u_int8_t	command;	/* nfulnl_msg_config_cmds */
     65 } __attribute__ ((packed));
     66 
     67 struct nfulnl_msg_config_mode {
     68 	__be32		copy_range;
     69 	u_int8_t	copy_mode;
     70 	u_int8_t	_pad;
     71 } __attribute__ ((packed));
     72 
     73 enum nfulnl_attr_config {
     74 	NFULA_CFG_UNSPEC,
     75 	NFULA_CFG_CMD,			/* nfulnl_msg_config_cmd */
     76 	NFULA_CFG_MODE,			/* nfulnl_msg_config_mode */
     77 	NFULA_CFG_NLBUFSIZ,		/* u_int32_t buffer size */
     78 	NFULA_CFG_TIMEOUT,		/* u_int32_t in 1/100 s */
     79 	NFULA_CFG_QTHRESH,		/* u_int32_t */
     80 	NFULA_CFG_FLAGS,		/* u_int16_t */
     81 	__NFULA_CFG_MAX
     82 };
     83 #define NFULA_CFG_MAX (__NFULA_CFG_MAX -1)
     84 
     85 #define NFULNL_COPY_NONE	0x00
     86 #define NFULNL_COPY_META	0x01
     87 #define NFULNL_COPY_PACKET	0x02
     88 
     89 #define NFULNL_CFG_F_SEQ	0x0001
     90 #define NFULNL_CFG_F_SEQ_GLOBAL	0x0002
     91 
     92 #endif /* _NFNETLINK_LOG_H */
     93