5 #include <sys/socket.h>
11 #include <netinet/in.h>
13 bool do_test(char* address
, char* netmask
) {
14 struct addrinfo hints
;
15 struct addrinfo
*res
, *tmp
;
19 printf("Doing test for %s, netmask %s\n", address
, netmask
);
20 memset(&hints
, 0, sizeof(hints
));
21 hints
.ai_family
= AF_UNSPEC
;
22 hints
.ai_flags
= AI_NUMERICHOST
;
24 if((err
= getaddrinfo(address
, NULL
, &hints
, &res
))) {
25 fprintf(stderr
, "E: %s\n", gai_strerror(err
));
30 if((err
= getnameinfo((struct sockaddr
*)res
->ai_addr
, res
->ai_addrlen
, buf
,
31 sizeof (buf
), NULL
, 0, NI_NUMERICHOST
))) {
32 fprintf(stderr
, "E: %s\n", gai_strerror(err
));
36 printf("Found %s\n", buf
);
38 if(address_matches(netmask
, (struct sockaddr
*)res
->ai_addr
, NULL
)) {
52 if(!do_test("192.168.0.1", "192.168.1.1/23")) {
55 if(!do_test("192.168.0.1", "192.168.0.1/24")) {
58 if(!do_test("::ffff:192.168.200.1", "192.168.200.1/24")) {
61 if(do_test("::ffff:192.168.200.1", "192.168.100.1/24")) {
64 if(do_test("192.168.200.1", "192.168.0.0/24")) {
67 if(do_test("192.168.200.1", "192.168.0.0/23")) {