#include	"unp.h"

static doit(int, const char *);

void
main()
{
	int		tcpsock, udpsock;
	struct sockaddr_in	servaddr;

	if ( (tcpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
		err_sys("TCP socket error");

#ifdef notdef
	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin_family      = AF_INET;
	servaddr.sin_port        = htons(9);
	if (ascii2addr(AF_INET, "127.0.0.1", &servaddr.sin_addr) != 4)
		err_quit("ascii2addr error");

	if (connect(tcpsock, (SA *) &servaddr, sizeof(servaddr)) < 0)
		err_sys("connect error");
#endif

	doit(tcpsock, "tcp");

	if ( (udpsock = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
		err_sys("UDP socket error");

	doit(udpsock, "udp");
	exit(0);
}

static
doit(int fd, const char *name)
{
	int			val;
	socklen_t	optlen;

	optlen = sizeof(val);
	if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &optlen) < 0)
		err_sys("SO_SNDBUF getsockopt error");
	printf("%s send buffer size = %d\n", name, val);

	optlen = sizeof(val);
	if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &optlen) < 0)
		err_sys("SO_RCVBUF getsockopt error");
	printf("%s recv buffer size = %d\n", name, val);

	optlen = sizeof(val);
	if (getsockopt(fd, SOL_SOCKET, SO_SNDLOWAT, &val, &optlen) < 0)
		err_sys("SO_SNDLOWAT getsockopt error");
	printf("%s send low-water mark = %d\n", name, val);

	optlen = sizeof(val);
	if (getsockopt(fd, SOL_SOCKET, SO_RCVLOWAT, &val, &optlen) < 0)
		err_sys("SO_RCVLOWAT getsockopt error");
	printf("%s receive low-water mark size = %d\n", name, val);
}


syntax highlighted by Code2HTML, v. 0.9.1