0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #define __PERF_EVENT_INSNS__ \
0028 BPF_MOV64_IMM(BPF_REG_2, 5), \
0029 BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_2, -8), \
0030 BPF_MOV64_REG(BPF_REG_4, BPF_REG_10), \
0031 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, -8), \
0032 BPF_LD_MAP_FD(BPF_REG_2, 0), \
0033 BPF_MOV64_IMM(BPF_REG_3, 0), \
0034 BPF_MOV64_IMM(BPF_REG_5, 8), \
0035 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, \
0036 BPF_FUNC_perf_event_output), \
0037 BPF_MOV64_IMM(BPF_REG_0, 1), \
0038 BPF_EXIT_INSN(),
0039 {
0040 "perfevent for sockops",
0041 .insns = { __PERF_EVENT_INSNS__ },
0042 .prog_type = BPF_PROG_TYPE_SOCK_OPS,
0043 .fixup_map_event_output = { 4 },
0044 .result = ACCEPT,
0045 .retval = 1,
0046 },
0047 {
0048 "perfevent for tc",
0049 .insns = { __PERF_EVENT_INSNS__ },
0050 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
0051 .fixup_map_event_output = { 4 },
0052 .result = ACCEPT,
0053 .retval = 1,
0054 },
0055 {
0056 "perfevent for lwt out",
0057 .insns = { __PERF_EVENT_INSNS__ },
0058 .prog_type = BPF_PROG_TYPE_LWT_OUT,
0059 .fixup_map_event_output = { 4 },
0060 .result = ACCEPT,
0061 .retval = 1,
0062 },
0063 {
0064 "perfevent for xdp",
0065 .insns = { __PERF_EVENT_INSNS__ },
0066 .prog_type = BPF_PROG_TYPE_XDP,
0067 .fixup_map_event_output = { 4 },
0068 .result = ACCEPT,
0069 .retval = 1,
0070 },
0071 {
0072 "perfevent for socket filter",
0073 .insns = { __PERF_EVENT_INSNS__ },
0074 .prog_type = BPF_PROG_TYPE_SOCKET_FILTER,
0075 .fixup_map_event_output = { 4 },
0076 .result = ACCEPT,
0077 .retval = 1,
0078 },
0079 {
0080 "perfevent for sk_skb",
0081 .insns = { __PERF_EVENT_INSNS__ },
0082 .prog_type = BPF_PROG_TYPE_SK_SKB,
0083 .fixup_map_event_output = { 4 },
0084 .result = ACCEPT,
0085 .retval = 1,
0086 },
0087 {
0088 "perfevent for cgroup skb",
0089 .insns = { __PERF_EVENT_INSNS__ },
0090 .prog_type = BPF_PROG_TYPE_CGROUP_SKB,
0091 .fixup_map_event_output = { 4 },
0092 .result = ACCEPT,
0093 .retval = 1,
0094 },
0095 {
0096 "perfevent for cgroup dev",
0097 .insns = { __PERF_EVENT_INSNS__ },
0098 .prog_type = BPF_PROG_TYPE_CGROUP_DEVICE,
0099 .fixup_map_event_output = { 4 },
0100 .result = ACCEPT,
0101 .retval = 1,
0102 },
0103 {
0104 "perfevent for cgroup sysctl",
0105 .insns = { __PERF_EVENT_INSNS__ },
0106 .prog_type = BPF_PROG_TYPE_CGROUP_SYSCTL,
0107 .fixup_map_event_output = { 4 },
0108 .result = ACCEPT,
0109 .retval = 1,
0110 },
0111 {
0112 "perfevent for cgroup sockopt",
0113 .insns = { __PERF_EVENT_INSNS__ },
0114 .prog_type = BPF_PROG_TYPE_CGROUP_SOCKOPT,
0115 .expected_attach_type = BPF_CGROUP_SETSOCKOPT,
0116 .fixup_map_event_output = { 4 },
0117 .result = ACCEPT,
0118 .retval = 1,
0119 },