16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
238c67328SNicolas Dichtel #ifndef XT_HMARK_H_
338c67328SNicolas Dichtel #define XT_HMARK_H_
438c67328SNicolas Dichtel 
538c67328SNicolas Dichtel #include <linux/types.h>
61ffad83dSMikko Rapeli #include <linux/netfilter.h>
738c67328SNicolas Dichtel 
838c67328SNicolas Dichtel enum {
938c67328SNicolas Dichtel 	XT_HMARK_SADDR_MASK,
1038c67328SNicolas Dichtel 	XT_HMARK_DADDR_MASK,
1138c67328SNicolas Dichtel 	XT_HMARK_SPI,
1238c67328SNicolas Dichtel 	XT_HMARK_SPI_MASK,
1338c67328SNicolas Dichtel 	XT_HMARK_SPORT,
1438c67328SNicolas Dichtel 	XT_HMARK_DPORT,
1538c67328SNicolas Dichtel 	XT_HMARK_SPORT_MASK,
1638c67328SNicolas Dichtel 	XT_HMARK_DPORT_MASK,
1738c67328SNicolas Dichtel 	XT_HMARK_PROTO_MASK,
1838c67328SNicolas Dichtel 	XT_HMARK_RND,
1938c67328SNicolas Dichtel 	XT_HMARK_MODULUS,
2038c67328SNicolas Dichtel 	XT_HMARK_OFFSET,
2138c67328SNicolas Dichtel 	XT_HMARK_CT,
2238c67328SNicolas Dichtel 	XT_HMARK_METHOD_L3,
2338c67328SNicolas Dichtel 	XT_HMARK_METHOD_L3_4,
2438c67328SNicolas Dichtel };
2538c67328SNicolas Dichtel #define XT_HMARK_FLAG(flag)	(1 << flag)
2638c67328SNicolas Dichtel 
2738c67328SNicolas Dichtel union hmark_ports {
2838c67328SNicolas Dichtel 	struct {
2938c67328SNicolas Dichtel 		__u16	src;
3038c67328SNicolas Dichtel 		__u16	dst;
3138c67328SNicolas Dichtel 	} p16;
3238c67328SNicolas Dichtel 	struct {
3338c67328SNicolas Dichtel 		__be16	src;
3438c67328SNicolas Dichtel 		__be16	dst;
3538c67328SNicolas Dichtel 	} b16;
3638c67328SNicolas Dichtel 	__u32	v32;
3738c67328SNicolas Dichtel 	__be32	b32;
3838c67328SNicolas Dichtel };
3938c67328SNicolas Dichtel 
4038c67328SNicolas Dichtel struct xt_hmark_info {
4138c67328SNicolas Dichtel 	union nf_inet_addr	src_mask;
4238c67328SNicolas Dichtel 	union nf_inet_addr	dst_mask;
4338c67328SNicolas Dichtel 	union hmark_ports	port_mask;
4438c67328SNicolas Dichtel 	union hmark_ports	port_set;
4538c67328SNicolas Dichtel 	__u32			flags;
4638c67328SNicolas Dichtel 	__u16			proto_mask;
4738c67328SNicolas Dichtel 	__u32			hashrnd;
4838c67328SNicolas Dichtel 	__u32			hmodulus;
4938c67328SNicolas Dichtel 	__u32			hoffset;	/* Mark offset to start from */
5038c67328SNicolas Dichtel };
5138c67328SNicolas Dichtel 
5238c67328SNicolas Dichtel #endif /* XT_HMARK_H_ */
53