过滤IPv6多播地址范围

时间:2016-02-10 23:11:12

标签: c ipv6 multicast

对于以struct sockaddr_in6数据类型表示的给定IPv6地址,我想知道该地址是否在多播address range中。

例如,我想要一个函数is_ipv6_multicast(),其工作方式如下

struct sockaddr_in6* sa6;
...
if (is_ipv6_multicast(sa6)) {
    // do one thing
} else {
    // do another
}

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:3)

IPv6 multicast addresses在第一个字节中的值为0xFF。所以你可以这样测试:

int is_ipv6_multicast(struct sockaddr_in6* sa6) {
    return (sa6->sin6_addr.s6_addr[0] == 0xff);
}