Dolda2000 GitWeb
/
mctap.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Print packet contents from test code.
[mctap.git]
/
src
/
mctap.c
diff --git
a/src/mctap.c
b/src/mctap.c
index
b021d88
..
8125c41
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,10
@@
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);
+ soval = 1;
+ if(setsockopt(fd, SOL_IP, IP_MULTICAST_LOOP, &soval, sizeof(soval)))
return(-1);
return(fd);
}
return(-1);
return(fd);
}
@@
-70,7
+77,7
@@
static int mkmcastsk4(struct in_addr group, int port)
static void test(int fd)
{
char buf[65536];
static void test(int fd)
{
char buf[65536];
- int ret;
+ int
i,
ret;
struct sockaddr_storage nm;
socklen_t nmlen;
struct sockaddr_storage nm;
socklen_t nmlen;
@@
-82,6
+89,11
@@
static void test(int fd)
exit(1);
}
printf("%s %i:\n", formataddress((struct sockaddr *)&nm, nmlen), ret);
exit(1);
}
printf("%s %i:\n", formataddress((struct sockaddr *)&nm, nmlen), ret);
+ for(i = 0; i < ret; i++) {
+ printf("%02x ", (unsigned char)buf[i]);
+ if(i % 20 == 0)
+ putchar(10);
+ }
}
}
}
}