summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/netdev-bsd.c2
-rw-r--r--lib/route-table-bsd.c7
-rw-r--r--lib/rtbsd.c4
3 files changed, 13 insertions, 0 deletions
diff --git a/lib/netdev-bsd.c b/lib/netdev-bsd.c
index 273ec8e3f..3b0ad3e53 100644
--- a/lib/netdev-bsd.c
+++ b/lib/netdev-bsd.c
@@ -15,6 +15,7 @@
* limitations under the License.
*/
+#if !defined(__MACH__)
#include <config.h>
#include "netdev-provider.h"
@@ -1826,3 +1827,4 @@ af_link_ioctl(unsigned long command, const void *arg)
: 0);
}
#endif
+#endif /* !defined(__MACH__) */
diff --git a/lib/route-table-bsd.c b/lib/route-table-bsd.c
index b5ff3cc0d..76a8d3d97 100644
--- a/lib/route-table-bsd.c
+++ b/lib/route-table-bsd.c
@@ -38,6 +38,11 @@
VLOG_DEFINE_THIS_MODULE(route_table_bsd);
+/* OS X does not define RT_ROUNDUP() or equivalent macro. */
+#if defined(__MACH__)
+#define RT_ROUNDUP(l) ((l) > 0 ? ROUND_UP((l), sizeof(long)) : sizeof(long))
+#endif
+
bool
route_table_fallback_lookup(ovs_be32 ip, char name[], ovs_be32 *gw)
{
@@ -162,6 +167,8 @@ retry:
sa = (struct sockaddr *)((char *)sa + SA_SIZE(sa));
#elif defined(__NetBSD__)
sa = (struct sockaddr *)((char *)sa + RT_ROUNDUP(sa->sa_len));
+#elif defined(__MACH__)
+ sa = (struct sockaddr *)((char *)sa + RT_ROUNDUP(sa->sa_len));
#else
#error unimplemented
#endif
diff --git a/lib/rtbsd.c b/lib/rtbsd.c
index 33fb9fdac..fe4c55c8f 100644
--- a/lib/rtbsd.c
+++ b/lib/rtbsd.c
@@ -128,7 +128,9 @@ rtbsd_notifier_run(void)
case RTM_IFINFO:
/* Since RTM_IFANNOUNCE messages are smaller than RTM_IFINFO
* messages, the same buffer may be used. */
+#ifndef __MACH__ /* OS X does not implement RTM_IFANNOUNCE */
case RTM_IFANNOUNCE:
+#endif
rtbsd_report_change(&msg);
break;
default:
@@ -180,11 +182,13 @@ rtbsd_report_change(const struct if_msghdr *msg)
change.if_index = msg->ifm_index;
if_indextoname(msg->ifm_index, change.if_name);
break;
+#ifndef __MACH__ /* OS X does not implement RTM_IFANNOUNCE */
case RTM_IFANNOUNCE:
ahdr = (const struct if_announcemsghdr *) msg;
change.if_index = ahdr->ifan_index;
strncpy(change.if_name, ahdr->ifan_name, IF_NAMESIZE);
break;
+#endif
}
LIST_FOR_EACH (notifier, node, &all_notifiers) {