【发布时间】:2016-02-10 23:11:11
【问题描述】:
对于以struct sockaddr_in6 数据类型表示的给定 IPv6 地址,我想知道该地址是否在多播 address range 中。
例如,我想要一个函数is_ipv6_multicast(),其工作方式如下
struct sockaddr_in6* sa6;
...
if (is_ipv6_multicast(sa6)) {
// do one thing
} else {
// do another
}
谁能帮我解决这个问题?
【问题讨论】:
-
正如@dbush 指出的那样,很容易确定它是否是多播地址。较难的部分是根据标志和范围确定哪种多播。某些多播地址无效,具体取决于标志的设置方式(例如,如果设置了 R 标志,则机器人的 P 和 T 标志也必须设置,如果其中一个或两者都未设置,则它是无效的多播地址) .