]> code.delx.au - pulseaudio/blob - src/tests/ipacl-test.c
add IP address ACL subsystem
[pulseaudio] / src / tests / ipacl-test.c
1 /* $Id$ */
2
3 #include <sys/socket.h>
4 #include <netinet/in.h>
5 #include <netinet/ip.h>
6 #include <stdio.h>
7 #include <unistd.h>
8 #include <arpa/inet.h>
9 #include <assert.h>
10 #include <string.h>
11
12 #include <pulsecore/ipacl.h>
13
14 int main(int argc, char *argv[]) {
15 struct sockaddr_in sa;
16 struct sockaddr_in6 sa6;
17 int fd;
18 int r;
19 pa_ip_acl *acl;
20
21 fd = socket(PF_INET, SOCK_STREAM, 0);
22 assert(fd >= 0);
23
24 sa.sin_family = AF_INET;
25 sa.sin_port = htons(22);
26 sa.sin_addr.s_addr = inet_addr("127.0.0.1");
27
28 r = connect(fd, (struct sockaddr*) &sa, sizeof(sa));
29 assert(r >= 0);
30
31 acl = pa_ip_acl_new("127.0.0.1");
32 assert(acl);
33 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
34 pa_ip_acl_free(acl);
35
36 acl = pa_ip_acl_new("127.0.0.2/0");
37 assert(acl);
38 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
39 pa_ip_acl_free(acl);
40
41 acl = pa_ip_acl_new("127.0.0.1/32");
42 assert(acl);
43 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
44 pa_ip_acl_free(acl);
45
46 acl = pa_ip_acl_new("127.0.0.1/7");
47 assert(acl);
48 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
49 pa_ip_acl_free(acl);
50
51 acl = pa_ip_acl_new("127.0.0.2");
52 assert(acl);
53 printf("result=%u (should be 0)\n", pa_ip_acl_check(acl, fd));
54 pa_ip_acl_free(acl);
55
56 acl = pa_ip_acl_new("127.0.0.0/8;0.0.0.0/32");
57 assert(acl);
58 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
59 pa_ip_acl_free(acl);
60
61 acl = pa_ip_acl_new("128.0.0.2/9");
62 assert(acl);
63 printf("result=%u (should be 0)\n", pa_ip_acl_check(acl, fd));
64 pa_ip_acl_free(acl);
65
66 acl = pa_ip_acl_new("::1/9");
67 assert(acl);
68 printf("result=%u (should be 0)\n", pa_ip_acl_check(acl, fd));
69 pa_ip_acl_free(acl);
70
71 close(fd);
72
73 fd = socket(PF_INET6, SOCK_STREAM, 0);
74 assert(fd >= 0);
75
76 memset(&sa6, 0, sizeof(sa6));
77 sa6.sin6_family = AF_INET6;
78 sa6.sin6_port = htons(22);
79 inet_pton(AF_INET6, "::1", &sa6.sin6_addr);
80
81 r = connect(fd, (struct sockaddr*) &sa6, sizeof(sa6));
82 assert(r >= 0);
83
84 acl = pa_ip_acl_new("::1");
85 assert(acl);
86 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
87 pa_ip_acl_free(acl);
88
89 acl = pa_ip_acl_new("::1/9");
90 assert(acl);
91 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
92 pa_ip_acl_free(acl);
93
94 acl = pa_ip_acl_new("::/0");
95 assert(acl);
96 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
97 pa_ip_acl_free(acl);
98
99 acl = pa_ip_acl_new("::2/128");
100 assert(acl);
101 printf("result=%u (should be 0)\n", pa_ip_acl_check(acl, fd));
102 pa_ip_acl_free(acl);
103
104 acl = pa_ip_acl_new("::2/127");
105 assert(acl);
106 printf("result=%u (should be 0)\n", pa_ip_acl_check(acl, fd));
107 pa_ip_acl_free(acl);
108
109 acl = pa_ip_acl_new("::2/126");
110 assert(acl);
111 printf("result=%u (should be 1)\n", pa_ip_acl_check(acl, fd));
112 pa_ip_acl_free(acl);
113
114 close(fd);
115
116 return 0;
117 }