wireaddr: adds helper is_ipaddr, is_toraddr and is_dnsaddr

This commit is contained in:
Michael Schmoock
2021-10-01 13:14:46 +02:00
committed by Rusty Russell
parent 300303a8f2
commit 25bd09716f
4 changed files with 121 additions and 2 deletions

View File

@@ -117,6 +117,26 @@ int main(int argc, char *argv[])
common_setup(argv[0]);
/* Check IP/TOR/DNS parser */
assert(is_ipaddr("192.168.1.2"));
assert(!is_ipaddr("foo.bar.1.2"));
assert(is_toraddr("qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion"));
assert(is_toraddr("qubesos4rrrrz6n4.onion"));
assert(!is_toraddr("QUBESOSfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion"));
assert(!is_toraddr("QUBESOS4rrrrz6n4.onion"));
assert(!is_toraddr("qubesos-asa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion"));
assert(is_dnsaddr("example.com"));
assert(is_dnsaddr("example.digits123.com"));
assert(is_dnsaddr("example-hyphen.com"));
assert(is_dnsaddr("123example.com"));
assert(is_dnsaddr("example123.com"));
assert(is_dnsaddr("is-valid.3hostname123.com"));
assert(!is_dnsaddr("UPPERCASE.invalid.com"));
assert(!is_dnsaddr("-.invalid.com"));
assert(!is_dnsaddr("invalid.-example.com"));
assert(!is_dnsaddr("invalid.example-.com"));
assert(!is_dnsaddr("invalid..example.com"));
/* Grossly invalid. */
assert(!separate_address_and_port(tmpctx, "[", &ip, &port));
assert(!separate_address_and_port(tmpctx, "[123", &ip, &port));
@@ -148,6 +168,19 @@ int main(int argc, char *argv[])
assert(streq(ip, "192.168.2.255"));
assert(port == 0);
/* DNS types */
assert(separate_address_and_port(tmpctx, "example.com:42", &ip, &port));
assert(streq(ip, "example.com"));
assert(port == 42);
assert(separate_address_and_port(tmpctx, "sub.example.com:21", &ip, &port));
assert(streq(ip, "sub.example.com"));
assert(port == 21);
port = 123;
assert(separate_address_and_port(tmpctx, "sub.example.com", &ip, &port));
assert(streq(ip, "sub.example.com"));
assert(port == 123);
port = 0;
// unusual but possibly valid case
assert(separate_address_and_port(tmpctx, "[::1]", &ip, &port));
assert(streq(ip, "::1"));