Home | History | Annotate | Download | only in bpf
      1 #include <linux/bpf.h>
      2 #include "bpf_helpers.h"
      3 #include "bpf_util.h"
      4 #include "bpf_endian.h"
      5 
      6 int _version SEC("version") = 1;
      7 
      8 #define bpf_printk(fmt, ...)					\
      9 ({								\
     10 	       char ____fmt[] = fmt;				\
     11 	       bpf_trace_printk(____fmt, sizeof(____fmt),	\
     12 				##__VA_ARGS__);			\
     13 })
     14 
     15 SEC("sk_skb1")
     16 int bpf_prog1(struct __sk_buff *skb)
     17 {
     18 	void *data_end = (void *)(long) skb->data_end;
     19 	void *data = (void *)(long) skb->data;
     20 	__u32 lport = skb->local_port;
     21 	__u32 rport = skb->remote_port;
     22 	__u8 *d = data;
     23 
     24 	if (data + 10 > data_end)
     25 		return skb->len;
     26 
     27 	/* This write/read is a bit pointless but tests the verifier and
     28 	 * strparser handler for read/write pkt data and access into sk
     29 	 * fields.
     30 	 */
     31 	d[7] = 1;
     32 	return skb->len;
     33 }
     34 
     35 char _license[] SEC("license") = "GPL";
     36