[Winpcap-users] pcap_next_ex is notupdatingthepointertopcap_pkthdr structure

Renato Araújo Ferreira marina.peixe at terra.com.br
Thu Nov 8 02:39:38 GMT 2007


OK, GV!! You were right (as usually)....

Now I´m copying all the data:


  objPacket = new Packet();
  objPacket->Timestamp.tv_sec = Header->ts.tv_sec;
  objPacket->Timestamp.tv_usec = Header->ts.tv_usec;
  objPacket->Length = Header->len;
  objPacket->Data = (u_char*) malloc(objPacket->Length);
  memcpy_s((void*)objPacket->Data,objPacket->Length,Data,objPacket->Length);
  objCapturer->add(objPacket);


Is there any problem yet?


Thanks,

Renato...

  ----- Original Message ----- 
  From: Renato Araújo Ferreira 
  To: winpcap-users at winpcap.org 
  Sent: Wednesday, November 07, 2007 11:19 PM
  Subject: Re: [Winpcap-users] pcap_next_ex is notupdatingthepointertopcap_pkthdr structure


  GV,

  I already changed the code.


  Before:

  =================================================================================
   struct Packet
   {
    struct pcap_pkthdr* Header;
    const u_char* Data;
   };

   ...

   while( (Results = pcap_next_ex( PcapHandler, &Header, &Data)) >= 0 )
   {
     ...
   
    objPacket = new Packet();
    objPacket->Header = Header;
    objPacket->Data = Data;
    objCapturer->add(objPacket);
    
    ...
   }
  =================================================================================


  Now:

  =================================================================================
   struct Packet
   {
    struct timeval Timestamp;
    bpf_u_int32 Length;
    const u_char* Data;
   };

    ...

   while( (Results = pcap_next_ex( PcapHandler, &Header, &Data)) >= 0 )
   {
     ...
   
    objPacket = new Packet();
    objPacket->Timestamp.tv_sec = Header->ts.tv_sec;
    objPacket->Timestamp.tv_usec = Header->ts.tv_usec;
    objPacket->Length = Header->len;
    objPacket->Data = Data;
    objCapturer->add(objPacket);
    
    ...
   }
  =================================================================================
   

  Now all appear to be working properly.


  Are you sure about copying the data array too? This array aren´t malloc'ed again in each call of pcap_next_ex()? I think so, because their address are always changing.


  Thanks,

  Renato...

    ----- Original Message ----- 
    From: Gianluca Varenni 
    To: winpcap-users at winpcap.org 
    Sent: Wednesday, November 07, 2007 10:36 PM
    Subject: Re: [Winpcap-users] pcap_next_ex is not updatingthepointertopcap_pkthdr structure


    Yes, you definitely need to copy both the packet and the header returned by pcap_next_ex(). The header and the data pointer returned by pcap_next_ex() are valid up to the next call to pcap_next_ex() or pcap_close(), whatever comes first.

    Have a nice day
    GV

      ----- Original Message ----- 
      From: Renato Araújo Ferreira 
      To: winpcap-users at winpcap.org 
      Sent: Wednesday, November 07, 2007 4:14 PM
      Subject: Re: [Winpcap-users] pcap_next_ex is not updating thepointertopcap_pkthdr structure


      GV,

      It's the problem. I'm using a thread that put each packet in a queue while another thread process their data.

      So I think that I need to copy the content of 'len' and 'ts' members before putting in the queue, instead of using the 'header' structure directly.

      Thanks,

      Renato.

        ----- Original Message ----- 
        From: Gianluca Varenni 
        To: winpcap-users at winpcap.org 
        Sent: Wednesday, November 07, 2007 2:14 PM
        Subject: Re: [Winpcap-users] pcap_next_ex is not updating the pointertopcap_pkthdr structure


        This is normal. pcap_next_ex() reuses an internal field of the pcap_t handle to return Header. And this gets rewritten for every packet.

        Which specific adapter are you capturing from?

        Have a nice day
        GV
          ----- Original Message ----- 
          From: Renato Araújo Ferreira 
          To: winpcap-users at winpcap.org 
          Sent: Tuesday, November 06, 2007 9:01 PM
          Subject: [Winpcap-users] pcap_next_ex is not updating the pointer topcap_pkthdr structure


          Hello,

          Im using 'pcap_next_ex()' to receive the packets in a loop, but i found a problem. A lot of packets appeared to be the same length and timestamp, but Im sure that that value was wrong, confirmed in wireshark (great tool).

          Looking for a solution, I found this strange behavior:

            struct pcap_pkthdr* Header;
            const u_char* Data;
            while( (Results = pcap_next_ex( PcapHandler, &Header, &Data)) >= 0 )
            
          In the code above, I can see in the debug mode that 'Data' pointer address are updated all the time, while 'Header' return a repeated address value many times. 'Header' pointer are updated only some times.

          Could someone help me?
           
          thanks,
           
          Renato....



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


          _______________________________________________
          Winpcap-users mailing list
          Winpcap-users at winpcap.org
          https://www.winpcap.org/mailman/listinfo/winpcap-users



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


        _______________________________________________
        Winpcap-users mailing list
        Winpcap-users at winpcap.org
        https://www.winpcap.org/mailman/listinfo/winpcap-users



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


      _______________________________________________
      Winpcap-users mailing list
      Winpcap-users at winpcap.org
      https://www.winpcap.org/mailman/listinfo/winpcap-users



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


    _______________________________________________
    Winpcap-users mailing list
    Winpcap-users at winpcap.org
    https://www.winpcap.org/mailman/listinfo/winpcap-users



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


  _______________________________________________
  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/20071108/a9408258/attachment.htm


More information about the Winpcap-users mailing list