From 970497e9ce0ce7c1cc79c545f01bda74f6d03785 Mon Sep 17 00:00:00 2001 From: Henning Rogge Date: Sun, 16 Aug 2009 18:26:04 +0200 Subject: [PATCH] Fixes to run olsrd on netbsd --- src/bsd/net.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/bsd/net.c b/src/bsd/net.c index f7b5cecb..5823a36a 100644 --- a/src/bsd/net.c +++ b/src/bsd/net.c @@ -73,6 +73,9 @@ #ifdef __NetBSD__ #include +#include /* For struct in6_ifreq */ +#include +#include #endif #ifdef __OpenBSD__ @@ -127,7 +130,7 @@ static int set_sysctl_int(const char *name, int new) { int old; -#if __MacOSX__ || __OpenBSD__ +#if defined(__MacOSX__) || defined(__OpenBSD__) || defined(__NetBSD__) size_t len = sizeof(old); #else unsigned int len = sizeof(old); @@ -191,7 +194,7 @@ disable_redirects_global(int version) /* do not accept ICMP redirects */ -#ifdef __OpenBSD__ +#if defined(__OpenBSD__) || defined(__NetBSD__) if (version == AF_INET) name = "net.inet.icmp.rediraccept"; else @@ -731,9 +734,11 @@ olsr_recvfrom(int s, void *buf, size_t len, int flags __attribute__ ((unused)), inet_ntop(olsr_cnf->ip_version, olsr_cnf->ip_version == AF_INET6 ? (char *)&sin6->sin6_addr : (char *)&sin->sin_addr, addrstr, sizeof(addrstr)), ifc->int_name, iname); +#ifndef __NetBSD__ if (strcmp(ifc->int_name, iname) != 0) { return (0); } +#endif return (count); } @@ -768,6 +773,18 @@ check_wireless_interface(char *ifname) bzero(&nr, sizeof(nr)); strlcpy(nr.nr_ifname, ifname, sizeof(nr.nr_ifname)); return (ioctl(olsr_cnf->ioctl_s, SIOCG80211FLAGS, &nr) >= 0) ? 1 : 0; +#elif defined __NetBSD__ + struct ifreq ireq; + struct ieee80211_nwid data; + int ret; + + memset(&ireq, 0, sizeof(ireq)); + strlcpy(ireq.ifr_name, ifname, sizeof(ireq.ifr_name)); + ireq.ifr_data = &data; + ret = ioctl(olsr_cnf->ioctl_s, SIOCG80211NWID, &ireq); + if(ret == 0) + return 1; + return 0; #else ifname = NULL; /* squelsh compiler warning */ return 0; -- 2.20.1