[Winpcap-users] pcap_loop pointers

ceo at triplebit.com ceo at triplebit.com
Tue Sep 18 17:07:29 GMT 2007


Thanks GV,
Another phenomena bathers me and I'd like to have your advise of possible-
I let my VC++ application to run and it transmits TCP packets.
I sniff with Ethereal while sniffing concurrently with my application and I filter into a dump file only payload data packets. I encounter the following anomalies-
1. My applications misses packets from time to time.
2. The ACK in my application packets are always 0.

Can you explain that and possible suggest some workaround?

Regards

I. Lesher
 
  ----- Original Message ----- 
  From: Gianluca Varenni 
  To: ceo at triplebit.com ; winpcap-users at winpcap.org 
  Sent: Tuesday, September 18, 2007 5:34 PM
  Subject: Re: [Winpcap-users] pcap_loop pointers


  No, you cannot use global pointers. 

  Although those pointers are valid throughout the life of the pcap handle (valid in the sense that they point to a valid memory location), as soon as your pcap_loop callback function returns, the contents of such memory are overwritten. 

  The *ONLY* way to preserve a packet passed to the pcap_loop callback is to copy the packet into some memory buffer allocated by your application.

  Have a nice day
  GV

    ----- Original Message ----- 
    From: ceo at triplebit.com 
    To: Gianluca Varenni ; winpcap-users at winpcap.org 
    Sent: Tuesday, September 11, 2007 9:07 AM
    Subject: Re: [Winpcap-users] pcap_loop pointers


    Thanks GV,
    I experimented a little and saw that if I assign global pointers with the outcome pointers values from the function, they sustain to point to the original pointers data even if I leave the function.
    Does that make sense with your reply?
    Can I use these global pointers values after returning from the function? 
    Regards

    I. Lesher
      ----- Original Message ----- 
      From: Gianluca Varenni 
      To: ceo at triplebit.com ; winpcap-users at winpcap.org 
      Sent: Tuesday, September 11, 2007 8:34 AM
      Subject: Re: [Winpcap-users] pcap_loop pointers



        ----- Original Message ----- 
        From: ceo at triplebit.com 
        To: winpcap-users at winpcap.org 
        Sent: Monday, September 10, 2007 6:13 AM
        Subject: [Winpcap-users] pcap_loop pointers


        I think that my question represents also other users.
        When using the function "pcap_loop"  the system uses the fallowing callback
        whenever a packet arrives -

              typedef void(* pcap_handler)(u_char *user, const struct pcap_pkthdr
        *pkt_header, const u_char *pkt_data)


        My questions-

        1. I saw that the pointers pkt_data and pkt_header differ from packet to
        packet.
        Does that mean that the data on which they point occupies different area in
        memory?

      Yes.

        2. How do I know if the data pointed by them is still valid in a certain
        moment?

      Those pointers are valid *only* in the context of the pcap_handler callback. Packets are reused as soon as the pcap_handler callback returns.

      Have a nice day
      GV


        Regards

        I. Lesher




------------------------------------------------------------------------


        _______________________________________________
        Winpcap-users mailing list
        Winpcap-users at winpcap.org
        https://www.winpcap.org/mailman/listinfo/winpcap-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.winpcap.org/pipermail/winpcap-users/attachments/20070918/7d29d22e/attachment.htm


More information about the Winpcap-users mailing list