/* protocol utilities tests Copyright (C) Martin Schwenke 2016 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #include "replace.h" #include "system/network.h" #include #include #include "protocol/protocol.h" #include "protocol/protocol_api.h" #include "common/system_util.c" /* Test parsing of IPs, conversion to string */ static void test_sock_addr_to_string(const char *ip) { ctdb_sock_addr sa; const char *s; assert(parse_ip(ip, NULL, 0, &sa)); s = ctdb_sock_addr_to_string(NULL, &sa); assert(strcmp(ip, s) == 0); talloc_free(discard_const(s)); } static void test_sock_addr_cmp(const char *ip1, const char *ip2, int res) { ctdb_sock_addr sa1, sa2; int ret; assert(parse_ip(ip1, NULL, 0, &sa1)); assert(parse_ip(ip2, NULL, 0, &sa2)); ret = ctdb_sock_addr_cmp(&sa1, &sa2); if (ret < 0) { ret = -1; } else if (ret > 0) { ret = 1; } assert(ret == res); } int main(int argc, char *argv[]) { test_sock_addr_to_string("0.0.0.0"); test_sock_addr_to_string("127.0.0.1"); test_sock_addr_to_string("::1"); test_sock_addr_to_string("192.168.2.1"); test_sock_addr_to_string("fe80::6af7:28ff:fefa:d136"); test_sock_addr_cmp("127.0.0.1", "127.0.0.1" , 0); test_sock_addr_cmp("127.0.0.1", "127.0.0.2" , -1); test_sock_addr_cmp("127.0.0.2", "127.0.0.1" , 1); test_sock_addr_cmp("127.0.1.2", "127.0.2.1" , -1); test_sock_addr_cmp("127.0.2.1", "127.0.1.2" , 1); test_sock_addr_cmp("fe80::6af7:28ff:fefa:d136", "127.0.1.2" , 1); test_sock_addr_cmp("fe80::6af7:28ff:fefa:d136", "fe80::6af7:28ff:fefa:d136" , 0); test_sock_addr_cmp("fe80::6af7:28ff:fefa:d136", "fe80::6af7:28ff:fefa:d137" , -1); test_sock_addr_cmp("fe80::6af7:28ff:fefa:d136", "fe80:0000:0000:0000:6af7:28ff:fefa:d136" , 0); return 0; }