]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-ip-protocol-list.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 #include <netinet/in.h>
6 #include "ip-protocol-list.h"
7 #include "stdio-util.h"
8 #include "string-util.h"
10 static void test_int(int i
) {
11 char str
[DECIMAL_STR_MAX(int)];
13 assert_se(ip_protocol_from_name(ip_protocol_to_name(i
)) == i
);
15 xsprintf(str
, "%i", i
);
16 assert_se(ip_protocol_from_name(ip_protocol_to_name(parse_ip_protocol(str
))) == i
);
19 static void test_int_fail(int i
) {
20 char str
[DECIMAL_STR_MAX(int)];
22 assert_se(!ip_protocol_to_name(i
));
24 xsprintf(str
, "%i", i
);
25 assert_se(parse_ip_protocol(str
) == -EINVAL
);
28 static void test_str(const char *s
) {
29 assert_se(streq(ip_protocol_to_name(ip_protocol_from_name(s
)), s
));
30 assert_se(streq(ip_protocol_to_name(parse_ip_protocol(s
)), s
));
33 static void test_str_fail(const char *s
) {
34 assert_se(ip_protocol_from_name(s
) == -EINVAL
);
35 assert_se(parse_ip_protocol(s
) == -EINVAL
);
38 static void test_parse_ip_protocol(const char *s
, int expected
) {
39 assert_se(parse_ip_protocol(s
) == expected
);
42 int main(int argc
, const char *argv
[]) {
43 test_int(IPPROTO_TCP
);
44 test_int(IPPROTO_DCCP
);
46 test_int_fail(1024 * 1024);
50 test_str_fail("hoge");
52 test_str_fail("1000000000");
54 test_parse_ip_protocol("sctp", IPPROTO_SCTP
);
55 test_parse_ip_protocol("ScTp", IPPROTO_SCTP
);
56 test_parse_ip_protocol("ip", IPPROTO_IP
);
57 test_parse_ip_protocol("", IPPROTO_IP
);
58 test_parse_ip_protocol("1", 1);
59 test_parse_ip_protocol("0", 0);
60 test_parse_ip_protocol("-10", -EINVAL
);
61 test_parse_ip_protocol("100000000", -EINVAL
);