diff options
Diffstat (limited to '3rdparty/winpcap/Examples-pcap/sendpack/sendpack.c')
-rw-r--r-- | 3rdparty/winpcap/Examples-pcap/sendpack/sendpack.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/3rdparty/winpcap/Examples-pcap/sendpack/sendpack.c b/3rdparty/winpcap/Examples-pcap/sendpack/sendpack.c new file mode 100644 index 00000000000..7c68c9105e7 --- /dev/null +++ b/3rdparty/winpcap/Examples-pcap/sendpack/sendpack.c @@ -0,0 +1,68 @@ +#include <stdlib.h> +#include <stdio.h> + +#include <pcap.h> + + +int main(int argc, char **argv) +{ + pcap_t *fp; + char errbuf[PCAP_ERRBUF_SIZE]; + u_char packet[100]; + int i; + + /* Check the validity of the command line */ + if (argc != 2) + { + printf("usage: %s interface", argv[0]); + return 1; + } + + /* Open the adapter */ + if ((fp = pcap_open_live(argv[1], // name of the device + 65536, // portion of the packet to capture. It doesn't matter in this case + 1, // promiscuous mode (nonzero means promiscuous) + 1000, // read timeout + errbuf // error buffer + )) == NULL) + { + fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", argv[1]); + return 2; + } + + /* Supposing to be on ethernet, set mac destination to 1:1:1:1:1:1 */ + packet[0]=1; + packet[1]=1; + packet[2]=1; + packet[3]=1; + packet[4]=1; + packet[5]=1; + + /* set mac source to 2:2:2:2:2:2 */ + packet[6]=2; + packet[7]=2; + packet[8]=2; + packet[9]=2; + packet[10]=2; + packet[11]=2; + + /* Fill the rest of the packet */ + for(i=12;i<100;i++) + { + packet[i]= (u_char)i; + } + + /* Send down the packet */ + if (pcap_sendpacket(fp, // Adapter + packet, // buffer with the packet + 100 // size + ) != 0) + { + fprintf(stderr,"\nError sending the packet: %s\n", pcap_geterr(fp)); + return 3; + } + + pcap_close(fp); + return 0; +} + |