Blame include/uapi/linux/filter.h

Packit Service 3880ab
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
Packit Service 3880ab
/*
Packit Service 3880ab
 * Linux Socket Filter Data Structures
Packit Service 3880ab
 */
Packit Service 3880ab
Packit Service 3880ab
#ifndef __LINUX_FILTER_H__
Packit Service 3880ab
#define __LINUX_FILTER_H__
Packit Service 3880ab
Packit Service 3880ab
Packit Service 3880ab
#include <linux/types.h>
Packit Service 3880ab
#include <linux/bpf_common.h>
Packit Service 3880ab
Packit Service 3880ab
/*
Packit Service 3880ab
 * Current version of the filter code architecture.
Packit Service 3880ab
 */
Packit Service 3880ab
#define BPF_MAJOR_VERSION 1
Packit Service 3880ab
#define BPF_MINOR_VERSION 1
Packit Service 3880ab
Packit Service 3880ab
/*
Packit Service 3880ab
 *	Try and keep these values and structures similar to BSD, especially
Packit Service 3880ab
 *	the BPF code definitions which need to match so you can share filters
Packit Service 3880ab
 */
Packit Service 3880ab
 
Packit Service 3880ab
struct sock_filter {	/* Filter block */
Packit Service 3880ab
	__u16	code;   /* Actual filter code */
Packit Service 3880ab
	__u8	jt;	/* Jump true */
Packit Service 3880ab
	__u8	jf;	/* Jump false */
Packit Service 3880ab
	__u32	k;      /* Generic multiuse field */
Packit Service 3880ab
};
Packit Service 3880ab
Packit Service 3880ab
struct sock_fprog {	/* Required for SO_ATTACH_FILTER. */
Packit Service 3880ab
	unsigned short		len;	/* Number of filter blocks */
Packit Service 3880ab
	struct sock_filter *filter;
Packit Service 3880ab
};
Packit Service 3880ab
Packit Service 3880ab
/* ret - BPF_K and BPF_X also apply */
Packit Service 3880ab
#define BPF_RVAL(code)  ((code) & 0x18)
Packit Service 3880ab
#define         BPF_A           0x10
Packit Service 3880ab
Packit Service 3880ab
/* misc */
Packit Service 3880ab
#define BPF_MISCOP(code) ((code) & 0xf8)
Packit Service 3880ab
#define         BPF_TAX         0x00
Packit Service 3880ab
#define         BPF_TXA         0x80
Packit Service 3880ab
Packit Service 3880ab
/*
Packit Service 3880ab
 * Macros for filter block array initializers.
Packit Service 3880ab
 */
Packit Service 3880ab
#ifndef BPF_STMT
Packit Service 3880ab
#define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
Packit Service 3880ab
#endif
Packit Service 3880ab
#ifndef BPF_JUMP
Packit Service 3880ab
#define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }
Packit Service 3880ab
#endif
Packit Service 3880ab
Packit Service 3880ab
/*
Packit Service 3880ab
 * Number of scratch memory words for: BPF_ST and BPF_STX
Packit Service 3880ab
 */
Packit Service 3880ab
#define BPF_MEMWORDS 16
Packit Service 3880ab
Packit Service 3880ab
/* RATIONALE. Negative offsets are invalid in BPF.
Packit Service 3880ab
   We use them to reference ancillary data.
Packit Service 3880ab
   Unlike introduction new instructions, it does not break
Packit Service 3880ab
   existing compilers/optimizers.
Packit Service 3880ab
 */
Packit Service 3880ab
#define SKF_AD_OFF    (-0x1000)
Packit Service 3880ab
#define SKF_AD_PROTOCOL 0
Packit Service 3880ab
#define SKF_AD_PKTTYPE 	4
Packit Service 3880ab
#define SKF_AD_IFINDEX 	8
Packit Service 3880ab
#define SKF_AD_NLATTR	12
Packit Service 3880ab
#define SKF_AD_NLATTR_NEST	16
Packit Service 3880ab
#define SKF_AD_MARK 	20
Packit Service 3880ab
#define SKF_AD_QUEUE	24
Packit Service 3880ab
#define SKF_AD_HATYPE	28
Packit Service 3880ab
#define SKF_AD_RXHASH	32
Packit Service 3880ab
#define SKF_AD_CPU	36
Packit Service 3880ab
#define SKF_AD_ALU_XOR_X	40
Packit Service 3880ab
#define SKF_AD_VLAN_TAG	44
Packit Service 3880ab
#define SKF_AD_VLAN_TAG_PRESENT 48
Packit Service 3880ab
#define SKF_AD_PAY_OFFSET	52
Packit Service 3880ab
#define SKF_AD_RANDOM	56
Packit Service 3880ab
#define SKF_AD_VLAN_TPID	60
Packit Service 3880ab
#define SKF_AD_MAX	64
Packit Service 3880ab
Packit Service 3880ab
#define SKF_NET_OFF	(-0x100000)
Packit Service 3880ab
#define SKF_LL_OFF	(-0x200000)
Packit Service 3880ab
Packit Service 3880ab
#define BPF_NET_OFF	SKF_NET_OFF
Packit Service 3880ab
#define BPF_LL_OFF	SKF_LL_OFF
Packit Service 3880ab
Packit Service 3880ab
#endif /* __LINUX_FILTER_H__ */