Function report |
Source Code:kernel\bpf\syscall.c |
Create Date:2022-07-28 12:53:55 |
Last Modify:2022-05-19 18:06:12 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:bpf_prog_attach
Proto:static int bpf_prog_attach(const union bpf_attr *attr)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
const union bpf_attr * | attr |
2054 | If Not Check operation authority Then Return -EPERM |
2057 | If helper macro to check that unused fields 'union bpf_attr' are zero (BPF_PROG_ATTACH) Then Return -EINVAL |
2060 | If attach_flags & ~BPF_F_ATTACH_MASK Then Return -EINVAL |
2064 | Case attach_type == BPF_CGROUP_INET_INGRESS |
2065 | Case attach_type == BPF_CGROUP_INET_EGRESS |
2066 | ptype = BPF_PROG_TYPE_CGROUP_SKB |
2067 | Break |
2068 | Case attach_type == BPF_CGROUP_INET_SOCK_CREATE |
2069 | Case attach_type == BPF_CGROUP_INET4_POST_BIND |
2070 | Case attach_type == BPF_CGROUP_INET6_POST_BIND |
2071 | ptype = BPF_PROG_TYPE_CGROUP_SOCK |
2072 | Break |
2073 | Case attach_type == BPF_CGROUP_INET4_BIND |
2074 | Case attach_type == BPF_CGROUP_INET6_BIND |
2075 | Case attach_type == BPF_CGROUP_INET4_CONNECT |
2076 | Case attach_type == BPF_CGROUP_INET6_CONNECT |
2077 | Case attach_type == BPF_CGROUP_UDP4_SENDMSG |
2078 | Case attach_type == BPF_CGROUP_UDP6_SENDMSG |
2079 | Case attach_type == BPF_CGROUP_UDP4_RECVMSG |
2080 | Case attach_type == BPF_CGROUP_UDP6_RECVMSG |
2082 | Break |
2083 | Case attach_type == BPF_CGROUP_SOCK_OPS |
2084 | ptype = BPF_PROG_TYPE_SOCK_OPS |
2085 | Break |
2086 | Case attach_type == BPF_CGROUP_DEVICE |
2087 | ptype = BPF_PROG_TYPE_CGROUP_DEVICE |
2088 | Break |
2089 | Case attach_type == BPF_SK_MSG_VERDICT |
2090 | ptype = BPF_PROG_TYPE_SK_MSG |
2091 | Break |
2092 | Case attach_type == BPF_SK_SKB_STREAM_PARSER |
2093 | Case attach_type == BPF_SK_SKB_STREAM_VERDICT |
2094 | ptype = BPF_PROG_TYPE_SK_SKB |
2095 | Break |
2096 | Case attach_type == BPF_LIRC_MODE2 |
2097 | ptype = BPF_PROG_TYPE_LIRC_MODE2 |
2098 | Break |
2099 | Case attach_type == BPF_FLOW_DISSECTOR |
2101 | Break |
2102 | Case attach_type == BPF_CGROUP_SYSCTL |
2103 | ptype = BPF_PROG_TYPE_CGROUP_SYSCTL |
2104 | Break |
2105 | Case attach_type == BPF_CGROUP_GETSOCKOPT |
2106 | Case attach_type == BPF_CGROUP_SETSOCKOPT |
2108 | Break |
2109 | Default |
2110 | Return -EINVAL |
2113 | prog = bpf_prog_get_type( eBPF program to attach , ptype) |
2117 | If bpf_prog_attach_check_attach_type(prog, attach_type) Then |
2118 | bpf_prog_put(prog) |
2119 | Return -EINVAL |
2123 | Case ptype == BPF_PROG_TYPE_SK_SKB |
2124 | Case ptype == BPF_PROG_TYPE_SK_MSG |
2125 | ret = sock_map_get_from_fd(attr, prog) |
2126 | Break |
2127 | Case ptype == BPF_PROG_TYPE_LIRC_MODE2 |
2128 | ret = lirc_prog_attach(attr, prog) |
2129 | Break |
2130 | Case ptype == BPF_PROG_TYPE_FLOW_DISSECTOR |
2131 | ret = skb_flow_dissector_bpf_prog_attach(attr, prog) |
2132 | Break |
2133 | Default |
2134 | ret = cgroup_bpf_prog_attach(attr, ptype, prog) |
2137 | If ret Then bpf_prog_put(prog) |
2139 | Return ret |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |