#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 = EPROTONOSUPPORT;
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);
}
syntax highlighted by Code2HTML, v. 0.9.1