| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include "unp.h"
- int
- mcast_get_ttl(int sockfd)
- {
- switch (sockfd_to_family(sockfd)) {
- case AF_INET: {
- u_char ttl;
- socklen_t len;
- len = sizeof(ttl);
- if (getsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL,
- &ttl, &len) < 0)
- return(-1);
- return(ttl);
- }
- #ifdef IPV6
- case AF_INET6: {
- int hop;
- socklen_t len;
- len = sizeof(hop);
- if (getsockopt(sockfd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
- &hop, &len) < 0)
- return(-1);
- return(hop);
- }
- #endif
- default:
- errno = EAFNOSUPPORT;
- return(-1);
- }
- }
- int
- Mcast_get_ttl(int sockfd)
- {
- int rc;
- if ( (rc = mcast_get_ttl(sockfd)) < 0)
- err_sys("mcast_get_ttl error");
- return(rc);
- }
|