On Fri, Sep 01, 2017 at 12:06:11PM +0400, Eugene Sevastyanov wrote: > Hi! > > I tried to run a bird (v1.6.3) under FreeBSD on ARM architecture. An error > occurred: > > <ERR> KRT: Error sending route XX.XX.XX.XX/XX to kernel: Invalid argument > > ... > > Studying the source code, found out that the problem with aligning the > structure (file: /sysdep/bsd/krt-sock.c): > > struct ks_msg > { > struct rt_msghdr rtm; > struct sockaddr_storage buf[RTAX_MAX]; > }; > > After making changes (see patch in attached), I managed to run the bird.
Hi Thanks for the bugreport and patch. Could you try the attached patch to see if it also fixes the problem? -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c index 9c9df51d..f0cebd11 100644 --- a/sysdep/bsd/krt-sock.c +++ b/sysdep/bsd/krt-sock.c @@ -168,7 +168,7 @@ struct ks_msg { struct rt_msghdr rtm; struct sockaddr_storage buf[RTAX_MAX]; -}; +} PACKED; #define ROUNDUP(a) \ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))