vxWorks MAC组播加入使用SIOCADDMULTI问题

第七品 2020-06-19 07:28:10
vxworks对接口操作使用ioctl,参数多为struct ifreq,如获取接口硬件地址:
struct ifreq ethreq;
strncpy(ethreq.ifr_name, “eth0”, IFNAMSIZ);
retval = ioctl(sockfd[port_index], SIOCGIFLLADDR, ðreq);
但是SIOCADDMULTI要求传入的参数为struct sockaddr,(#define SIOCADDMULTI VX_IOWR(NETIF, 29, W, struct sockaddr))
如果使用类似的ioctl进行组播加入:
char mymac[6]={0x01,0x0c,0xcd,0x01,0x00,0x01};
struct sockaddr mulcast_addr;
mulcast_addr.sa_family = PF_UNSPEC;
mulcast_addr.sa_len = 6;
for(int i = 0; i < 6; i++)
{
mulcast_addr.sa_data[i] = mymac[i];
}
retval = ioctl (sockfd[port_index], SIOCADDMULTI, (struct sockaddr)&mulcast_addr); //加入多播组
最后retval返回错误,errno为ENXIO,即“/* No such device or address */”。怀疑此处是因为传入的参数不包含类似于上面ifr_name的接口信息。是SIOCADDMULTI不能这么使用吗?
...全文
2320 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,184

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧