| 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 |