On 12/6/2010 8:56 PM, Guy Harris wrote:
>
> 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.
>
>

Also note that the address is stored in *network* order.

___________________________________________________________________________
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