天天看點

判斷IPv6位址合法性

在 <netinet/in.h> 頭檔案下有下列這些宏用于判斷IPv6位址合法性

傳回0代表true,傳回非零值代表ipv6位址為非指定類型的的位址(false)

int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *aptr);

如果位址是未指定的IPv6位址,則IN6_IS_ADDR_UNSPECIFIED傳回true,否則傳回false

int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *aptr);

如果位址是環回IPv6位址,則IN6_IS_ADDR_LOOPBACK傳回true,否則傳回false。

int IN6_IS_ADDR_MULTICAST(const struct in6_addr *aptr);

如果位址是多點傳播IPv6位址,則IN6_IS_ADDR_MULTICAST傳回true,否則傳回false。

int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *aptr);

如果位址是連結本地IPv6位址,則IN6_IS_ADDR_LINKLOCAL傳回true,否則傳回false。

int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *aptr);

如果位址是站點本地IPv6位址,則IN6_IS_ADDR_SITELOCAL傳回true,否則傳回false。

int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *aptr);

如果位址是IPv4映射的IPv6位址,則IN6_IS_ADDR_V4MAPPED傳回true,否則傳回false。

int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *aptr);

如果位址是IPv4相容的IPv6位址,則IN6_IS_ADDR_V4COMPAT傳回true,否則傳回false

int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *aptr);

如果位址是具有節點本地範圍的IPv6多點傳播位址,則IN6_IS_ADDR_MC_NODELOCAL傳回true,否則傳回false。

int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *aptr);

如果位址是具有連結本地範圍的IPv6多點傳播位址,則IN6_IS_ADDR_MC_LINKLOCAL傳回true,否則傳回false。

int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *aptr);

如果位址是具有站點本地作用域的IPv6多點傳播位址,則IN6_IS_ADDR_MC_SITELOCAL傳回true,否則傳回false。

int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *aptr);

如果位址是具有組織本地範圍的IPv6多點傳播位址,則IN6_IS_ADDR_MC_ORGLOCAL傳回true,否則傳回false。

int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *aptr);

如果位址是具有全局範圍的IPv6多點傳播位址,則IN6_IS_ADDR_MC_GLOBAL傳回true,否則傳回false。

參考文檔:​​http://uw714doc.sco.com/en/man/html.3N/inet.3N.html​​