Hi, I did a bit of research on the error. I have added the following lines to dbdes.c in ospf_dbdes_receive function -— SNIP -- unsigned int size = ntohs(ps_i->length); /* log sizes */ log(L_ERR "OSPF DBDES packet is (%u B)", n->ip, size); log(L_ERR "OSPF DBDES packet should be (%u B)", sizeof(struct ospf_dbdes_packet)); log(L_ERR "OSPF packet should be (%u B)", sizeof(struct ospf_packet)); log(L_ERR "IMMS should be (%u B)", sizeof(union imms)); log(L_ERR "Size of u8 %u", sizeof(u8)); log(L_ERR "Size of u16 %u", sizeof(u16)); log(L_ERR "Size of u32 %u", sizeof(u32)); log(L_ERR "Size of u64 %u", sizeof(u64)); log(L_ERR "Size of char %u", sizeof(char)); log(L_ERR "Size of short int %u", sizeof(short int)); log(L_ERR "Size of int %u", sizeof(int)); log(L_ERR "Size of long int %u", sizeof(long int)); log(L_ERR "Size of long long int %u", sizeof(long long int)); -— SNIP — This is the result on my 32-bit ARM router: Nov 2 21:38:35 router-2 daemon.err bird6: OSPF DBDES packet is (28 B) Nov 2 21:38:35 router-2 daemon.err bird6: OSPF DBDES packet should be (32 B) Nov 2 21:38:35 router-2 daemon.err bird6: OSPF packet should be (16 B) Nov 2 21:38:35 router-2 daemon.err bird6: IMMS should be (4 B) Nov 2 21:38:35 router-2 daemon.err bird6: Size of u8 1 Nov 2 21:38:35 router-2 daemon.err bird6: Size of u16 2 Nov 2 21:38:35 router-2 daemon.err bird6: Size of u32 4 Nov 2 21:38:35 router-2 daemon.err bird6: Size of u64 8 Nov 2 21:38:35 router-2 daemon.err bird6: Size of char 1 Nov 2 21:38:35 router-2 daemon.err bird6: Size of short int 2 Nov 2 21:38:35 router-2 daemon.err bird6: Size of int 4 Nov 2 21:38:35 router-2 daemon.err bird6: Size of long int 4 Nov 2 21:38:35 router-2 daemon.err bird6: Size of long long int 8 This is the result on 64-bit ubuntu 14.04 machine: 2014-11-02 22:57:14 <ERR> OSPF DBDES packet is (4269801472 B) 2014-11-02 22:57:14 <ERR> OSPF DBDES packet should be (28 B) 2014-11-02 22:57:14 <ERR> OSPF packet should be (16 B) 2014-11-02 22:57:14 <ERR> IMMS should be (1 B) 2014-11-02 22:57:14 <ERR> Size of u8 1 2014-11-02 22:57:14 <ERR> Size of u16 2 2014-11-02 22:57:14 <ERR> Size of u32 4 2014-11-02 22:57:14 <ERR> Size of u64 8 2014-11-02 22:57:14 <ERR> Size of char 1 2014-11-02 22:57:14 <ERR> Size of short int 2 2014-11-02 22:57:14 <ERR> Size of int 4 2014-11-02 22:57:14 <ERR> Size of long int 8 2014-11-02 22:57:14 <ERR> Size of long long int 8 I think that for some reason the ARM gcc () interprets this struct struct immsb { #ifdef CPU_BIG_ENDIAN u8 padding:5; u8 i:1; u8 m:1; u8 ms:1; #else u8 ms:1; u8 m:1; u8 i:1; u8 padding:5; #endif }; as 4 byte struct, instead of 1 byte subdivided into bit-long parts. This is the GCC version: # arm-linux-uclibc-gcc -v Reading specs from /home/rejsmont/src/optware/mbwe-bluering/toolchain/mbwe-bluering-buildroot/build_arm_nofpu/staging_dir/lib/gcc/arm-linux-uclibc/3.4.2/specs Configured with: /home/rejsmont/src/optware/mbwe-bluering/toolchain/mbwe-bluering-buildroot/toolchain_build_arm_nofpu/gcc-3.4.2/configure --prefix=/home/rejsmont/src/optware/mbwe-bluering/toolchain/mbwe-bluering-buildroot/build_arm_nofpu/staging_dir --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=arm-linux-uclibc --enable-languages=c,c++ --enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-nls --enable-threads --enable-multilib --with-float=soft Thread model: posix gcc version 3.4.2 Once again thanks in advance for help! Best, Radek -- Radoslaw Kamil Ejsmont, Ph.D. http://radoslaw.ejsmont.net