#include	"sntp.h"

void
bind_ubcast(struct sockaddr *sabind, socklen_t salen, int port,
			int alias, int bcast)
{
	int		i, fd;

		/* 4first see if we've already bound this address */
	for (i = 0; i < naddrs; i++) {
		if (sock_cmp_addr(addrs[i].addr_sa, sabind, salen) == 0)
			return;
	}

	fd = Socket(sabind->sa_family, SOCK_DGRAM, 0);

	sock_set_port(sabind, salen, port);

	Setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));

	printf("binding %s\n", Sock_ntop(sabind, salen));
	if (bind(fd, sabind, salen) < 0) {
		if (errno == EADDRINUSE) {
			printf("  (address already in use)\n");
			close(fd);
			return;
		} else
			err_sys("bind error");
	}

	addrs[naddrs].addr_sa = sabind;	/* save ptr to sockaddr{} */
	addrs[naddrs].addr_salen = salen;
	addrs[naddrs].addr_fd = fd;
	if (bcast)
		addrs[naddrs].addr_flags = ADDR_BCAST;
	naddrs++;
}


syntax highlighted by Code2HTML, v. 0.9.1