mcast_get_ttl.c

来自「用户认证及计费系统的网络驱动库」· C语言 代码 · 共 46 行

C
46
字号
#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);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?