■ ■ ■ ■ ■ ■
test/zdtm/static/sock_ip_opts00.c
| skipped 2 lines |
3 | 3 | | #include <netinet/in.h> |
4 | 4 | | |
5 | 5 | | #include <linux/in.h> |
| 6 | + | #include <linux/ip.h> |
6 | 7 | | #include <linux/in6.h> |
7 | 8 | | |
8 | 9 | | #include "zdtmtst.h" |
| skipped 10 lines |
19 | 20 | | struct sk_opt { |
20 | 21 | | int level; |
21 | 22 | | int opt; |
| 23 | + | int val; |
22 | 24 | | }; |
23 | 25 | | |
24 | 26 | | struct sk_opt sk_opts_v4[] = { |
25 | | - | { SOL_IP, IP_FREEBIND }, |
26 | | - | { SOL_IP, IP_PKTINFO }, |
| 27 | + | { SOL_IP, IP_FREEBIND, IP_OPT_VAL }, |
| 28 | + | { SOL_IP, IP_PKTINFO, IP_OPT_VAL }, |
| 29 | + | { SOL_IP, IP_TOS, IPTOS_TOS(IPTOS_THROUGHPUT) }, |
27 | 30 | | }; |
28 | 31 | | |
29 | 32 | | #ifndef IPV6_FREEBIND |
| skipped 1 lines |
31 | 34 | | #endif |
32 | 35 | | |
33 | 36 | | struct sk_opt sk_opts_v6[] = { |
34 | | - | { SOL_IPV6, IPV6_FREEBIND }, |
35 | | - | { SOL_IPV6, IPV6_RECVPKTINFO }, |
| 37 | + | { SOL_IPV6, IPV6_FREEBIND, IP_OPT_VAL }, |
| 38 | + | { SOL_IPV6, IPV6_RECVPKTINFO, IP_OPT_VAL }, |
36 | 39 | | }; |
37 | 40 | | |
38 | 41 | | struct sk_conf { |
| skipped 32 lines |
71 | 74 | | n_opts = sk_confs[i].domain == AF_INET ? ARRAY_SIZE(sk_opts_v4) : ARRAY_SIZE(sk_opts_v6); |
72 | 75 | | |
73 | 76 | | for (j = 0; j < n_opts; j++) { |
74 | | - | val = IP_OPT_VAL; |
| 77 | + | val = opts[j].val; |
75 | 78 | | if (setsockopt(sk_confs[i].sk, opts[j].level, opts[j].opt, &val, sizeof(int)) == -1) { |
76 | 79 | | pr_perror("setsockopt(%d, %d) failed", opts[j].level, opts[j].opt); |
77 | 80 | | goto close; |
| skipped 15 lines |
93 | 96 | | goto close; |
94 | 97 | | } |
95 | 98 | | |
96 | | - | if (val != IP_OPT_VAL) { |
| 99 | + | if (val != opts[j].val) { |
97 | 100 | | fail("Unexpected value socket(%d,%d,%d) opts(%d,%d)", sk_confs[i].domain, |
98 | 101 | | sk_confs[i].type, sk_confs[i].protocol, opts[j].level, opts[j].opt); |
99 | 102 | | goto close; |
| skipped 12 lines |