Lines Matching refs:netns

21 static __u32 query_attached_prog_id(int netns)
27 err = bpf_prog_query(netns, BPF_FLOW_DISSECTOR, 0, NULL,
37 static bool prog_is_attached(int netns)
39 return query_attached_prog_id(netns) > 0;
90 static void test_prog_attach_prog_attach(int netns, int prog1, int prog2)
99 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
107 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog2));
113 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog2));
119 CHECK_FAIL(prog_is_attached(netns));
122 static void test_link_create_link_create(int netns, int prog1, int prog2)
127 link1 = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &opts);
132 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
136 link2 = bpf_link_create(prog2, netns, BPF_FLOW_DISSECTOR, &opts);
141 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
144 CHECK_FAIL(prog_is_attached(netns));
147 static void test_prog_attach_link_create(int netns, int prog1, int prog2)
157 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
161 link = bpf_link_create(prog2, netns, BPF_FLOW_DISSECTOR, &opts);
166 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
171 CHECK_FAIL(prog_is_attached(netns));
174 static void test_link_create_prog_attach(int netns, int prog1, int prog2)
179 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &opts);
184 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
191 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
194 CHECK_FAIL(prog_is_attached(netns));
197 static void test_link_create_prog_detach(int netns, int prog1, int prog2)
202 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &opts);
207 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
214 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
217 CHECK_FAIL(prog_is_attached(netns));
220 static void test_prog_attach_detach_query(int netns, int prog1, int prog2)
229 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
238 CHECK_FAIL(prog_is_attached(netns));
241 static void test_link_create_close_query(int netns, int prog1, int prog2)
246 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &opts);
251 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
255 CHECK_FAIL(prog_is_attached(netns));
258 static void test_link_update_no_old_prog(int netns, int prog1, int prog2)
264 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &create_opts);
269 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
277 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog2));
280 CHECK_FAIL(prog_is_attached(netns));
283 static void test_link_update_replace_old_prog(int netns, int prog1, int prog2)
289 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &create_opts);
294 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
302 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog2));
305 CHECK_FAIL(prog_is_attached(netns));
308 static void test_link_update_same_prog(int netns, int prog1, int prog2)
314 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &create_opts);
319 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
327 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
330 CHECK_FAIL(prog_is_attached(netns));
333 static void test_link_update_invalid_opts(int netns, int prog1, int prog2)
339 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &create_opts);
344 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
355 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
366 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
377 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
386 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
390 CHECK_FAIL(prog_is_attached(netns));
393 static void test_link_update_invalid_prog(int netns, int prog1, int prog2)
399 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &create_opts);
404 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
415 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
428 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
433 CHECK_FAIL(prog_is_attached(netns));
436 static void test_link_update_netns_gone(int netns, int prog1, int prog2)
442 old_net = netns;
443 netns = unshare_net(old_net);
444 if (netns < 0)
447 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &create_opts);
452 CHECK_FAIL(query_attached_prog_id(netns) != query_prog_id(prog1));
454 close(netns);
462 /* Expect failure when netns destroyed */
473 static void test_link_get_info(int netns, int prog1, int prog2)
482 old_net = netns;
483 netns = unshare_net(old_net);
484 if (netns < 0)
487 err = fstat(netns, &netns_stat);
489 perror("stat(netns)");
493 link = bpf_link_create(prog1, netns, BPF_FLOW_DISSECTOR, &create_opts);
507 /* Expect link info to be sane and match prog and netns details */
511 CHECK_FAIL(info.netns.netns_ino != netns_stat.st_ino);
512 CHECK_FAIL(info.netns.attach_type != BPF_FLOW_DISSECTOR);
535 CHECK_FAIL(info.netns.netns_ino != netns_stat.st_ino);
536 CHECK_FAIL(info.netns.attach_type != BPF_FLOW_DISSECTOR);
538 /* Leave netns link is attached to and close last FD to it */
544 close(netns);
546 netns = -1;
560 CHECK_FAIL(info.netns.netns_ino != 0);
561 CHECK_FAIL(info.netns.attach_type != BPF_FLOW_DISSECTOR);
568 if (netns != -1)
569 close(netns);
572 static void run_tests(int netns)
576 void (*test_func)(int netns, int prog1, int prog2);
602 { "link update netns gone",
620 netns == init_net ? " (init_net)" : "");
622 tests[i].test_func(netns, progs[0], progs[1]);
670 /* Move back to netns we started in. */