Home | History | Annotate | Download | only in netfilter
      1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2 #ifndef _XT_POLICY_H
      3 #define _XT_POLICY_H
      4 
      5 #include <linux/types.h>
      6 #include <linux/in.h>
      7 #include <linux/in6.h>
      8 
      9 #define XT_POLICY_MAX_ELEM	4
     10 
     11 enum xt_policy_flags {
     12 	XT_POLICY_MATCH_IN	= 0x1,
     13 	XT_POLICY_MATCH_OUT	= 0x2,
     14 	XT_POLICY_MATCH_NONE	= 0x4,
     15 	XT_POLICY_MATCH_STRICT	= 0x8,
     16 };
     17 
     18 enum xt_policy_modes {
     19 	XT_POLICY_MODE_TRANSPORT,
     20 	XT_POLICY_MODE_TUNNEL
     21 };
     22 
     23 struct xt_policy_spec {
     24 	__u8	saddr:1,
     25 			daddr:1,
     26 			proto:1,
     27 			mode:1,
     28 			spi:1,
     29 			reqid:1;
     30 };
     31 
     32 #ifndef __KERNEL__
     33 union xt_policy_addr {
     34 	struct in_addr	a4;
     35 	struct in6_addr	a6;
     36 };
     37 #endif
     38 
     39 struct xt_policy_elem {
     40 	union {
     41 #ifdef __KERNEL__
     42 		struct {
     43 			union nf_inet_addr saddr;
     44 			union nf_inet_addr smask;
     45 			union nf_inet_addr daddr;
     46 			union nf_inet_addr dmask;
     47 		};
     48 #else
     49 		struct {
     50 			union xt_policy_addr saddr;
     51 			union xt_policy_addr smask;
     52 			union xt_policy_addr daddr;
     53 			union xt_policy_addr dmask;
     54 		};
     55 #endif
     56 	};
     57 	__be32			spi;
     58 	__u32		reqid;
     59 	__u8		proto;
     60 	__u8		mode;
     61 
     62 	struct xt_policy_spec	match;
     63 	struct xt_policy_spec	invert;
     64 };
     65 
     66 struct xt_policy_info {
     67 	struct xt_policy_elem pol[XT_POLICY_MAX_ELEM];
     68 	__u16 flags;
     69 	__u16 len;
     70 };
     71 
     72 #endif /* _XT_POLICY_H */
     73