对于以struct sockaddr_in6
数据类型表示的给定IPv6地址,我想知道该地址是否在多播address range中。
例如,我想要一个函数is_ipv6_multicast()
,其工作方式如下
struct sockaddr_in6* sa6;
...
if (is_ipv6_multicast(sa6)) {
// do one thing
} else {
// do another
}
任何人都可以帮我吗?
答案 0 :(得分:3)
IPv6 multicast addresses在第一个字节中的值为0xFF
。所以你可以这样测试:
int is_ipv6_multicast(struct sockaddr_in6* sa6) {
return (sa6->sin6_addr.s6_addr[0] == 0xff);
}