mcast_set_loop.c 640 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /* include mcast_set_loop */
  2. #include "unp.h"
  3. int
  4. mcast_set_loop(int sockfd, int onoff)
  5. {
  6. switch (sockfd_to_family(sockfd)) {
  7. case AF_INET: {
  8. u_char flag;
  9. flag = onoff;
  10. return(setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_LOOP,
  11. &flag, sizeof(flag)));
  12. }
  13. #ifdef IPV6
  14. case AF_INET6: {
  15. u_int flag;
  16. flag = onoff;
  17. return(setsockopt(sockfd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,
  18. &flag, sizeof(flag)));
  19. }
  20. #endif
  21. default:
  22. errno = EAFNOSUPPORT;
  23. return(-1);
  24. }
  25. }
  26. /* end mcast_set_loop */
  27. void
  28. Mcast_set_loop(int sockfd, int onoff)
  29. {
  30. if (mcast_set_loop(sockfd, onoff) < 0)
  31. err_sys("mcast_set_loop error");
  32. }