From: Ondrej Zajicek Date: Sun, 11 Dec 2022 15:28:28 +0000 (+0100) Subject: BSD: Workaround for direct routes on FreeBSD 13.0 X-Git-Tag: v2.0.11~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34ebc4e1ba41c618e5d46112696011ed596c5ebc;p=thirdparty%2Fbird.git BSD: Workaround for direct routes on FreeBSD 13.0 FreeBSD 13.0 added some safechecks for syscalls, rejecting sockaddrs that are too small, later versions loosen up the check. --- diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c index 256c4ed08..47f5cf595 100644 --- a/sysdep/bsd/krt-sock.c +++ b/sysdep/bsd/krt-sock.c @@ -190,6 +190,10 @@ static inline void sockaddr_fill_dl(struct sockaddr_dl *sa, struct iface *ifa) { uint len = OFFSETOF(struct sockaddr_dl, sdl_data); + + /* Workaround for FreeBSD 13.0 */ + len = MAX(len, sizeof(struct sockaddr)); + memset(sa, 0, len); sa->sdl_len = len; sa->sdl_family = AF_LINK;