2 This file is part of systemd
4 Copyright 2014 Ronny Chevalier
6 systemd is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published by
8 the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version.
11 systemd is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20 #include "socket-util.h"
24 static void test_socket_address_parse(void) {
27 assert_se(socket_address_parse(&a, "junk") < 0);
28 assert_se(socket_address_parse(&a, "192.168.1.1") < 0);
29 assert_se(socket_address_parse(&a, ".168.1.1") < 0);
30 assert_se(socket_address_parse(&a, "989.168.1.1") < 0);
31 assert_se(socket_address_parse(&a, "192.168.1.1:65536") < 0);
32 assert_se(socket_address_parse(&a, "192.168.1.1:0") < 0);
33 assert_se(socket_address_parse(&a, "0") < 0);
34 assert_se(socket_address_parse(&a, "65536") < 0);
36 assert_se(socket_address_parse(&a, "65535") >= 0);
38 if (socket_ipv6_is_supported()) {
39 assert_se(socket_address_parse(&a, "[::1]") < 0);
40 assert_se(socket_address_parse(&a, "[::1]8888") < 0);
41 assert_se(socket_address_parse(&a, "::1") < 0);
42 assert_se(socket_address_parse(&a, "[::1]:0") < 0);
43 assert_se(socket_address_parse(&a, "[::1]:65536") < 0);
44 assert_se(socket_address_parse(&a, "[a:b:1]:8888") < 0);
46 assert_se(socket_address_parse(&a, "8888") >= 0);
47 assert_se(a.sockaddr.sa.sa_family == AF_INET6);
49 assert_se(socket_address_parse(&a, "[2001:0db8:0000:85a3:0000:0000:ac1f:8001]:8888") >= 0);
50 assert_se(a.sockaddr.sa.sa_family == AF_INET6);
52 assert_se(socket_address_parse(&a, "[::1]:8888") >= 0);
53 assert_se(a.sockaddr.sa.sa_family == AF_INET6);
55 assert_se(socket_address_parse(&a, "[::1]:8888") < 0);
57 assert_se(socket_address_parse(&a, "8888") >= 0);
58 assert_se(a.sockaddr.sa.sa_family == AF_INET);
61 assert_se(socket_address_parse(&a, "192.168.1.254:8888") >= 0);
62 assert_se(a.sockaddr.sa.sa_family == AF_INET);
64 assert_se(socket_address_parse(&a, "/foo/bar") >= 0);
65 assert_se(a.sockaddr.sa.sa_family == AF_UNIX);
67 assert_se(socket_address_parse(&a, "@abstract") >= 0);
68 assert_se(a.sockaddr.sa.sa_family == AF_UNIX);
71 static void test_socket_address_parse_netlink(void) {
74 assert_se(socket_address_parse_netlink(&a, "junk") < 0);
75 assert_se(socket_address_parse_netlink(&a, "") < 0);
77 assert_se(socket_address_parse_netlink(&a, "route") >= 0);
78 assert_se(socket_address_parse_netlink(&a, "route 10") >= 0);
79 assert_se(a.sockaddr.sa.sa_family == AF_NETLINK);
80 assert_se(a.protocol == NETLINK_ROUTE);
83 static void test_socket_address_equal(void) {
87 assert_se(socket_address_parse(&a, "192.168.1.1:8888") >= 0);
88 assert_se(socket_address_parse(&b, "192.168.1.1:888") >= 0);
89 assert_se(!socket_address_equal(&a, &b));
91 assert_se(socket_address_parse(&a, "192.168.1.1:8888") >= 0);
92 assert_se(socket_address_parse(&b, "192.16.1.1:8888") >= 0);
93 assert_se(!socket_address_equal(&a, &b));
95 assert_se(socket_address_parse(&a, "192.168.1.1:8888") >= 0);
96 assert_se(socket_address_parse(&b, "8888") >= 0);
97 assert_se(!socket_address_equal(&a, &b));
99 assert_se(socket_address_parse(&a, "192.168.1.1:8888") >= 0);
100 assert_se(socket_address_parse(&b, "/foo/bar/") >= 0);
101 assert_se(!socket_address_equal(&a, &b));
103 assert_se(socket_address_parse(&a, "192.168.1.1:8888") >= 0);
104 assert_se(socket_address_parse(&b, "192.168.1.1:8888") >= 0);
105 assert_se(socket_address_equal(&a, &b));
107 assert_se(socket_address_parse(&a, "/foo/bar") >= 0);
108 assert_se(socket_address_parse(&b, "/foo/bar") >= 0);
109 assert_se(socket_address_equal(&a, &b));
111 assert_se(socket_address_parse(&a, "[::1]:8888") >= 0);
112 assert_se(socket_address_parse(&b, "[::1]:8888") >= 0);
113 assert_se(socket_address_equal(&a, &b));
115 assert_se(socket_address_parse(&a, "@abstract") >= 0);
116 assert_se(socket_address_parse(&b, "@abstract") >= 0);
117 assert_se(socket_address_equal(&a, &b));
119 assert_se(socket_address_parse_netlink(&a, "firewall") >= 0);
120 assert_se(socket_address_parse_netlink(&b, "firewall") >= 0);
121 assert_se(socket_address_equal(&a, &b));
124 static void test_socket_address_get_path(void) {
127 assert_se(socket_address_parse(&a, "192.168.1.1:8888") >= 0);
128 assert_se(!socket_address_get_path(&a));
130 assert_se(socket_address_parse(&a, "@abstract") >= 0);
131 assert_se(!socket_address_get_path(&a));
133 assert_se(socket_address_parse(&a, "[::1]:8888") >= 0);
134 assert_se(!socket_address_get_path(&a));
136 assert_se(socket_address_parse(&a, "/foo/bar") >= 0);
137 assert_se(streq(socket_address_get_path(&a), "/foo/bar"));
140 int main(int argc, char *argv[]) {
141 test_socket_address_parse();
142 test_socket_address_parse_netlink();
143 test_socket_address_equal();
144 test_socket_address_get_path();