<DIV>Hello everybody,</DIV>  <DIV>&nbsp;&nbsp; I am having problems with the compilation of the example code found in:</DIV>  <DIV><A href="http://www.winpcap.org/docs/man/html/group__wpcap__tut8.html" target=_blank><FONT color=#003399>http://www.winpcap.org/docs/man/html/group__wpcap__tut8.html</FONT></A></DIV>  <DIV>Precisely, the first example&nbsp; (sendpacket()) is fine; the problem is with send queues' code example. I tried both VS 6.0 and .NET2003. These are the errors I am getting:</DIV>  <DIV>&nbsp;</DIV>  <DIV>VS6.0:</DIV>  <DIV>error C2664: 'pcap_next_ex' : cannot convert parameter 3 from 'unsigned char ** ' to 'const unsigned char ** '<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Conversion loses qualifiers</DIV>  <DIV>&nbsp;</DIV>  <DIV>.NET2003:</DIV>  <DIV>error C2664: 'pcap_next_ex' : cannot convert parameter 3 from 'u_char **__w64&nbsp; ' to 'const u_char ** '</DIV>  <DIV>&nbsp;</DIV>  <DIV>The code is exactly the one in the tutorial because I usually
 start by getting the example code to work and then modify what needs to be modified.</DIV>  <DIV>&nbsp;</DIV>  <DIV>I am really working in .NET2003, but I also tried VS6.0 just to make sure it was not a small mistake I might have&nbsp;overlooked. Any help with be greatly appreciated,</DIV>  <DIV>Marta</DIV>  <DIV>&nbsp;</DIV>  <DIV>P.S: Just in case, here it is my code</DIV>  <DIV>&nbsp;</DIV>  <DIV><FONT color=#0000ff size=2>  <DIV>#include</FONT><FONT size=2> "stdafx.h"</DIV></FONT><FONT color=#0000ff size=2>  <DIV>#include</FONT><FONT size=2> &lt;stdlib.h&gt;</DIV></FONT><FONT color=#0000ff size=2>  <DIV>#include</FONT><FONT size=2> &lt;stdio.h&gt;</DIV></FONT><FONT color=#0000ff size=2>  <DIV>#include</FONT><FONT size=2> &lt;pcap.h&gt;</DIV></FONT><FONT color=#0000ff size=2>  <DIV>#include</FONT><FONT size=2> &lt;Win32-Extensions.h&gt;</DIV></FONT><FONT color=#0000ff size=2>  <DIV>#include</FONT><FONT size=2> &lt;remote-ext.h&gt;</DIV></FONT><FONT color=#0000ff size=2>
  <DIV>void</FONT><FONT size=2> usage();</DIV></FONT><FONT color=#0000ff size=2>  <DIV>int</FONT><FONT size=2> _tmain(</FONT><FONT color=#0000ff size=2>int</FONT><FONT size=2> argc, _TCHAR* argv[])</DIV>  <DIV>{</DIV>  <DIV>pcap_t *indesc,*outdesc;</DIV>  <DIV></FONT><FONT color=#0000ff size=2>char</FONT><FONT size=2> error[PCAP_ERRBUF_SIZE];</DIV>  <DIV>FILE *capfile;</DIV>  <DIV></FONT><FONT color=#0000ff size=2>int</FONT><FONT size=2> caplen,</DIV>  <DIV>sync;</DIV>  <DIV>u_int res;</DIV>  <DIV>pcap_send_queue *squeue;</DIV>  <DIV></FONT><FONT color=#0000ff size=2>struct</FONT><FONT size=2> pcap_pkthdr *pktheader;</DIV>  <DIV>u_char *pktdata;</DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Check the validity of the command line */</DIV></FONT><FONT size=2>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2> (argc &lt;= 2 || argc &gt;= 5)</DIV>  <DIV>{</DIV>  <DIV>usage();</DIV>  <DIV></FONT><FONT color=#0000ff size=2>return</FONT><FONT size=2> 0;</DIV> 
 <DIV>}</DIV>  <DIV></DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Retrieve the length of the capture file */</DIV></FONT><FONT size=2>  <DIV>capfile=fopen(argv[1],"rb");</DIV>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>(!capfile){</DIV>  <DIV>printf("Capture file not found!\n");</DIV>  <DIV></FONT><FONT color=#0000ff size=2>return</FONT><FONT size=2> 0;</DIV>  <DIV>}</DIV>  <DIV></DIV>  <DIV>fseek(capfile , 0, SEEK_END);</DIV>  <DIV>caplen= ftell(capfile)- </FONT><FONT color=#0000ff size=2>sizeof</FONT><FONT size=2>(</FONT><FONT color=#0000ff size=2>struct</FONT><FONT size=2> pcap_file_header);</DIV>  <DIV>fclose(capfile);</DIV>  <DIV></DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Chek if the timestamps must be respected */</DIV></FONT><FONT size=2>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>(argc == 4 &amp;&amp; argv[3][0] == 's')</DIV>  <DIV>sync = TRUE;</DIV>  <DIV></FONT><FONT color=#0000ff size=2>else</DIV></FONT><FONT
 size=2>  <DIV>sync = FALSE;</DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Open the capture */</DIV></FONT><FONT size=2>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>((indesc = pcap_open_offline(argv[1], error)) == NULL){</DIV>  <DIV>fprintf(stderr,"\nError opening the input file: %s\n", error);</DIV>  <DIV></FONT><FONT color=#0000ff size=2>return</FONT><FONT size=2> 0; </DIV>  <DIV>}</DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Open the output adapter */</DIV></FONT><FONT size=2>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>((outdesc = pcap_open_live(argv[2], 100, 1, 1000, error) ) == NULL)</DIV>  <DIV>{</DIV>  <DIV>fprintf(stderr,"\nError opening adapter: %s\n", error);</DIV>  <DIV></FONT><FONT color=#0000ff size=2>return</FONT><FONT size=2> 0;</DIV>  <DIV>}</DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Check the MAC type */</DIV></FONT><FONT size=2>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT
 size=2>(pcap_datalink(indesc) != pcap_datalink(outdesc)){</DIV>  <DIV>printf("Warning: the datalink of the capture differs from the one of the selected interface.\n");</DIV>  <DIV>printf("Press a key to continue, or CTRL+C to stop.\n");</DIV>  <DIV>getchar();</DIV>  <DIV>}</DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Allocate a send queue */</DIV></FONT><FONT size=2>  <DIV>squeue = pcap_sendqueue_alloc(caplen);</DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Fill the queue with the packets from the file */</DIV></FONT><FONT size=2>  <DIV></FONT><FONT color=#0000ff size=2>while</FONT><FONT size=2>((res = pcap_next_ex( indesc, &amp;pktheader, &amp;pktdata)) == 1){</DIV>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>(pcap_sendqueue_queue(squeue, pktheader, pktdata) == -1){</DIV>  <DIV>printf("Warning: packet buffer too small, not all the packets will be sent.\n");</DIV>  <DIV></FONT><FONT color=#0000ff size=2>break</FONT><FONT size=2>;</DIV>  <DIV>}</DIV>
  <DIV>}</DIV>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>(res == -1){</DIV>  <DIV>printf("Corrupted input file.\n");</DIV>  <DIV>pcap_sendqueue_destroy(squeue);</DIV>  <DIV></FONT><FONT color=#0000ff size=2>return</FONT><FONT size=2> 0;</DIV>  <DIV>}</DIV>  <DIV></FONT><FONT color=#008000 size=2>/* Transmit the queue */</DIV></FONT><FONT size=2>  <DIV></DIV>  <DIV></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2>((res = pcap_sendqueue_transmit(outdesc, squeue, sync)) &lt; squeue-&gt;len)</DIV>  <DIV>{</DIV>  <DIV>printf("An error occurred sending the packets: %s. Only %d bytes were sent\n", error, res);</DIV>  <DIV>}</DIV>  <DIV></DIV>  <DIV></FONT><FONT color=#008000 size=2>/* free the send queue */</DIV></FONT><FONT size=2>  <DIV>pcap_sendqueue_destroy(squeue);</DIV>  <DIV></FONT><FONT color=#0000ff size=2>return</FONT><FONT size=2> 0;</DIV>  <DIV>}</DIV></FONT><FONT color=#0000ff size=2>  <DIV>void</FONT><FONT size=2> usage()</DIV> 
 <DIV>{</DIV>  <DIV></DIV>  <DIV>printf("\nSendcap, sends a libpcap/tcpdump capture file to the net. Copyright (C) 2002 Loris Degioanni.\n");</DIV>  <DIV>printf("\nUsage:\n");</DIV>  <DIV>printf("\t sendcap file_name adapter [s]\n");</DIV>  <DIV>printf("\nParameters:\n");</DIV>  <DIV>printf("\nfile_name: the name of the dump file that will be sent to the network\n");</DIV>  <DIV>printf("\nadapter: the device to use. Use \"WinDump -D\" for a list of valid devices\n");</DIV>  <DIV>printf("\ns: if present, forces the packets to be sent synchronously, i.e. respecting the timestamps in the dump file. This option will work only under Windows NTx.\n\n");</DIV>  <DIV>exit(0);</DIV>  <DIV>}</DIV></FONT></DIV>  <DIV>&nbsp;</DIV><p>__________________________________________________<br>Do You Yahoo!?<br>Tired of spam?  Yahoo! Mail has the best spam protection around <br>http://mail.yahoo.com