Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftest: tcp: Add v4-v4 and v6-v6 bind() conflict tests.

We don't have bind() conflict tests for the same protocol pairs.

Let's add them except for the same address pair, which will be
covered by the following patch adding 6 more bind() calls for
each test case.

Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://lore.kernel.org/r/20240326204251.51301-6-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Kuniyuki Iwashima and committed by
Jakub Kicinski
5e9e9afd 6f9bc755

+100
+100
tools/testing/selftests/net/bind_wildcard.c
··· 42 42 int expected_errno; 43 43 }; 44 44 45 + /* (IPv4, IPv4) */ 46 + FIXTURE_VARIANT_ADD(bind_wildcard, v4_any_v4_local) 47 + { 48 + .family = {AF_INET, AF_INET}, 49 + .addr = {&in4addr_any, &in4addr_loopback}, 50 + .expected_errno = EADDRINUSE, 51 + }; 52 + 53 + FIXTURE_VARIANT_ADD(bind_wildcard, v4_local_v4_any) 54 + { 55 + .family = {AF_INET, AF_INET}, 56 + .addr = {&in4addr_loopback, &in4addr_any}, 57 + .expected_errno = EADDRINUSE, 58 + }; 59 + 45 60 /* (IPv4, IPv6) */ 46 61 FIXTURE_VARIANT_ADD(bind_wildcard, v4_any_v6_any) 47 62 { ··· 168 153 { 169 154 .family = {AF_INET6, AF_INET}, 170 155 .addr = {&in6addr_v4mapped_loopback, &in4addr_loopback}, 156 + .expected_errno = EADDRINUSE, 157 + }; 158 + 159 + /* (IPv6, IPv6) */ 160 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_any_v6_local) 161 + { 162 + .family = {AF_INET6, AF_INET6}, 163 + .addr = {&in6addr_any, &in6addr_loopback}, 164 + .expected_errno = EADDRINUSE, 165 + }; 166 + 167 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_any_v6_v4mapped_any) 168 + { 169 + .family = {AF_INET6, AF_INET6}, 170 + .addr = {&in6addr_any, &in6addr_v4mapped_any}, 171 + .expected_errno = EADDRINUSE, 172 + }; 173 + 174 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_any_v6_v4mapped_local) 175 + { 176 + .family = {AF_INET6, AF_INET6}, 177 + .addr = {&in6addr_any, &in6addr_v4mapped_loopback}, 178 + .expected_errno = EADDRINUSE, 179 + }; 180 + 181 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_local_v6_any) 182 + { 183 + .family = {AF_INET6, AF_INET6}, 184 + .addr = {&in6addr_loopback, &in6addr_any}, 185 + .expected_errno = EADDRINUSE, 186 + }; 187 + 188 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_local_v6_v4mapped_any) 189 + { 190 + .family = {AF_INET6, AF_INET6}, 191 + .addr = {&in6addr_loopback, &in6addr_v4mapped_any}, 192 + .expected_errno = 0, 193 + }; 194 + 195 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_local_v6_v4mapped_local) 196 + { 197 + .family = {AF_INET6, AF_INET6}, 198 + .addr = {&in6addr_loopback, &in6addr_v4mapped_loopback}, 199 + .expected_errno = 0, 200 + }; 201 + 202 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_v4mapped_any_v6_any) 203 + { 204 + .family = {AF_INET6, AF_INET6}, 205 + .addr = {&in6addr_v4mapped_any, &in6addr_any}, 206 + .expected_errno = EADDRINUSE, 207 + }; 208 + 209 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_v4mapped_any_v6_local) 210 + { 211 + .family = {AF_INET6, AF_INET6}, 212 + .addr = {&in6addr_v4mapped_any, &in6addr_loopback}, 213 + .expected_errno = 0, 214 + }; 215 + 216 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_v4mapped_any_v6_v4mapped_local) 217 + { 218 + .family = {AF_INET6, AF_INET6}, 219 + .addr = {&in6addr_v4mapped_any, &in6addr_v4mapped_loopback}, 220 + .expected_errno = EADDRINUSE, 221 + }; 222 + 223 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_v4mapped_loopback_v6_any) 224 + { 225 + .family = {AF_INET6, AF_INET6}, 226 + .addr = {&in6addr_v4mapped_loopback, &in6addr_any}, 227 + .expected_errno = EADDRINUSE, 228 + }; 229 + 230 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_v4mapped_loopback_v6_local) 231 + { 232 + .family = {AF_INET6, AF_INET6}, 233 + .addr = {&in6addr_v4mapped_loopback, &in6addr_loopback}, 234 + .expected_errno = 0, 235 + }; 236 + 237 + FIXTURE_VARIANT_ADD(bind_wildcard, v6_v4mapped_loopback_v6_v4mapped_any) 238 + { 239 + .family = {AF_INET6, AF_INET6}, 240 + .addr = {&in6addr_v4mapped_loopback, &in6addr_v4mapped_any}, 171 241 .expected_errno = EADDRINUSE, 172 242 }; 173 243