Lines Matching refs:type

14 	enum bpf_attach_type type;
29 static void netns_bpf_attach_type_unneed(enum netns_bpf_attach_type type)
31 switch (type) {
42 static void netns_bpf_attach_type_need(enum netns_bpf_attach_type type)
44 switch (type) {
57 enum netns_bpf_attach_type type)
61 run_array = rcu_replace_pointer(net->bpf.run_array[type], NULL,
66 static int link_index(struct net *net, enum netns_bpf_attach_type type,
72 list_for_each_entry(pos, &net->bpf.links[type], node) {
80 static int link_count(struct net *net, enum netns_bpf_attach_type type)
85 list_for_each(pos, &net->bpf.links[type])
90 static void fill_prog_array(struct net *net, enum netns_bpf_attach_type type,
96 list_for_each_entry(pos, &net->bpf.links[type], node) {
106 enum netns_bpf_attach_type type = net_link->netns_type;
122 netns_bpf_attach_type_unneed(type);
125 idx = link_index(net, type, net_link);
128 cnt = link_count(net, type);
130 netns_bpf_run_array_detach(net, type);
134 old_array = rcu_dereference_protected(net->bpf.run_array[type],
141 fill_prog_array(net, type, new_array);
142 rcu_assign_pointer(net->bpf.run_array[type], new_array);
170 enum netns_bpf_attach_type type = net_link->netns_type;
177 if (new_prog->type != link->prog->type)
189 run_array = rcu_dereference_protected(net->bpf.run_array[type],
191 idx = link_index(net, type, net_link);
219 info->netns.attach_type = net_link->type;
249 enum netns_bpf_attach_type type)
255 run_array = rcu_dereference_protected(net->bpf.run_array[type],
274 enum netns_bpf_attach_type type;
281 type = to_netns_bpf_attach_type(attr->query.attach_type);
282 if (type < 0)
290 ret = __netns_bpf_prog_query(attr, uattr, net, type);
300 enum netns_bpf_attach_type type;
308 type = to_netns_bpf_attach_type(attr->attach_type);
309 if (type < 0)
316 if (!list_empty(&net->bpf.links[type])) {
321 switch (type) {
332 attached = net->bpf.progs[type];
339 run_array = rcu_dereference_protected(net->bpf.run_array[type],
350 rcu_assign_pointer(net->bpf.run_array[type], run_array);
353 net->bpf.progs[type] = prog;
365 enum netns_bpf_attach_type type,
371 if (!list_empty(&net->bpf.links[type]))
374 attached = net->bpf.progs[type];
377 netns_bpf_run_array_detach(net, type);
378 net->bpf.progs[type] = NULL;
385 enum netns_bpf_attach_type type;
392 type = to_netns_bpf_attach_type(attr->attach_type);
393 if (type < 0)
401 ret = __netns_bpf_prog_detach(current->nsproxy->net_ns, type, prog);
409 static int netns_bpf_max_progs(enum netns_bpf_attach_type type)
411 switch (type) {
422 enum netns_bpf_attach_type type)
431 cnt = link_count(net, type);
432 if (cnt >= netns_bpf_max_progs(type)) {
437 if (net->bpf.progs[type]) {
442 switch (type) {
462 list_add_tail(&net_link->node, &net->bpf.links[type]);
464 fill_prog_array(net, type, run_array);
465 run_array = rcu_replace_pointer(net->bpf.run_array[type], run_array,
470 netns_bpf_attach_type_need(type);
482 enum bpf_attach_type type;
489 type = attr->link_create.attach_type;
490 netns_type = to_netns_bpf_attach_type(type);
506 net_link->type = type;
531 int type;
533 for (type = 0; type < MAX_NETNS_BPF_ATTACH_TYPE; type++)
534 INIT_LIST_HEAD(&net->bpf.links[type]);
541 enum netns_bpf_attach_type type;
545 for (type = 0; type < MAX_NETNS_BPF_ATTACH_TYPE; type++) {
546 netns_bpf_run_array_detach(net, type);
547 list_for_each_entry(net_link, &net->bpf.links[type], node) {
549 netns_bpf_attach_type_unneed(type);
551 if (net->bpf.progs[type])
552 bpf_prog_put(net->bpf.progs[type]);