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