* most code reviewed with help of splint
* introduce new option handling (in/out/action)
- old options are still supported, no plans to remove this
support in next releases
* some automagically handling relating to
- input
- output
- action
if not extra specified
* add more conversions, also add more support of IPv4 addresses
* the address information option (-i) now shows also
- IPv4 registries (by using included current IPv4 CIDR table)
- IPv6 registries
- OUI (vendor) of NIC, if EUI-48/64 is a global one
* an example CGI frontend called "ipv6calcweb.cgi" to display
information about a REMOTE_ADDR on a webpage
- See e.g. http://ipv6.aerasec.de/index2.html for what can be
displayed
- Currently supported languages: en, de
ipv6calc is a small utility in C to manipulate IPv6 addresses. The intentions
were to convert a given IPv6 address into compressed format, convert a given
IPv6 address into the same format like shown in Linux' /proc/net/if_inet6 and
(because it was not difficulty) migrate ip6_int into. Now only one utiltity is
needed to do a lot (perhaps the features grow on demand in the future).
This utility will be used in the future to extend features on
network-functions-ipv6.
Examples:
ipv6calc --addr2ip6_int ipv6addr[/prefixlength]
Converts given IPv6 address to a dot separated reverse nibble format for use with DNS
e.g. 3ffe:400:100:f101::1
-> 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.1.f.0.0.1.0.0.0.4.0.e.f.f.3.ip6.int
e.g. 3ffe:400:100:f101::1/64 -> 1.0.1.f.0.0.1.0.0.0.4.0.e.f.f.3.ip6.int
ipv6calc --addr2compaddr ipv6addr[/prefixlength]
Converts given IPv6 address to a compressed one
e.g. 3ffe:0400:0100:f101:0000:0000:0000:0001 -> 3ffe:400:100:f101::1
ipv6calc --addr2uncompaddr ipv6addr[/prefixlength]
Converts given IPv6 address to an uncompressed one
e.g. 3ffe:400:100:f101::1 -> 3ffe:400:100:f101:0:0:0:1
ipv6calc --addr2fulluncompaddr ipv6addr[/prefixlength]
Converts given IPv6 address to a full uncompressed one
e.g. 3ffe:400:100:f101::1 -> 3ffe:0400:0100:f101:0000:0000:0000:0001
ipv6calc --addr2if_inet6 ipv6addr[/prefixlength]
Converts given IPv6 address to similar format shown in /proc/net/if_inet6:
addr scope [prefixlength]
e.g. 3ffe:400:100:f101::1 -> 3ffe04000100f1010000000000000001 00
e.g. 3ffe:400:100:f101::1/64 -> 3ffe04000100f1010000000000000001 00 40
ipv6calc --if_inet62addr 32hexcharsIPv6addr [2hexcharsPrefixlength]
Converts given if_inet6 formatted IPv6 address to normal one
e.g. 3ffe04000100f1010000000000000001 -> 3ffe:400:100::1
e.g. 3ffe04000100f1010000000000000001 40 -> 3ffe:400:100::1/64