Answering myself: On Sun, Feb 26, 2012 at 14:54, ik <ido...@gmail.com> wrote: > Hello, > > I translated the following struct > > struct iphdr { > #if defined(__LITTLE_ENDIAN_BITFIELD) > __u8 ihl:4, > version:4; > #elif defined (__BIG_ENDIAN_BITFIELD) > __u8 version:4, > ihl:4; > #else > #error "Please fix <asm/byteorder.h>" > #endif > __u8 tos; > __be16 tot_len; > __be16 id; > __be16 frag_off; > __u8 ttl; > __u8 protocol; > __sum16 check; > __be32 saddr; > __be32 daddr; > /*The options start here. */ > }; > > to the following Pascal record: > > > iphdr = record > {$IFDEF ENDIAN_LITTLE} > jhl : Cardinal; // __u8 ihl:4, cuchar; // instead of Cardinal
> version : Cardinal; // version:4 > {$ELSE} > version : Cardinal; // __u8 version:4, > jhl : Cardinal; // version:4 > {$ENDIF} > tos : cuint8; > tot_len : cint16; > id : cint16; > frag_off : cint16; > ttl : cint8; > protocol : cint8; > check : cuint16; > saddr : cint32; > daddr : cint32; > end; > > The problem is, that I get weird data in the fields, so I think I did > not translate it properly, but can't figure out what have I missed. > > Thanks, > Ido
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal