---
name: "scan_ip6"
section: "3"
platform: "linux"
package: "libowfat-dev"
version: "0.32-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/scan_ip6"
---

# scan\_ip6(3)

parse an IPv6 number in ASCII representation

## NAME

scan\_ip6 - parse an IPv6 number in ASCII representation

## SYNTAX

**#include \<libowfat/ip6.h\>**

int **scan\_ip6**(const char \**src*,char *ip*\[16\]);

## DESCRIPTION

scan\_ip6 parses an IPv6 number in RFC1884 ASCII representation from *src* and writes the result into *ip*. It returns the number of bytes read from *src* or 0 if the parsing failed.

scan\_ip6 accepts upper and lower case hex letters, it understands "::" compression and partial IPv4 addresses as in "::FFFF:129.144.52.38".

To allow transparent usage of IPv4 in IPv6 applications, scan\_ip6 also understands IPv4 addresses in dotted-decimal notation and will return an IPv4-mapped IPv6 address (i.e. "127.0.0.1" will be parsed as "::FFFF:127.0.0.1".

Unlike many other IP parsing routines, scan\_ip6 does not recognize octal (like **0177.0.0.1**) or hexadecimal numbers (like **0x7f000001**) in the IPv4 part.

## EXAMPLE

\#include \<libowfat/str.h\>\
 \#include \<libowfat/ip6.h\>

  char buf\[\]="::1";\
   char ip\[16\];\
   if (scan\_ip6(buf,ip) != str\_len(buf))\
     parse\_error();

## SEE ALSO

[scan\_ip6if(3)](/scan_ip6if/3.md), [fmt\_ip6(3)](/fmt_ip6/3.md), [scan\_ip4(3)](/scan_ip4/3.md), [inet\_pton(3)](/inet_pton/3.md)
