mcast_set_ttl.c 561 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "unp.h"
  2. int
  3. mcast_set_ttl(int sockfd, int val)
  4. {
  5. switch (sockfd_to_family(sockfd)) {
  6. case AF_INET: {
  7. u_char ttl;
  8. ttl = val;
  9. return(setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL,
  10. &ttl, sizeof(ttl)));
  11. }
  12. #ifdef IPV6
  13. case AF_INET6: {
  14. int hop;
  15. hop = val;
  16. return(setsockopt(sockfd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
  17. &hop, sizeof(hop)));
  18. }
  19. #endif
  20. default:
  21. errno = EAFNOSUPPORT;
  22. return(-1);
  23. }
  24. }
  25. void
  26. Mcast_set_ttl(int sockfd, int val)
  27. {
  28. if (mcast_set_ttl(sockfd, val) < 0)
  29. err_sys("mcast_set_ttl error");
  30. }