On Dec 6, 2010, at 5:47 PM, 刘昆 wrote:

> I want to find out the ip source address in packet-http.c.At first,I
> thought dissect_http:pinfo->src->data should save the ip source
> address,however when I use gdb to print pinfo->src->data ,the value is
> "0x8b5301a" .But my ipv4 address is "10.32.59.49 ",it seems the two
> values don't match.So what's wrong with it

What's wrong with what you're doing is that you're assuming that 
pinfo->src->data is an IP address rather than a pointer; a look at the C source 
code to Wireshark will shows that it's a pointer:

        typedef struct _address {
          address_type  type;           /* type of address */
          int           len;            /* length of address, in bytes */
          const void    *data;          /* pointer to address data */
        } address;

The data that it points to depends on the value of the "type" field in the 
structure.  *IF* pinfo->src->type is AT_IPv4, then - and *ONLY* then - does 
pinfo->src->data point to a 4-byte IPv4 address.  If you're in the HTTP 
dissector, there is *NO* guarantee that pinfo->src->type will be AT_IPv4; it 
might, for example, be AT_IPv6, in which case pinfo->src->data points to a 
16-byte IPv6 address.

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <[email protected]>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:[email protected]?subject=unsubscribe

Reply via email to