returns 0 on match */
| 4345 | |
| 4346 | /* returns 0 on match */ |
| 4347 | int |
| 4348 | key_sockaddrcmp_withmask(const struct sockaddr *sa1, |
| 4349 | const struct sockaddr *sa2, size_t mask) |
| 4350 | { |
| 4351 | if (sa1->sa_family != sa2->sa_family || sa1->sa_len != sa2->sa_len) |
| 4352 | return (1); |
| 4353 | |
| 4354 | switch (sa1->sa_family) { |
| 4355 | #ifdef INET |
| 4356 | case AF_INET: |
| 4357 | return (!key_bbcmp(&satosin(sa1)->sin_addr, |
| 4358 | &satosin(sa2)->sin_addr, mask)); |
| 4359 | #endif |
| 4360 | #ifdef INET6 |
| 4361 | case AF_INET6: |
| 4362 | if (satosin6(sa1)->sin6_scope_id != |
| 4363 | satosin6(sa2)->sin6_scope_id) |
| 4364 | return (1); |
| 4365 | return (!key_bbcmp(&satosin6(sa1)->sin6_addr, |
| 4366 | &satosin6(sa2)->sin6_addr, mask)); |
| 4367 | #endif |
| 4368 | } |
| 4369 | return (1); |
| 4370 | } |
| 4371 | #undef satosin |
| 4372 | #undef satosin6 |
| 4373 |
no test coverage detected