On Fri, May 12, 2017 at 05:27:06PM +0100, Stuart Henderson wrote:
> rest looks good, though untested.
Thanks, this version should address all your points.
Their olsr_random() interface is a bit weird. It returns long int (varies
in size) so I had to use arc4random_buf() to implement it. This patch is
probably not acceptable for upstream as is, but easy for the ports tree.
I will deal with upstreaming changes separately.
Index: Makefile
===================================================================
RCS file: /cvs/ports/net/olsrd/Makefile,v
retrieving revision 1.27
diff -u -p -r1.27 Makefile
--- Makefile 2 Mar 2017 19:05:08 -0000 1.27
+++ Makefile 12 May 2017 15:43:05 -0000
@@ -2,31 +2,29 @@
COMMENT-main= OLSR routing daemon
COMMENT-gui= OLSR routing daemon GUI
-COMMENT-plugins= OLSR routing daemon plugins
-VERSION= 0.6.0
+VERSION= 0.9.0.3
DISTNAME= olsrd-${VERSION}
PKGNAME-main= olsrd-${VERSION}
PKGNAME-gui= olsrd-gui-${VERSION}
PKGNAME-plugins= olsrd-plugins-${VERSION}
-REVISION= 8
CATEGORIES= net
HOMEPAGE= http://www.olsr.org/
-MASTER_SITES= ${HOMEPAGE}releases/0.6/
+MASTER_SITES= ${HOMEPAGE}releases/0.9/
MAINTAINER= Martin Reindl <[email protected]>
# BSD
PERMIT_PACKAGE_CDROM= Yes
-MULTI_PACKAGES= -main -gui -plugins
+MULTI_PACKAGES= -main -gui
BUILD_DEPENDS= devel/bison
-LIB_DEPENDS-main= # empty
-WANTLIB-main= c
+LIB_DEPENDS-main= net/libnet/1.1
+WANTLIB-main= c lib/libnet-1.1/net=11
LIB_DEPENDS-gui= x11/gtk+2
WANTLIB-gui= ${MODGETTEXT_WANTLIB}
@@ -36,9 +34,6 @@ WANTLIB-gui += gdk-x11-2.0 gdk_pixbuf-2.
WANTLIB-gui += gtk-x11-2.0 m pango-1.0 pangocairo-1.0 pangoft2-1.0
WANTLIB-gui += z
-WANTLIB-plugins= # empty
-LIB_DEPENDS-plugins= # empty
-RUN_DEPENDS-plugins= olsrd-${VERSION}:net/olsrd
USE_GMAKE= Yes
NO_TEST= Yes
@@ -46,7 +41,8 @@ NO_TEST= Yes
MODULES= devel/gettext
ALL_TARGET= build_all
-MAKE_FLAGS= DEBUG=0 CC="${CC}"
+MAKE_FLAGS= DEBUG=0 CC="${CC}" OS=obsd LIBNET=1
+CPPFLAGS+= "-I${PREFIX}/libnet-1.1"
FAKE_FLAGS= SBINDIR=${DESTDIR}/${PREFIX}/sbin \
ETCDIR=${DESTDIR}/${PREFIX}/share/examples/olsrd \
LIBDIR=${DESTDIR}/${PREFIX}/lib/olsrd-plugins \
@@ -68,11 +64,8 @@ post-install:
${INSTALL_PROGRAM} ${WRKSRC}/gui/linux-gtk/olsrd-gui ${PREFIX}/sbin
${INSTALL_SCRIPT} ${WRKSRC}/lib/dot_draw/olsr-topology-view.pl \
${PREFIX}/bin
- cd ${PREFIX}/man; gzip -d man5/olsrd.conf.5.gz man8/olsrd.8.gz
+ cd ${PREFIX}/man; gzip -f -d man5/olsrd.conf.5.gz man8/olsrd.8.gz
${INSTALL_DATA} ${WRKSRC}/files/olsrd.conf.default.* \
${PREFIX}/share/examples/olsrd
- ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/olsrd
- cd ${WRKSRC}; ${INSTALL_DATA} CHANGELOG README README-Link-Quality* \
- ${PREFIX}/share/doc/olsrd
.include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/net/olsrd/distinfo,v
retrieving revision 1.8
diff -u -p -r1.8 distinfo
--- distinfo 31 Oct 2013 21:12:13 -0000 1.8
+++ distinfo 3 Apr 2016 10:48:32 -0000
@@ -1,2 +1,2 @@
-SHA256 (olsrd-0.6.0.tar.gz) = qKJNqwCVxz1SSD7bX+aLtbS7dj+bKnp7idz10nXTtEI=
-SIZE (olsrd-0.6.0.tar.gz) = 742138
+SHA256 (olsrd-0.9.0.3.tar.gz) = WdN1cMWOwlY2px1afPRGBEi+aT8B12iuNpp/ZuWAd/s=
+SIZE (olsrd-0.9.0.3.tar.gz) = 5791920
Index: patches/patch-make_Makefile_obsd
===================================================================
RCS file: /cvs/ports/net/olsrd/patches/patch-make_Makefile_obsd,v
retrieving revision 1.2
diff -u -p -r1.2 patch-make_Makefile_obsd
--- patches/patch-make_Makefile_obsd 6 Jul 2010 07:41:46 -0000 1.2
+++ patches/patch-make_Makefile_obsd 12 May 2017 16:44:41 -0000
@@ -1,15 +1,37 @@
$OpenBSD: patch-make_Makefile_obsd,v 1.2 2010/07/06 07:41:46 sthen Exp $
---- make/Makefile.obsd.orig Wed Mar 31 19:03:53 2010
-+++ make/Makefile.obsd Sun Jun 13 13:42:51 2010
-@@ -11,9 +11,8 @@ HDRS += $(wildcard src/bsd/*.h src/unix/*.h)
- CPPFLAGS += -D__OpenBSD__
- LIBS +=
+Index: make/Makefile.obsd
+--- make/Makefile.obsd.orig
++++ make/Makefile.obsd
+@@ -8,22 +8,24 @@ ETCDIR = /etc/olsrd
+ LIBDIR = $(PREFIX)/lib
+ DOCDIR = $(PREFIX)/share/doc
+ MANDIR = $(PREFIX)/man
+-RCDIR = /etc/rc.d
++RCDIR = ${DESTDIR}/etc/rc.d
+ RCFILE = openbsd/olsrd.rcd
+
+ SRCS += $(wildcard src/bsd/*.c src/unix/*.c)
+ HDRS += $(wildcard src/bsd/*.h src/unix/*.h)
+
+-CPPFLAGS += -D__OpenBSD__
+-LIBS +=
++CPPFLAGS += -DOLSRD_GLOBAL_CONF_FILE=\"$(CFGFILE)\" -D__OpenBSD__
+
++ifdef LIBNET
++CPPFLAGS += -DSPOOF -I$(LOCALBASE)/include/libnet-1.1
++LIBS += -L$(LOCALBASE)/lib/libnet-1.1 -lnet
++endif
++
+ PLUGIN_SONAME ?= $(PLUGIN_NAME)
-PLUGIN_FULLNAME ?= $(PLUGIN_NAME).so.$(PLUGIN_VER)
-INSTALL_LIB = install -m 755 $(PLUGIN_FULLNAME) $(LIBDIR)/$(PLUGIN_FULLNAME);
\
- /sbin/ldconfig
+-UNINSTALL_LIB = rm -f $(LIBDIR)/$(PLUGIN_FULLNAME); \
+- /sbin/ldconfig
+PLUGIN_FULLNAME ?= $(PLUGIN_NAME).so
-+INSTALL_LIB = install -m 755 $(PLUGIN_FULLNAME) $(LIBDIR)/$(PLUGIN_FULLNAME);
++INSTALL_LIB = install -m 755 $(PLUGIN_FULLNAME) $(LIBDIR)/$(PLUGIN_FULLNAME);
++UNINSTALL_LIB = rm -f $(LIBDIR)/$(PLUGIN_FULLNAME)
ifdef OLSRD_PLUGIN
CFLAGS += -fPIC
Index: patches/patch-src_bsd_net_c
===================================================================
RCS file: patches/patch-src_bsd_net_c
diff -N patches/patch-src_bsd_net_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_bsd_net_c 12 May 2017 16:51:34 -0000
@@ -0,0 +1,13 @@
+$OpenBSD$
+
+Index: src/bsd/net.c
+--- src/bsd/net.c.orig
++++ src/bsd/net.c
+@@ -51,6 +51,7 @@
+ #include "../ipcalc.h"
+ #include "../parser.h" /* dnc: needed for call to packet_parser() */
+ #include "../olsr_protocol.h"
++#include "../olsr_random.h"
+ #include "../olsr_cfg.h"
+ #include "../olsr.h"
+
Index: patches/patch-src_cfgparser_local_mk
===================================================================
RCS file: /cvs/ports/net/olsrd/patches/patch-src_cfgparser_local_mk,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_cfgparser_local_mk
--- patches/patch-src_cfgparser_local_mk 6 Jul 2010 07:41:46 -0000
1.1
+++ patches/patch-src_cfgparser_local_mk 3 Apr 2016 10:50:31 -0000
@@ -1,7 +1,7 @@
$OpenBSD: patch-src_cfgparser_local_mk,v 1.1 2010/07/06 07:41:46 sthen Exp $
---- src/cfgparser/local.mk.orig Wed Mar 31 18:03:53 2010
-+++ src/cfgparser/local.mk Tue Jun 29 15:25:30 2010
-@@ -73,5 +73,7 @@ $(C)oparse.c: $(C)oparse.y $(C)olsrd_conf.h $(C)Makefi
+--- src/cfgparser/local.mk.orig Sun Sep 20 14:22:23 2015
++++ src/cfgparser/local.mk Sun Apr 3 12:48:37 2016
+@@ -79,5 +79,7 @@ endif
$(C)oparse.o: CFLAGS := $(filter-out -Wunreachable-code,$(CFLAGS))
Index: patches/patch-src_olsr_random_h
===================================================================
RCS file: patches/patch-src_olsr_random_h
diff -N patches/patch-src_olsr_random_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_olsr_random_h 12 May 2017 16:41:46 -0000
@@ -0,0 +1,32 @@
+$OpenBSD$
+
+Index: src/olsr_random.h
+--- src/olsr_random.h.orig
++++ src/olsr_random.h
+@@ -9,7 +9,14 @@
+
+ #define OLSR_RANDOM_MAX INT32_MAX
+
++#if defined(__OpenBSD__)
+ static inline long int olsr_random(void) {
++ long int r;
++ arc4random_buf(&r, sizeof(r));
++ return r;
++}
++#else
++static inline long int olsr_random(void) {
+ int32_t value;
+ int randomFile;
+
+@@ -32,9 +39,10 @@ static inline long int olsr_random(void) {
+
+ return abs(value);
+ }
++#endif
+
+ static inline void olsr_init_random(void) {
+- srandom(time(NULL));
++ srandom(arc4random());
+ }
+
+ #endif /* _OLSR_RANDOM_H */
Index: patches/patch-src_plugin_loader_c
===================================================================
RCS file: /cvs/ports/net/olsrd/patches/patch-src_plugin_loader_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-src_plugin_loader_c
--- patches/patch-src_plugin_loader_c 14 Jun 2010 12:36:34 -0000 1.1
+++ patches/patch-src_plugin_loader_c 12 May 2017 16:45:39 -0000
@@ -1,26 +1,27 @@
$OpenBSD: patch-src_plugin_loader_c,v 1.1 2010/06/14 12:36:34 sebastia Exp $
the plugins get installed to $LOCALBASE/lib/olsrd-plugins, so load them from
there.
---- src/plugin_loader.c.orig Tue Jun 1 09:42:27 2010
-+++ src/plugin_loader.c Tue Jun 1 09:43:13 2010
-@@ -87,20 +87,14 @@ olsr_load_plugins(void)
+--- src/plugin_loader.c.orig Sun Sep 20 14:22:23 2015
++++ src/plugin_loader.c Sun Apr 3 14:06:06 2016
+@@ -88,20 +88,14 @@ olsr_load_plugins(void)
static int
olsr_load_dl(char *libname, struct plugin_param *params)
{
--#if TESTLIB_PATH
+-#if defined TESTLIB_PATH && TESTLIB_PATH
- char path[256] = "/usr/testlib/";
--#endif
+-#endif /* defined TESTLIB_PATH && TESTLIB_PATH */
+ char path[256] = "${LOCALBASE}/lib/olsrd-plugins/";
struct olsr_plugin *plugin = olsr_malloc(sizeof(struct olsr_plugin),
"Plugin entry");
int rv;
OLSR_PRINTF(0, "---------- LOADING LIBRARY %s ----------\n", libname);
--#if TESTLIB_PATH
- strcat(path, libname);
+-#if defined TESTLIB_PATH && TESTLIB_PATH
+- strcat(path, libname);
++ strlcat(path, libname, sizeof(path));
plugin->dlhandle = dlopen(path, RTLD_NOW);
--#else
+-#else /* defined TESTLIB_PATH && TESTLIB_PATH */
- plugin->dlhandle = dlopen(libname, RTLD_NOW);
--#endif
+-#endif /* defined TESTLIB_PATH && TESTLIB_PATH */
if (plugin->dlhandle == NULL) {
const int save_errno = errno;
OLSR_PRINTF(0, "DL loading failed: \"%s\"!\n", dlerror());
Index: patches/patch-src_unix_ifnet_c
===================================================================
RCS file: patches/patch-src_unix_ifnet_c
diff -N patches/patch-src_unix_ifnet_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_unix_ifnet_c 12 May 2017 14:47:12 -0000
@@ -0,0 +1,17 @@
+$OpenBSD$
+
+Index: src/unix/ifnet.c
+--- src/unix/ifnet.c.orig
++++ src/unix/ifnet.c
+@@ -646,7 +646,10 @@ chk_if_up(struct olsr_if *iface, int debuglvl __attrib
+ /* Find broadcast address */
+ if (iface->cnf->ipv4_multicast.v4.s_addr) {
+ /* Specified broadcast */
+- memcpy(&((struct sockaddr_in *)&ifs.int_broadaddr)->sin_addr.s_addr,
&iface->cnf->ipv4_multicast.v4, sizeof(uint32_t));
++ struct sockaddr_in *sin = &ifs.int_broadaddr;
++ memcpy(&sin->sin_addr.s_addr, &iface->cnf->ipv4_multicast.v4,
sizeof(uint32_t));
++ sin->sin_len = sizeof(*sin);
++ sin->sin_family = AF_INET;
+ } else {
+ /* Autodetect */
+ if (ioctl(olsr_cnf->ioctl_s, SIOCGIFBRDADDR, &ifr) < 0) {
Index: pkg/DESCR-plugins
===================================================================
RCS file: pkg/DESCR-plugins
diff -N pkg/DESCR-plugins
--- pkg/DESCR-plugins 14 Jun 2010 12:36:34 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-Plugins for the olsrd routing daemon:
-txtinfo: provides text status informations about the olsrd
-dyn_gw and dyn_gw_plain: automatically detects whether a uplink
- is available and announces it in the net
-httpinfo: provides status information about the running olsrd
- in html format
-mini: minimal example plugin
-nameservice: this plugin distributes DNS via the network
-pgraph: allows any host to connect to the network
-secure: allows to use a shared secret in the network
-watchdog: a watchdog for the olsrd via extenal tools
Index: pkg/MESSAGE-main
===================================================================
RCS file: pkg/MESSAGE-main
diff -N pkg/MESSAGE-main
--- pkg/MESSAGE-main 14 Jun 2010 12:36:34 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,6 +0,0 @@
-In order to start olsrd at boot time, edit ${SYSCONFDIR}/olsrd.conf and
-add the following lines to /etc/rc.local:
-
-if [ -x ${PREFIX}/sbin/olsrd ]; then
- echo -n ' olsrd'; ${PREFIX}/sbin/olsrd
-fi
Index: pkg/PLIST-main
===================================================================
RCS file: /cvs/ports/net/olsrd/pkg/PLIST-main,v
retrieving revision 1.2
diff -u -p -r1.2 PLIST-main
--- pkg/PLIST-main 6 Jul 2010 07:41:46 -0000 1.2
+++ pkg/PLIST-main 12 May 2017 16:49:05 -0000
@@ -1,17 +1,27 @@
-@comment $OpenBSD: PLIST-main,v 1.2 2010/07/06 07:41:46 sthen Exp $
+@comment $OpenBSD$
@pkgpath net/olsrd
+@pkgpath net/olsrd,-plugins
+@conflict olsrd-plugins-*
+bin/olsr-topology-view.pl
+lib/olsrd-plugins/
+lib/olsrd-plugins/olsrd_dot_draw.so
+lib/olsrd-plugins/olsrd_httpinfo.so
+lib/olsrd-plugins/olsrd_jsoninfo.so
+lib/olsrd-plugins/olsrd_mini.so
+lib/olsrd-plugins/olsrd_nameservice.so
+lib/olsrd-plugins/olsrd_pgraph.so
+lib/olsrd-plugins/olsrd_secure.so
+lib/olsrd-plugins/olsrd_txtinfo.so
+lib/olsrd-plugins/olsrd_watchdog.so
@man man/man5/olsrd.conf.5
@man man/man8/olsrd.8
@bin sbin/olsrd
-share/doc/olsrd/
-share/doc/olsrd/CHANGELOG
-share/doc/olsrd/README
-share/doc/olsrd/README-Link-Quality-Fish-Eye.txt
-share/doc/olsrd/README-Link-Quality.html
share/examples/olsrd/
-@comment share/examples/olsrd/olsrd.conf
+@sample ${SYSCONFDIR}/olsrd/
+share/examples/olsrd/olsrd.conf
+@sample ${SYSCONFDIR}/olsrd/olsrd.conf
share/examples/olsrd/olsrd.conf.default.full
+share/examples/olsrd/olsrd.conf.default.full.txt
share/examples/olsrd/olsrd.conf.default.lq
-share/examples/olsrd/olsrd.conf.default.lq-fisheye
share/examples/olsrd/olsrd.conf.default.rfc
-@sample ${SYSCONFDIR}/olsrd.conf
+@rcscript /etc/rc.d/olsrd
Index: pkg/PLIST-plugins
===================================================================
RCS file: pkg/PLIST-plugins
diff -N pkg/PLIST-plugins
--- pkg/PLIST-plugins 4 Apr 2016 16:09:10 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,13 +0,0 @@
-@comment $OpenBSD: PLIST-plugins,v 1.2 2016/04/04 16:09:10 naddy Exp $
-bin/olsr-topology-view.pl
-lib/olsrd-plugins/
-lib/olsrd-plugins/olsrd_dot_draw.so
-lib/olsrd-plugins/olsrd_dyn_gw.so
-lib/olsrd-plugins/olsrd_dyn_gw_plain.so
-lib/olsrd-plugins/olsrd_httpinfo.so
-lib/olsrd-plugins/olsrd_mini.so
-lib/olsrd-plugins/olsrd_nameservice.so
-lib/olsrd-plugins/olsrd_pgraph.so
-lib/olsrd-plugins/olsrd_secure.so
-lib/olsrd-plugins/olsrd_txtinfo.so
-lib/olsrd-plugins/olsrd_watchdog.so
Index: pkg/olsrd.rc
===================================================================
RCS file: pkg/olsrd.rc
diff -N pkg/olsrd.rc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ pkg/olsrd.rc 3 Apr 2016 11:04:23 -0000
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+daemon="${TRUEPREFIX}/sbin/olsrd"
+
+. /etc/rc.d/rc.subr
+
+rc_reload=NO
+
+rc_cmd $1