Here is the function I added for sending packet through pcap :
int pcap_write_linux(pcap_t *pd, unsigned char *buf, int count)
{
int i;
struct sockaddr_ll sa;
sa.sll_family = PF_PACKET;
sa.sll_protocol = htons(ETH_P_ALL);
sa.sll_ifindex = iface_get_id(pd->fd, pd->md.device, pd->errbuf);
i = sendto(pd->fd, buf, count, 0, &sa, (socklen_t)sizeof(struct
sockaddr_ll));
if (i != count){
perror(pd->errbuf);
return -1;
}
return i;
}
It did worked if i send packet slowly. But if i keep sending it without
putting some sleep code, error occured,
the error message is :
No Buffer space available.
The man page of sendto() tells me that linux will never return ENOBUFS ,
packets are just
silently dropped when a device queue overflows.
Besides, I think the pd-> fd is a blocking socket, it will block if buffer
is full instead of returnning error, right ?
Any idea ?
Thank you
chris
-
This is the TCPDUMP workers list. It is archived at
http://www.tcpdump.org/lists/workers/index.html
To unsubscribe use mailto:[EMAIL PROTECTED]