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: [email protected])
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))