summaryrefslogtreecommitdiff
path: root/zebra/kernel_socket.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2015-03-03 21:04:20 +0100
committerDaniel Walton <dwalton@cumulusnetworks.com>2016-05-26 15:33:29 +0000
commite7f0e649dd534785ba86def26d6c41aa57a6cf13 (patch)
tree1be09975bbc9a85531a79b58bd77cc7bf2de2fad /zebra/kernel_socket.c
parent27b87393125262780206642971f9576ed7931338 (diff)
zebra: use SA_SIZE for RT_ROUNDUP on FreeBSD
FreeBSD provides SA_SIZE (and none of the other options to infer padded size of a struct sockaddr). Just define SAROUNDUP to SA_SIZE if it is available. This also drops a superfluous-looking extra macro branch which would require ROUNDUP. It seemed redundant to my eyes, but I have no idea what odd things might have triggered addition of this in the first place... Signed-off-by: David Lamparter <equinox@opensourcerouting.org> (cherry picked from commit 7e92322cfcc6c062acae3b550f90d36fe40763f1)
Diffstat (limited to 'zebra/kernel_socket.c')
-rw-r--r--zebra/kernel_socket.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 10fb2d2631..b00f9fbdff 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -59,6 +59,12 @@ extern struct zebra_privs_t zserv_privs;
* Because of these varying conventions, the only sane approach is for
* the <net/route.h> header to define some flavor of ROUNDUP macro.
*/
+
+#if defined(SA_SIZE)
+/* SAROUNDUP is the only thing we need, and SA_SIZE provides that */
+#define SAROUNDUP(a) SA_SIZE(a)
+#else /* !SA_SIZE */
+
#if defined(RT_ROUNDUP)
#define ROUNDUP(a) RT_ROUNDUP(a)
#endif /* defined(RT_ROUNDUP) */
@@ -115,6 +121,8 @@ extern struct zebra_privs_t zserv_privs;
ROUNDUP(sizeof(struct sockaddr_dl)) : sizeof(struct sockaddr)))
#endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */
+#endif /* !SA_SIZE */
+
/*
* We use a call to an inline function to copy (PNT) to (DEST)
* 1. Calculating the length of the copy requires an #ifdef to determine
@@ -1115,15 +1123,6 @@ rtm_write (int message,
msg.rtm.rtm_flags |= RTF_REJECT;
-#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN
-#define SOCKADDRSET(X,R) \
- if (msg.rtm.rtm_addrs & (R)) \
- { \
- int len = ROUNDUP ((X)->sa.sa_len); \
- memcpy (pnt, (caddr_t)(X), len); \
- pnt += len; \
- }
-#else
#define SOCKADDRSET(X,R) \
if (msg.rtm.rtm_addrs & (R)) \
{ \
@@ -1131,7 +1130,6 @@ rtm_write (int message,
memcpy (pnt, (caddr_t)(X), len); \
pnt += len; \
}
-#endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */
pnt = (caddr_t) msg.buf;