$NetBSD: patch-ab,v 1.3 2013/11/08 21:16:43 joerg Exp $ --- socklib.c.orig 2006-05-23 22:19:49.000000000 +0000 +++ socklib.c @@ -368,7 +368,7 @@ int setTtl(int sock, int ttl) { return setsockopt(sock, SOL_IP, IP_MULTICAST_TTL, (char*)&ttl, sizeof(int)); } -#ifdef SIOCGIFINDEX +#if defined(SIOCGIFINDEX) && !defined(__NetBSD__) # define IP_MREQN ip_mreqn #else # define IP_MREQN ip_mreq @@ -382,7 +382,7 @@ int setTtl(int sock, int ttl) { */ static int fillMreq(int sock, net_if_t *net_if, struct in_addr addr, struct IP_MREQN *mreq) { -#ifdef SIOCGIFINDEX +#if defined(SIOCGIFINDEX) && !defined(__NetBSD__) mreq->imr_ifindex = net_if->index; mreq->imr_address.s_addr = 0; #else @@ -879,6 +879,9 @@ int makeSocket(addr_type_t addr_type, int ret, s; struct sockaddr_in myaddr; in_addr_t ip=0; +#ifdef SO_REUSEPORT + int one = 1; +#endif #ifdef WINDOWS static int lastSocket=-1; @@ -897,6 +900,10 @@ int makeSocket(addr_type_t addr_type, exit(1); } +#ifdef SO_REUSEPORT + ret = setsockopt(s, SOL_SOCKET, SO_REUSEPORT, &one, sizeof(one)); +#endif + if(addr_type == ADDR_TYPE_MCAST && tmpl != NULL) { ip = tmpl->sin_addr.s_addr; }