From: Fredrik Tolf Date: Sat, 9 Aug 2008 14:14:14 +0000 (+0200) Subject: Reuse multicast socket address. X-Git-Url: http://dolda2000.com/gitweb/?p=mctap.git;a=commitdiff_plain;h=aeddd223ec0994425151d23753f25154eee3703e Reuse multicast socket address. --- diff --git a/src/mctap.c b/src/mctap.c index b021d88..437082b 100644 --- a/src/mctap.c +++ b/src/mctap.c @@ -51,10 +51,14 @@ static char *formataddress(struct sockaddr *arg, socklen_t arglen) static int mkmcastsk4(struct in_addr group, int port) { int fd; + int soval; struct sockaddr_in nm; struct ip_mreqn mreq; fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); + soval = 1; + if(setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &soval, sizeof(soval))) + return(-1); memset(&nm, 0, sizeof(nm)); nm.sin_family = AF_INET; nm.sin_port = htons(port); @@ -62,7 +66,7 @@ static int mkmcastsk4(struct in_addr group, int port) return(-1); memset(&mreq, 0, sizeof(mreq)); mreq.imr_multiaddr = group; - if(setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq))) + if(setsockopt(fd, SOL_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq))) return(-1); return(fd); }