Dolda2000 GitWeb
/
mctap.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Reuse multicast socket address.
[mctap.git]
/
src
/
mctap.c
diff --git
a/src/mctap.c
b/src/mctap.c
index
b021d88
..
437082b
100644
(file)
--- 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;
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);
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);
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;
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);
}
return(-1);
return(fd);
}