e=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: 400; letter-spacing: normal; orphans: auto; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;"> Received packet, len=3D128
=
etc
But yields no output if ran against above tun0 =
interface (while tcpdump on same is fine). Does that ring a bell with =
anyone ?
Dw
int main(int argc, char =
*argv[])
{
struct sockaddr_in =
addr;
struct ip_mreq mreq;
// skip =
error trapping command line arguments
char* ip =
=3D argv[1];
char* =
group =3D argv[2];
int =
port =3D atoi(argv[3]); // 0 if error, which is an invalid =
port
memset(&addr, 0, =
sizeof(addr));
addr.sin_family =3D =
AF_INET;
addr.sin_addr.s_addr =3D =
htonl(INADDR_ANY);
addr.sin_port =3D =
htons(port);
mreq.imr_interface.s_addr =3D =
inet_addr(ip);
mreq.im=
r_multiaddr.s_addr =3D inet_addr(group);
// skip =
error trapping on inet_addr
int fd =3D =
socket(AF_INET, SOCK_DGRAM, 0);
// skip error trapping =
socket
if (bind(fd, (struct sockaddr*) =
&addr, sizeof(addr)) < 0) {
// skip error =
trapping
if (setsockopt(fd, IPPROTO_IP, =
IP_ADD_MEMBERSHIP, (char*) &mreq, sizeof(mreq)) < 0 ){
// skip =
error trapping argumetns
while (1) {
=
..
int nbytes =3D =
recvfrom(fd,msgbuf,MSGBUFSIZE,0,(struct sockaddr *) =
&addr,&addrlen);
if =
(nbytes < 0) =
{
per=
ror("recvfrom");
=
return =
1;
}
=
printf(?Received packet, len=3D%d\n", =
nbytes);
}