aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux/bpf.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi/linux/bpf.h')
-rw-r--r--include/uapi/linux/bpf.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 45da7ec7d274..a9ebdf5701e8 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -118,8 +118,13 @@ enum bpf_map_type {
118enum bpf_prog_type { 118enum bpf_prog_type {
119 BPF_PROG_TYPE_UNSPEC, 119 BPF_PROG_TYPE_UNSPEC,
120 BPF_PROG_TYPE_SOCKET_FILTER, 120 BPF_PROG_TYPE_SOCKET_FILTER,
121 BPF_PROG_TYPE_KPROBE,
122 BPF_PROG_TYPE_SCHED_CLS,
123 BPF_PROG_TYPE_SCHED_ACT,
121}; 124};
122 125
126#define BPF_PSEUDO_MAP_FD 1
127
123/* flags for BPF_MAP_UPDATE_ELEM command */ 128/* flags for BPF_MAP_UPDATE_ELEM command */
124#define BPF_ANY 0 /* create new element or update existing */ 129#define BPF_ANY 0 /* create new element or update existing */
125#define BPF_NOEXIST 1 /* create new element if it didn't exist */ 130#define BPF_NOEXIST 1 /* create new element if it didn't exist */
@@ -151,6 +156,7 @@ union bpf_attr {
151 __u32 log_level; /* verbosity level of verifier */ 156 __u32 log_level; /* verbosity level of verifier */
152 __u32 log_size; /* size of user buffer */ 157 __u32 log_size; /* size of user buffer */
153 __aligned_u64 log_buf; /* user supplied buffer */ 158 __aligned_u64 log_buf; /* user supplied buffer */
159 __u32 kern_version; /* checked when prog_type=kprobe */
154 }; 160 };
155} __attribute__((aligned(8))); 161} __attribute__((aligned(8)));
156 162
@@ -162,7 +168,64 @@ enum bpf_func_id {
162 BPF_FUNC_map_lookup_elem, /* void *map_lookup_elem(&map, &key) */ 168 BPF_FUNC_map_lookup_elem, /* void *map_lookup_elem(&map, &key) */
163 BPF_FUNC_map_update_elem, /* int map_update_elem(&map, &key, &value, flags) */ 169 BPF_FUNC_map_update_elem, /* int map_update_elem(&map, &key, &value, flags) */
164 BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */ 170 BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */
171 BPF_FUNC_probe_read, /* int bpf_probe_read(void *dst, int size, void *src) */
172 BPF_FUNC_ktime_get_ns, /* u64 bpf_ktime_get_ns(void) */
173 BPF_FUNC_trace_printk, /* int bpf_trace_printk(const char *fmt, int fmt_size, ...) */
174 BPF_FUNC_get_prandom_u32, /* u32 prandom_u32(void) */
175 BPF_FUNC_get_smp_processor_id, /* u32 raw_smp_processor_id(void) */
176
177 /**
178 * skb_store_bytes(skb, offset, from, len, flags) - store bytes into packet
179 * @skb: pointer to skb
180 * @offset: offset within packet from skb->mac_header
181 * @from: pointer where to copy bytes from
182 * @len: number of bytes to store into packet
183 * @flags: bit 0 - if true, recompute skb->csum
184 * other bits - reserved
185 * Return: 0 on success
186 */
187 BPF_FUNC_skb_store_bytes,
188
189 /**
190 * l3_csum_replace(skb, offset, from, to, flags) - recompute IP checksum
191 * @skb: pointer to skb
192 * @offset: offset within packet where IP checksum is located
193 * @from: old value of header field
194 * @to: new value of header field
195 * @flags: bits 0-3 - size of header field
196 * other bits - reserved
197 * Return: 0 on success
198 */
199 BPF_FUNC_l3_csum_replace,
200
201 /**
202 * l4_csum_replace(skb, offset, from, to, flags) - recompute TCP/UDP checksum
203 * @skb: pointer to skb
204 * @offset: offset within packet where TCP/UDP checksum is located
205 * @from: old value of header field
206 * @to: new value of header field
207 * @flags: bits 0-3 - size of header field
208 * bit 4 - is pseudo header
209 * other bits - reserved
210 * Return: 0 on success
211 */
212 BPF_FUNC_l4_csum_replace,
165 __BPF_FUNC_MAX_ID, 213 __BPF_FUNC_MAX_ID,
166}; 214};
167 215
216/* user accessible mirror of in-kernel sk_buff.
217 * new fields can only be added to the end of this structure
218 */
219struct __sk_buff {
220 __u32 len;
221 __u32 pkt_type;
222 __u32 mark;
223 __u32 queue_mapping;
224 __u32 protocol;
225 __u32 vlan_present;
226 __u32 vlan_tci;
227 __u32 vlan_proto;
228 __u32 priority;
229};
230
168#endif /* _UAPI__LINUX_BPF_H__ */ 231#endif /* _UAPI__LINUX_BPF_H__ */