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))

Reply via email to