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

Reply via email to