Phil
said that the problem is clear, I am wondering what is the conceptual reason 
why you want to mix environments. Wouldn't you better recompile the system 
using the correct platform version?

Luca

On Feb 7, 2012, at 11:49 AM, Phil Sutter wrote:

> Hello Luca,
> 
> On Fri, Feb 03, 2012 at 12:09:49PM +0100, Luca Deri wrote:
>>> On Wed, Feb 01, 2012 at 10:33:25PM +0100, Luca Deri wrote:
>>>> some time ago we have fixed issues like the one you pointed out. Did you 
>>>> use the SVN PF_RING code? Are you using DNA or standard PF_RING?
>>> 
>>> We originally noticed the problem with 5.2.1, but it happens with trunk,
>>> too. DNA is not in use.
>>> 
>>> In pf_ring.h, there is this comment above struct pfring_pkthdr:
>>> | Keep 'struct pfring_pkthdr' in sync with 'struct pcap_pkthdr'
>>> which is why I mentioned pcap compatibility in my first mail. Could you
>>> elaborate on this? Having to keep kernel structs in sync with ones used
>> 
>> The PF_RING header is a subset of the pcap header. So whathever we do on the 
>> header must be added after the pcap header
> 
> I guess, that should read "superset" since pfring_pkthdr is actually
> larger than pcap_pkthdr. But yes, they're identical in the beginning,
> which is part of the problem here:
> 
>> struct pfring_pkthdr {
>>  /* pcap header */
>>  struct timeval ts;    /* time stamp */
>>  u_int32_t caplen;     /* length of portion present */
>>  u_int32_t len;        /* length this packet (off wire) */
>>  struct pfring_extended_pkthdr extended_hdr; /* PF_RING extended header */
>> };
> 
> It's the struct timeval, which differs in size in between 32 and 64 bit.
> See linux/time.h for reference:
> 
> | struct timeval {
> |         __kernel_time_t         tv_sec;         /* seconds */
> |         __kernel_suseconds_t    tv_usec;        /* microseconds */
> | };
> 
> with __kernel_time_t and __kernel_suseconds_t defined as:
> 
> | typedef long            __kernel_time_t;
> | typedef long            __kernel_suseconds_t;
> 
> identically in both arch/x86/include/asm/posix_types_32.h and
> arch/x86/include/asm/posix_types_64.h
> 
> The type 'long' is 4 bytes on x86 and 8 bytes on x86_64.
> 
>> Basically the red part must be after the blue part.
> 
> No HTML-mailviewer here, sorry. But I get your point. Isn't there any
> way around this pcap-compatibility constraint? Cause that's making
> things really complicated here.
> 
>> Bottom line
>> - I have just committed a change that might cause issues mixing 32-64 
>> environments
> 
> You're talking about r5155, replacing 'int if_index' with 'int32_t
> if_index', right? Well, oddly the type 'int' is the same size both on
> x86 and x86_64 so that should make no difference.
> 
>> - please let me know any issues you might find and how to reproduce it
> 
> Reproducing is easy: just setup PF_RING on x86_64 with 32-bit userland
> and 64-bit kernel, it simply be broken.
> 
> Best wishes, Phil
> 
> 
> 
> Phil Sutter
> Software Engineer
> 
> -- 
> Viprinet GmbH
> Mainzer Str. 43
> 55411 Bingen am Rhein
> Germany
> 
> Phone/Zentrale:         +49-6721-49030-0
> Direct line/Durchwahl:  +49-6721-49030-134
> Fax:                    +49-6721-49030-209
> 
> [email protected]
> http://www.viprinet.com
> 
> Registered office/Sitz der Gesellschaft: Bingen am Rhein
> Commercial register/Handelsregister: Amtsgericht Mainz HRB40380
> CEO/Geschäftsführer: Simon Kissel
> _______________________________________________
> Ntop-dev mailing list
> [email protected]
> http://listgateway.unipi.it/mailman/listinfo/ntop-dev

_______________________________________________
Ntop-dev mailing list
[email protected]
http://listgateway.unipi.it/mailman/listinfo/ntop-dev

Reply via email to