#include    <errno.h>
#include <sys/socket.h> #define SA struct sockaddr int mcast_unblock_source(int sockfd, const SA *src,
socklen_t srclen,const SA *grp, socklen_t grplen)
{
#ifdef MCAST_UNBLOCK_SOURCE
struct group_source_req req;
req.gsr_interface = ;
if (grplen > sizeof(req.gsr_group) ||
srclen > sizeof(req.gsr_source)) {
errno = EINVAL;
return -;
}
memcpy(&req.gsr_group, grp, grplen);
memcpy(&req.gsr_source, src, srclen);
return (setsockopt(sockfd, family_to_level(grp->sa_family),
MCAST_UNBLOCK_SOURCE, &req, sizeof(req)));
#else
switch (grp->sa_family) {
#ifdef IP_UNBLOCK_SOURCE
case AF_INET: {
struct ip_mreq_source mreq; memcpy(&mreq.imr_multiaddr,
&((struct sockaddr_in *) grp)->sin_addr,
sizeof(struct in_addr));
memcpy(&mreq.imr_sourceaddr,
&((struct sockaddr_in *) src)->sin_addr,
sizeof(struct in_addr));
mreq.imr_interface.s_addr = htonl(INADDR_ANY); return(setsockopt(sockfd, IPPROTO_IP,
IP_UNBLOCK_SOURCE, &mreq, sizeof(mreq)));
}
#endif #ifdef IPV6
/* IPv6 source-specific API is MCAST_UNBLOCK_SOURCE */
case AF_INET6: {}
#endif
default: {
errno = EAFNOSUPPORT;
return(-);
}
}
#endif
}

最新文章

  1. php sleep()的实时输出打印,清除ob缓冲区
  2. 利用node构建本地服务
  3. CodeVS 2845 排序的代价
  4. asp.net MVC ajax上传文件
  5. 改变Chrome浏览器主程序_缓存_个人信息路径
  6. 【英语】Bingo口语笔记(78) - let系列
  7. Deferred
  8. Android通过HTTP协议实现上传文件数据
  9. 通过SocketLog快速分析php程序
  10. 【原创】RMQ - ST算法详解
  11. psy &amp; obv
  12. left join 后的条件 位置不同,查询的结果不同
  13. C++实验二——函数重载、函数模板、简单类的定义和实现
  14. ReCAPTCHA &amp; 手势验证
  15. luogu P2962 [USACO09NOV]灯Lights 高斯消元
  16. ABAP 7.50 新特性之另一个CORRESPONDING
  17. python Polygon模块安装
  18. (转)Fabric CA环境的集成
  19. python pillow
  20. Linux 命令的20个实用范例,入门必看!

热门文章

  1. Qt入门-表格类QTableWidget
  2. 初学mysql数据库
  3. go基础_函数
  4. Fiddler修改http请求响应简单实例
  5. Mac上通过docker配置PHP开发环境
  6. Coursera-吴恩达机器学习课程笔记-Week1
  7. source insight 编译后出现停止工作解决方法
  8. java 反射获取设置私有成员变量的值
  9. opencv:像素统计信息
  10. 在visual studio 2015 中调试caffe