diff --git a/README.md b/README.md index 9b5db27..ee3a510 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ ## About isinetaddr is a simple C library that provides an interface that can -be used to validate one or more IPv4 addresses (with optional support -for CIDR notation as well). The library is guided by easy to extend -[testcases](test/) that help verify safety and correctness. +be used to validate one or more IPv(4|6) addresses +(with optional support for CIDR notation as well). The library is +guided by easy to extend [testcases](test/) that help verify safety +and correctness. ## Examples @@ -122,6 +123,61 @@ foobar is an invalid IPv4 address 127.0.0.1/64 is an invalid IPv4 address ``` +### IPv6 + +The following example demonstrates the `isinetaddr6` function with +both valid and invalid inputs. The `isinetaddr6` function returns 1 +when the input given is valid, and otherwise returns 0. + +```C +#include +#include +#include + +const char *strings[] = { + /* valid */ + "::", + "::1", + "0000:0000:0000:0000:0000:0000:0000:0000", + + /* invalid */ + "foobar", + NULL, + "00:::0", +}; + +int +main(void) +{ + const char *str; + const int i = sizeof(strings) / sizeof(strings[0]); + for (int j = 0; j < i; j++) { + str = strings[j]; + if (isinetaddr6(str)) { + printf("%s is a valid IPv6 address\n", str); + } else { + printf("%s is an invalid IPv6 address\n", str); + } + } + return EXIT_SUCCESS; +} +``` + +When the above source code is compiled and run the output is +expected to be as follows: + +``` +$ cc -Iinclude src/*.c share/isinetaddr/examples/isinetaddr6.c -o example +$ ./example +0x1eef [isinetaddr] % ./example +:: is a valid IPv6 address +::1 is a valid IPv6 address +0000:0000:0000:0000:0000:0000:0000:0000 is a valid IPv6 address +foobar is an invalid IPv6 address +(null) is an invalid IPv6 address +00:::0 is an invalid IPv6 address +``` + ## Sources * [Source code (GitHub)](https://github.com/0x1eef/isinetaddr#readme)