reset upstream subtrees to HEAD

Reset the following subtrees on HEAD:
  poky: 8217b477a1(master)
  meta-xilinx: 64aa3d35ae(master)
  meta-openembedded: 0435c9e193(master)
  meta-raspberrypi: 490a4441ac(master)
  meta-security: cb6d1c85ee(master)

Squashed patches:
  meta-phosphor: drop systemd 239 patches
  meta-phosphor: mrw-api: use correct install path

Change-Id: I268e2646d9174ad305630c6bbd3fbc1a6105f43d
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb/0001-undefine-macro-before-redefining.patch b/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb/0001-undefine-macro-before-redefining.patch
deleted file mode 100644
index 8653302..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb/0001-undefine-macro-before-redefining.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 59f65235a7a690f50d1686e9977908c053697d8c Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 28 Aug 2018 22:59:13 -0700
-Subject: [PATCH] undefine macro before redefining
-
-Fixes
-src/main.c:89:9: error: 'printf' macro redefined [-Werror,-Wmacro-redefined]
-
-Upstream-Stats: Submitted [https://github.com/civetweb/civetweb/pull/649]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/main.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/main.c b/src/main.c
-index bbcb0aec..01191a3c 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -86,6 +86,7 @@
- 
- #include "civetweb.h"
- 
-+#undef printf
- #define printf                                                                 \
- 	DO_NOT_USE_THIS_FUNCTION__USE_fprintf /* Required for unit testing */
- 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb
index d681f7f..c8fe24c 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_git.bb
@@ -4,11 +4,10 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=6f28fdcba0dda735eed62bac6a397562"
 
-SRCREV = "19f31ba8dd8443e86c7028a4b4c37f4b299aa68c"
-PV = "1.10+git${SRCPV}"
+SRCREV = "ce8f6d38a60eb16c996afee1e5340f76ef4d0923"
+PV = "1.11+git${SRCPV}"
 SRC_URI = "git://github.com/civetweb/civetweb.git \
            file://0001-Unittest-Link-librt-and-libm-using-l-option.patch \
-           file://0001-undefine-macro-before-redefining.patch \
            "
 
 S = "${WORKDIR}/git"
@@ -36,7 +35,7 @@
 PACKAGECONFIG[cpp] = "-DCIVETWEB_ENABLE_CXX=ON,-DCIVETWEB_ENABLE_CXX=OFF,"
 PACKAGECONFIG[debug] = "-DCIVETWEB_ENABLE_MEMORY_DEBUGGING=ON,-DCIVETWEB_ENABLE_MEMORY_DEBUGGING=OFF,"
 PACKAGECONFIG[ipv6] = "-DCIVETWEB_ENABLE_IPV6=ON,-DCIVETWEB_ENABLE_IPV6=OFF,"
-PACKAGECONFIG[server] = "-DCIVETWEB_INSTALL_EXECUTABLE=ON,-DCIVETWEB_INSTALL_EXECUTABLE=OFF,"
+PACKAGECONFIG[server] = "-DCIVETWEB_ENABLE_SERVER_EXECUTABLE=ON -DCIVETWEB_INSTALL_EXECUTABLE=ON,-DCIVETWEB_ENABLE_SERVER_EXECUTABLE=OFF -DCIVETWEB_INSTALL_EXECUTABLE=OFF,"
 PACKAGECONFIG[ssl] = "-DCIVETWEB_ENABLE_SSL=ON -DCIVETWEB_SSL_OPENSSL_API_1_1=OFF -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=OFF,-DCIVETWEB_ENABLE_SSL=OFF,openssl (=1.0.2%),"
 PACKAGECONFIG[websockets] = "-DCIVETWEB_ENABLE_WEBSOCKETS=ON,-DCIVETWEB_ENABLE_WEBSOCKETS=OFF,"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/crda/crda_3.18.bb b/meta-openembedded/meta-networking/recipes-connectivity/crda/crda_3.18.bb
index d5d2ab6..c93905e 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/crda/crda_3.18.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/crda/crda_3.18.bb
@@ -4,10 +4,7 @@
 LICENSE = "copyleft-next-0.3.0"
 LIC_FILES_CHKSUM = "file://copyleft-next-0.3.0;md5=8743a2c359037d4d329a31e79eabeffe"
 
-DEPENDS = "python-m2crypto-native python-typing-native python-native libnl \
-           ${@oe.utils.conditional("DEFAULT_CRYPT", "gcrypt", "libgcrypt", "", d)} \
-           ${@oe.utils.conditional("DEFAULT_CRYPT", "openssl", "openssl10", "", d)} \
-          "
+DEPENDS = "python-m2crypto-native python-typing-native python-native libnl libgcrypt"
 
 SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz \
            file://do-not-run-ldconfig-if-destdir-is-set.patch \
@@ -23,13 +20,9 @@
 
 inherit python-dir pythonnative siteinfo
 
-# "gcrypt" or "openssl"
-DEFAULT_CRYPT ??= "gcrypt"
-
 # Recursive make problem
 EXTRA_OEMAKE = "MAKEFLAGS= DESTDIR=${D} LIBDIR=${libdir}/crda LDLIBREG='-Wl,-rpath,${libdir}/crda -lreg' \
                 UDEV_RULE_DIR=${nonarch_libdir}/udev/rules.d/"
-EXTRA_OEMAKE_append = " ${@oe.utils.conditional("DEFAULT_CRYPT", "openssl", "USE_OPENSSL=1", "", d)}"
 TARGET_BITS = "${SITEINFO_BITS}"
 export TARGET_BITS
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_6.11.5.bb b/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_7.0.8.bb
similarity index 70%
rename from meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_6.11.5.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_7.0.8.bb
index 885c6c0..84c3db7 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_6.11.5.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/dhcpcd_7.0.8.bb
@@ -5,12 +5,14 @@
 HOMEPAGE = "http://roy.marples.name/projects/dhcpcd/"
 
 LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://dhcpcd.c;endline=26;md5=77c40d671aff804ca91ea99556da8e9b"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1e8f17e4edcccc38152ccf60374e0f89"
 
 SRC_URI = "http://roy.marples.name/downloads/${BPN}/${BPN}-${PV}.tar.xz"
 
-SRC_URI[md5sum] = "2465624b62c1154f0e89dc69c42c849b"
-SRC_URI[sha256sum] = "6f9674dc7e27e936cc787175404a6171618675ecfb6903ab9887b1b66a87d69e"
+SRC_URI[md5sum] = "77bbb1d73b6f30d6ddcc8b0fd3eae266"
+SRC_URI[sha256sum] = "96968e883369ab4afd11eba9dfd9bb109f5dfff65b2814ce6c432f36362dc9b5"
+
+SRC_URI += "file://0001-remove-INCLUDEDIR-to-prevent-build-issues.patch"
 
 inherit autotools-brokensep
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch b/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch
new file mode 100644
index 0000000..37d2344
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dhcpcd/files/0001-remove-INCLUDEDIR-to-prevent-build-issues.patch
@@ -0,0 +1,45 @@
+From aa9e3982c1e75ad49945a62f5e262279c7a905a4 Mon Sep 17 00:00:00 2001
+From: Stefano Cappa <stefano.cappa.ks89@gmail.com>
+Date: Sun, 13 Jan 2019 01:50:52 +0100
+Subject: [PATCH] remove INCLUDEDIR to prevent build issues
+
+Upstream-Status: Pending
+
+Signed-off-by: Stefano Cappa <stefano.cappa.ks89@gmail.com>
+---
+ configure | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/configure b/configure
+index 6c81e0db..32dea2b4 100755
+--- a/configure
++++ b/configure
+@@ -20,7 +20,6 @@ BUILD=
+ HOST=
+ HOSTCC=
+ TARGET=
+-INCLUDEDIR=
+ DEBUG=
+ FORK=
+ STATIC=
+@@ -72,7 +71,6 @@ for x do
+ 	--mandir) MANDIR=$var;;
+ 	--datadir) DATADIR=$var;;
+ 	--with-ccopts|CFLAGS) CFLAGS=$var;;
+-	-I|--includedir) INCLUDEDIR="$INCLUDEDIR${INCLUDEDIR:+ }-I$var";;
+ 	CC) CC=$var;;
+ 	CPPFLAGS) CPPFLAGS=$var;;
+ 	PKG_CONFIG) PKG_CONFIG=$var;;
+@@ -309,9 +307,6 @@ if [ -n "$CPPFLAGS" ]; then
+ 	echo "CPPFLAGS=" >>$CONFIG_MK
+ 	echo "CPPFLAGS+=	$CPPFLAGS" >>$CONFIG_MK
+ fi
+-if [ -n "$INCLUDEDIR" ]; then
+-	echo "CPPFLAGS+=	$INCLUDEDIR" >>$CONFIG_MK
+-fi
+ if [ -n "$LDFLAGS" ]; then
+ 	echo "LDFLAGS=" >>$CONFIG_MK
+ 	echo "LDFLAGS+=	$LDFLAGS" >>$CONFIG_MK
+-- 
+2.17.2 (Apple Git-113)
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler/0001-linux-port-Rename-pthread_mutex_t-variable-lock.patch b/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler/0001-linux-port-Rename-pthread_mutex_t-variable-lock.patch
new file mode 100644
index 0000000..346a56a
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler/0001-linux-port-Rename-pthread_mutex_t-variable-lock.patch
@@ -0,0 +1,74 @@
+From 630086cf1b3fba71822319a268d3711734cd6aa8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 31 Jan 2019 12:56:13 -0800
+Subject: [PATCH] linux-port: Rename pthread_mutex_t variable 'lock'
+
+lock is also used by libc++ in std namespace and using it here causes
+clang to fail e.g.
+
+dibbler-client.cpp:47:25: error: reference to 'lock' is ambiguous
+    pthread_mutex_lock(&lock);
+                        ^
+../../../../../../../workspace/sources/dibbler/Port-linux/dibbler-client.cpp:29:26: note: candidate found by name lookup is 'lock'
+extern ::pthread_mutex_t lock;
+                         ^
+/mnt/a/yoe/build/tmp/work/aarch64-yoe-linux/dibbler/1.0.1+1.0.2RC1+gitc4b0ed52e751da7823dd9a36e91f93a6310e5525-r0/recipe-sysroot/usr/include/c++/v1/mutex:446:1: note: candidate found by name lookup is 'std::__1::lock'
+lock(_L0& __l0, _L1& __l1, _L2& __l2, _L3& ...__l3)
+
+Upstream-Status: Submitted [https://github.com/tomaszmrugalski/dibbler/pull/37]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Port-linux/dibbler-client.cpp          | 6 +++---
+ Port-linux/lowlevel-linux-link-state.c | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/Port-linux/dibbler-client.cpp b/Port-linux/dibbler-client.cpp
+index 78f34241..b5ebb9f0 100644
+--- a/Port-linux/dibbler-client.cpp
++++ b/Port-linux/dibbler-client.cpp
+@@ -26,7 +26,7 @@ using namespace std;
+ 
+ #define IF_RECONNECTED_DETECTED -1
+ 
+-extern pthread_mutex_t lock;
++extern pthread_mutex_t dibbler_lock;
+ 
+ TDHCPClient* ptr = 0;
+ 
+@@ -44,8 +44,8 @@ void signal_handler(int n) {
+ #ifdef MOD_CLNT_CONFIRM
+ void signal_handler_of_linkstate_change(int n) {
+     Log(Notice) << "Network switch off event detected. initiating CONFIRM." << LogEnd;
+-    pthread_mutex_lock(&lock);
+-    pthread_mutex_unlock(&lock);
++    pthread_mutex_lock(&dibbler_lock);
++    pthread_mutex_unlock(&dibbler_lock);
+ }
+ #endif
+ 
+diff --git a/Port-linux/lowlevel-linux-link-state.c b/Port-linux/lowlevel-linux-link-state.c
+index 76293ea1..e6b94063 100644
+--- a/Port-linux/lowlevel-linux-link-state.c
++++ b/Port-linux/lowlevel-linux-link-state.c
+@@ -34,7 +34,7 @@ volatile int * notifier = 0;
+ int isDone = 0;
+ pthread_t parent_id;
+ pthread_t ntid;
+-pthread_mutex_t lock;
++pthread_mutex_t dibbler_lock;
+ 
+ struct state {
+     int id;
+@@ -86,9 +86,9 @@ void link_state_changed(int ifindex)
+     {
+ 	if (changed_links->cnt<16)
+ 	    changed_links->ifindex[changed_links->cnt++] = ifindex;
+-	pthread_mutex_lock(&lock);
++	pthread_mutex_lock(&dibbler_lock);
+ 	*notifier = 1; /* notify that change has occured */
+-	pthread_mutex_unlock(&lock);
++	pthread_mutex_unlock(&dibbler_lock);
+ 	pthread_kill(parent_id,SIGUSR1);
+     } else
+     {
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb
index 8890e14..90051a3 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/dibbler/dibbler_git.bb
@@ -9,7 +9,8 @@
 
 SRC_URI = "git://github.com/tomaszmrugalski/dibbler \
            file://dibbler_fix_getSize_crash.patch \
-          "
+           file://0001-linux-port-Rename-pthread_mutex_t-variable-lock.patch \
+           "
 PV = "1.0.1+1.0.2RC1+git${SRCREV}"
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/files/0001-fix-building-in-a-separate-directory-outside-the-sou.patch b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/files/0001-fix-building-in-a-separate-directory-outside-the-sou.patch
new file mode 100644
index 0000000..3f34ff2
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/files/0001-fix-building-in-a-separate-directory-outside-the-sou.patch
@@ -0,0 +1,77 @@
+firewalld: fix building in a separate directory outside the source tree
+
+Upstream-Status: Submitted [https://github.com/firewalld/firewalld/pull/456]
+Signed-off-by: Dan Callaghan <dan.callaghan@opengear.com>
+
+diff --git a/config/Makefile.am b/config/Makefile.am
+index 7048d2ee..5270d408 100644
+--- a/config/Makefile.am
++++ b/config/Makefile.am
+@@ -377,11 +377,11 @@ install-config:
+ 	$(MKDIR_P) $(DESTDIR)$(sconfdir)/zones
+ 	$(MKDIR_P) $(DESTDIR)$(sconfdir)/helpers
+ 	$(MKDIR_P) $(DESTDIR)$(prefixlibdir)
+-	cp -r icmptypes $(DESTDIR)$(prefixlibdir)
+-	cp -r ipsets $(DESTDIR)$(prefixlibdir)
+-	cp -r services $(DESTDIR)$(prefixlibdir)
+-	cp -r zones $(DESTDIR)$(prefixlibdir)
+-	cp -r helpers $(DESTDIR)$(prefixlibdir)
++	cp -r $(srcdir)/icmptypes $(DESTDIR)$(prefixlibdir)
++	cp -r $(srcdir)/ipsets $(DESTDIR)$(prefixlibdir)
++	cp -r $(srcdir)/services $(DESTDIR)$(prefixlibdir)
++	cp -r $(srcdir)/zones $(DESTDIR)$(prefixlibdir)
++	cp -r $(srcdir)/helpers $(DESTDIR)$(prefixlibdir)
+ 
+ uninstall-config:
+ 	rmdir $(DESTDIR)$(sconfdir)/icmptypes
+diff --git a/doc/xml/Makefile.am b/doc/xml/Makefile.am
+index 8c93ab9c..d0313e3e 100644
+--- a/doc/xml/Makefile.am
++++ b/doc/xml/Makefile.am
+@@ -69,7 +69,8 @@ edit = sed \
+ 	-e 's|\@PREFIX\@|$(prefix)|' \
+ 	-e 's|\@SYSCONFDIR\@|$(sysconfdir)|' \
+ 	-e 's|\@PACKAGE_STRING\@|$(PACKAGE_STRING)|' \
+-	-e 's|\@IFCFGDIR\@|$(IFCFGDIR)|'
++	-e 's|\@IFCFGDIR\@|$(IFCFGDIR)|' \
++	-e 's|@SRCDIR@|$(srcdir)|'
+ 
+ transform-man.xsl: transform-man.xsl.in
+ 	$(edit) $< >$@
+diff --git a/doc/xml/firewall-cmd.xml.in b/doc/xml/firewall-cmd.xml.in
+index c2606553..24d77858 100644
+--- a/doc/xml/firewall-cmd.xml.in
++++ b/doc/xml/firewall-cmd.xml.in
+@@ -1,9 +1,9 @@
+ <?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+ [
+-<!ENTITY authors SYSTEM "authors.xml">
+-<!ENTITY seealso SYSTEM "seealso.xml">
+-<!ENTITY notes SYSTEM "notes.xml">
++<!ENTITY authors SYSTEM "@SRCDIR@/authors.xml">
++<!ENTITY seealso SYSTEM "@SRCDIR@/seealso.xml">
++<!ENTITY notes SYSTEM "@SRCDIR@/notes.xml">
+ <!ENTITY errorcodes SYSTEM "errorcodes.xml">
+ ]>
+ 
+diff --git a/doc/xml/firewalld.xml.in b/doc/xml/firewalld.xml.in
+index de802059..3d319b04 100644
+--- a/doc/xml/firewalld.xml.in
++++ b/doc/xml/firewalld.xml.in
+@@ -1,9 +1,9 @@
+ <?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
+ [
+-<!ENTITY authors SYSTEM "authors.xml">
+-<!ENTITY seealso SYSTEM "seealso.xml">
+-<!ENTITY notes SYSTEM "notes.xml">
++<!ENTITY authors SYSTEM "@SRCDIR@/authors.xml">
++<!ENTITY seealso SYSTEM "@SRCDIR@/seealso.xml">
++<!ENTITY notes SYSTEM "@SRCDIR@/notes.xml">
+ ]>
+ 
+ <!--
+-- 
+2.20.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/files/firewalld.init b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/files/firewalld.init
new file mode 100644
index 0000000..08e8930
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/files/firewalld.init
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides: firewalld
+# Required-Start: $syslog $local_fs messagebus
+# Required-Stop: 
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: 
+# Description: 
+### END INIT INFO
+
+. /etc/init.d/functions
+
+firewalld=/usr/sbin/firewalld
+pidfile=/var/run/firewalld.pid
+
+case "$1" in
+    start)
+        echo -n "Starting firewalld: "
+        start-stop-daemon --start --quiet --exec $firewalld
+        echo "."
+        ;;
+    stop)
+        echo -n "Stopping firewalld: "
+        start-stop-daemon --stop --quiet --pidfile $pidfile
+        echo "."
+        ;;
+    restart)
+        echo -n "Stopping firewalld: "
+        start-stop-daemon --stop --quiet --pidfile $pidfile
+        echo "."
+        echo -n "Starting firewalld: "
+        start-stop-daemon --start --quiet --exec $firewalld
+        echo "."
+        ;;
+    reload)
+        echo -n "Reloading firewalld: "
+        firewall-cmd --reload
+        echo "."
+        ;;
+    status)
+        firewall-cmd --state
+        ;;
+    *)
+        echo "Usage: /etc/init.d/firewalld {start|stop|restart|reload|status}" >&2
+        exit 1
+esac
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.6.3.bb b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.6.3.bb
new file mode 100644
index 0000000..e999fa7
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/firewalld/firewalld_0.6.3.bb
@@ -0,0 +1,84 @@
+SUMMARY = "Dynamic firewall daemon with a D-Bus interface"
+HOMEPAGE = "https://firewalld.org/"
+BUGTRACKER = "https://github.com/firewalld/firewalld/issues"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://github.com/firewalld/firewalld/archive/v${PV}.tar.gz \
+           file://firewalld.init \
+           file://0001-fix-building-in-a-separate-directory-outside-the-sou.patch \
+"
+SRC_URI[md5sum] = "5ef954d9b6b244ffeabcd226be1867a0"
+SRC_URI[sha256sum] = "039ad56ea6d6553aadf33243ea5b39802d73519e46a89c80c648b2bd1ec78aeb"
+
+# glib-2.0-native is needed for GSETTINGS_RULES autoconf macro from gsettings.m4
+# xmlto-native is needed to populate /etc/xml/catalog.xml in the sysroot so that xsltproc finds the docbook xslt
+DEPENDS = "intltool-native glib-2.0-native libxslt-native docbook-xsl-stylesheets-native xmlto-native"
+
+inherit gettext autotools bash-completion python3native gsettings systemd update-rc.d
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[systemd] = "--with-systemd-unitdir=${systemd_unitdir}/system/,--disable-systemd"
+
+# iptables, ip6tables, ebtables, and ipset *should* be unnecessary
+# when the nftables backend is available, because nftables supersedes all of them.
+# However we still need iptables and ip6tables to be available otherwise any
+# application relying on "direct passthrough" rules (such as docker) will break.
+# /etc/sysconfig/firewalld is a Red Hat-ism, only referenced by
+# the Red Hat-specific init script which we aren't using, so we disable that.
+EXTRA_OECONF = "\
+    --with-nft=${sbindir}/nft \
+    --without-ipset \
+    --with-iptables=${sbindir}/iptables \
+    --with-iptables-restore=${sbindir}/iptables-restore \
+    --with-ip6tables=${sbindir}/ip6tables \
+    --with-ip6tables-restore=${sbindir}/ip6tables-restore \
+    --without-ebtables \
+    --without-ebtables-restore \
+    --disable-sysconfig \
+"
+
+INITSCRIPT_NAME = "firewalld"
+SYSTEMD_SERVICE = "firewalld.service"
+
+do_install_append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        :
+    else
+        # firewalld ships an init script but it contains Red Hat-isms, replace it with our own
+        rm -rf ${D}${sysconfdir}/rc.d/
+        install -d ${D}${sysconfdir}/init.d
+        install -m0755 ${WORKDIR}/firewalld.init ${D}${sysconfdir}/init.d/firewalld
+    fi
+
+    # We ran ./configure with PYTHON pointed at the binary inside $STAGING_BINDIR_NATIVE
+    # so now we need to fix up any references to point at the proper path in the image.
+    # This hack is also in distutils.bbclass, but firewalld doesn't use distutils/setuptools.
+    if [ ${PN} != "${BPN}-native" ]; then
+        sed -i -e s:${STAGING_BINDIR_NATIVE}/python3-native/python3:${bindir}/python3:g \
+            ${D}${bindir}/* ${D}${sbindir}/* ${D}${sysconfdir}/firewalld/*.xml
+    fi
+    sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g \
+        ${D}${bindir}/* ${D}${sbindir}/* ${D}${sysconfdir}/firewalld/*.xml
+}
+
+FILES_${PN} += "\
+    ${PYTHON_SITEPACKAGES_DIR}/firewall \
+    ${datadir}/polkit-1 \
+    ${datadir}/metainfo \
+"
+
+RDEPENDS_${PN} = "\
+    nftables \
+    iptables \
+    python3-core \
+    python3-io \
+    python3-fcntl \
+    python3-shell \
+    python3-syslog \
+    python3-xml \
+    python3-dbus \
+    python3-slip-dbus \
+    python3-decorator \
+    python3-pygobject \
+"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/radiusd.service b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/radiusd.service
index 899c4e4..8dae0df 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/radiusd.service
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/radiusd.service
@@ -6,7 +6,6 @@
 Type=forking
 PIDFile=@STATEDIR@/run/radiusd/radiusd.pid
 ExecStartPre=-@BASE_BINDIR@/chown -R radiusd.radiusd @STATEDIR@/run/radiusd
-ExecStartPre=-@BASE_BINDIR@/sh -c "if [ ! -f @SYSCONFDIR@/raddb/certs/server.pem ]; then sudo -u radiusd @SYSCONFDIR@/raddb/certs/bootstrap; fi"
 ExecStartPre=@SBINDIR@/radiusd -C
 ExecStart=@SBINDIR@/radiusd -d @SYSCONFDIR@/raddb
 ExecReload=@SBINDIR@/radiusd -C
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.17.bb b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.17.bb
index c17d56d..5ab9a3f 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.17.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.17.bb
@@ -68,6 +68,7 @@
 
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
                    pcre libcap \
+                   openssl rlm-eap-fast rlm-eap-pwd \
 "
 
 PACKAGECONFIG[krb5] = "--with-rlm_krb5,--without-rlm_krb5,krb5"
@@ -83,6 +84,9 @@
 PACKAGECONFIG[python] = "--with-rlm_python --with-rlm-python-bin=${STAGING_BINDIR_NATIVE}/python-native/python --with-rlm-python-include-dir=${STAGING_INCDIR}/${PYTHON_DIR},--without-rlm_python,python-native python"
 PACKAGECONFIG[rest] = "--with-rlm_rest,--without-rlm_rest,curl json-c"
 PACKAGECONFIG[ruby] = "--with-rlm_ruby,--without-rlm_ruby,ruby"
+PACKAGECONFIG[openssl] = "--with-openssl, --without-openssl"
+PACKAGECONFIG[rlm-eap-fast] = "--with-rlm_eap_fast, --without-rlm_eap_fast"
+PACKAGECONFIG[rlm-eap-pwd] = "--with-rlm_eap_pwd, --without-rlm_eap_pwd"
 
 inherit useradd autotools-brokensep update-rc.d systemd
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch
deleted file mode 100644
index d4764f5..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/0001-rcp-fix-to-work-with-large-files.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Upstream-Status: Pending
-
-Subject: rcp: fix to work with large files
-
-When we copy file by rcp command, if the file > 2GB, it will fail.
-The cause is that it used incorrect data type on file size in sink() of rcp.
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/rcp.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/rcp.c b/src/rcp.c
-index 21f55b6..bafa35f 100644
---- a/src/rcp.c
-+++ b/src/rcp.c
-@@ -876,9 +876,9 @@ sink (int argc, char *argv[])
-   enum
-   { YES, NO, DISPLAYED } wrerr;
-   BUF *bp;
--  off_t i, j;
-+  off_t i, j, size;
-   int amt, count, exists, first, mask, mode, ofd, omode;
--  int setimes, size, targisdir, wrerrno;
-+  int setimes, targisdir, wrerrno;
-   char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ];
-   const char *why;
- 
--- 
-1.9.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch
deleted file mode 100644
index 24c134f..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/fix-disable-ipv6.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-Upstream: http://www.mail-archive.com/bug-inetutils@gnu.org/msg02103.html
-
-Upstream-Status: Pending
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- ping/ping_common.h | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/ping/ping_common.h b/ping/ping_common.h
-index 1dfd1b5..3bfbd12 100644
---- a/ping/ping_common.h
-+++ b/ping/ping_common.h
-@@ -17,10 +17,14 @@
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see `http://www.gnu.org/licenses/'. */
- 
-+#include <config.h>
-+
- #include <netinet/in_systm.h>
- #include <netinet/in.h>
- #include <netinet/ip.h>
-+#ifdef HAVE_IPV6
- #include <netinet/icmp6.h>
-+#endif
- #include <icmp.h>
- #include <error.h>
- #include <progname.h>
-@@ -62,7 +66,12 @@ struct ping_stat
-    want to follow the traditional behaviour of ping.  */
- #define DEFAULT_PING_COUNT 0
- 
-+#ifdef HAVE_IPV6
- #define PING_HEADER_LEN (USE_IPV6 ? sizeof (struct icmp6_hdr) : ICMP_MINLEN)
-+#else
-+#define PING_HEADER_LEN (ICMP_MINLEN)
-+#endif
-+
- #define PING_TIMING(s)  ((s) >= sizeof (struct timeval))
- #define PING_DATALEN    (64 - PING_HEADER_LEN)  /* default data length */
- 
-@@ -74,13 +83,20 @@ struct ping_stat
-   (t).tv_usec = ((i)%PING_PRECISION)*(1000000/PING_PRECISION) ;\
- } while (0)
- 
-+#ifdef HAVE_IPV6
- /* FIXME: Adjust IPv6 case for options and their consumption.  */
- #define _PING_BUFLEN(p, u) ((u)? ((p)->ping_datalen + sizeof (struct icmp6_hdr)) : \
- 				   (MAXIPLEN + (p)->ping_datalen + ICMP_TSLEN))
- 
-+#else
-+#define _PING_BUFLEN(p, u) (MAXIPLEN + (p)->ping_datalen + ICMP_TSLEN)
-+#endif
-+
-+#ifdef HAVE_IPV6
- typedef int (*ping_efp6) (int code, void *closure, struct sockaddr_in6 * dest,
- 			  struct sockaddr_in6 * from, struct icmp6_hdr * icmp,
- 			  int datalen);
-+#endif
- 
- typedef int (*ping_efp) (int code,
- 			 void *closure,
-@@ -89,13 +105,17 @@ typedef int (*ping_efp) (int code,
- 			 struct ip * ip, icmphdr_t * icmp, int datalen);
- 
- union event {
-+#ifdef HAVE_IPV6
-   ping_efp6 handler6;
-+#endif
-   ping_efp handler;
- };
- 
- union ping_address {
-   struct sockaddr_in ping_sockaddr;
-+#ifdef HAVE_IPV6
-   struct sockaddr_in6 ping_sockaddr6;
-+#endif
- };
- 
- typedef struct ping_data PING;
--- 
-2.8.3
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch
deleted file mode 100644
index 3da4e9f..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 552a7d64ad4a7188a9b7cd89933ae7caf7ebfe90 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier at gentoo.org>
-Date: Thu, 18 Nov 2010 16:59:14 -0500
-Subject: [PATCH gnulib] printf-parse: pull in features.h for __GLIBC__
-
-Upstream-Status: Pending
-
-Signed-off-by: Mike Frysinger <vapier at gentoo.org>
----
- lib/printf-parse.h |    3 +++
- 1 files changed, 3 insertions(+), 0 deletions(-)
-
-diff --git a/lib/printf-parse.h b/lib/printf-parse.h
-index 67a4a2a..3bd6152 100644
---- a/lib/printf-parse.h
-+++ b/lib/printf-parse.h
-@@ -25,6 +25,9 @@
- 
- #include "printf-args.h"
- 
-+#ifdef HAVE_FEATURES_H
-+# include <features.h>	/* for __GLIBC__ */
-+#endif
- 
- /* Flags */
- #define FLAG_GROUP       1      /* ' flag */
--- 
-1.7.3.2
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch
deleted file mode 100644
index b13bb92..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.8-0003-wchar.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Pending
-
---- inetutils-1.8/lib/wchar.in.h
-+++ inetutils-1.8/lib/wchar.in.h
-@@ -70,6 +70,9 @@
- /* The include_next requires a split double-inclusion guard.  */
- #if @HAVE_WCHAR_H@
- # @INCLUDE_NEXT@ @NEXT_WCHAR_H@
-+#else
-+# include <stddef.h>
-+# define MB_CUR_MAX 1
- #endif
- 
- #undef _GL_ALREADY_INCLUDING_WCHAR_H
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch
deleted file mode 100644
index 2592989..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-1.9-PATH_PROCNET_DEV.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-inetutils: define PATH_PROCNET_DEV if not already defined
-
-this prevents the following compilation error :
-system/linux.c:401:15: error: 'PATH_PROCNET_DEV' undeclared (first use in this function)
-
-this patch comes from :
- http://repository.timesys.com/buildsources/i/inetutils/inetutils-1.9/
-
-Upstream-Status: Inappropriate [not author]
-
-Signed-of-by: Eric Bénard <eric@eukrea.com>
----
-diff -Naur inetutils-1.9.orig/ifconfig/system/linux.c inetutils-1.9/ifconfig/system/linux.c
---- inetutils-1.9.orig/ifconfig/system/linux.c	2012-01-04 16:31:36.000000000 -0500
-+++ inetutils-1.9/ifconfig/system/linux.c	2012-01-04 16:40:53.000000000 -0500
-@@ -49,6 +49,10 @@
- #include "../ifconfig.h"
- 
- 
-+#ifndef PATH_PROCNET_DEV
-+  #define PATH_PROCNET_DEV "/proc/net/dev"
-+#endif
-+
- /* ARPHRD stuff.  */
- 
- static void
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
deleted file mode 100644
index ff3abd8..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/inetutils-only-check-pam_appl.h-when-pam-enabled.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Only check security/pam_appl.h which is provided by package libpam when pam is
-enabled.
-
-Upstream-Status: Pending
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-diff --git a/configure.ac b/configure.ac
-index b35e672..e78a751 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -195,6 +195,19 @@ fi
- 
- # See if we have libpam.a.  Investigate PAM versus Linux-PAM.
- if test "$with_pam" = yes ; then
-+  AC_CHECK_HEADERS([security/pam_appl.h], [], [], [
-+#include <sys/types.h>
-+#ifdef HAVE_NETINET_IN_SYSTM_H
-+# include <netinet/in_systm.h>
-+#endif
-+#include <netinet/in.h>
-+#ifdef HAVE_NETINET_IP_H
-+# include <netinet/ip.h>
-+#endif
-+#ifdef HAVE_SYS_PARAM_H
-+# include <sys/param.h>
-+#endif
-+])
-   AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
-   AC_CHECK_LIB(pam, pam_authenticate, LIBPAM=-lpam)
-   if test "$ac_cv_lib_pam_pam_authenticate" = yes ; then
-@@ -587,7 +600,7 @@ AC_HEADER_DIRENT
- AC_CHECK_HEADERS([arpa/nameser.h errno.h fcntl.h features.h \
- 		  glob.h memory.h netinet/ether.h netinet/in_systm.h \
- 		  netinet/ip.h netinet/ip_icmp.h netinet/ip_var.h \
--		  security/pam_appl.h shadow.h \
-+		  shadow.h \
- 		  stdarg.h stdlib.h string.h stropts.h sys/tty.h \
- 		  sys/utsname.h sys/ptyvar.h sys/msgbuf.h sys/filio.h \
- 		  sys/ioctl_compat.h sys/cdefs.h sys/stream.h sys/mkdev.h \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rexec.xinetd.inetutils b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rexec.xinetd.inetutils
deleted file mode 100644
index 30e81ef..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rexec.xinetd.inetutils
+++ /dev/null
@@ -1,20 +0,0 @@
-# default: off
-# description:
-# Rexecd is the server for the rexec program. The server provides remote 
-# execution facilities with authentication based on user names and 
-# passwords.
-#
-service exec
-{
-	socket_type	= stream
-	protocol	= tcp
-	flags		= NAMEINARGS
-	wait		= no
-	user		= root
-	group		= root
-	log_on_success	+= USERID
-	log_on_failure	+= USERID
-	server		= @SBINDIR@/tcpd
-	server_args	= @SBINDIR@/in.rexecd
-	disable		= yes
-}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rlogin.xinetd.inetutils b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rlogin.xinetd.inetutils
deleted file mode 100644
index 21b55da..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rlogin.xinetd.inetutils
+++ /dev/null
@@ -1,23 +0,0 @@
-# default: off
-# description:
-# Rlogind is a server for the rlogin program. The server provides remote 
-# execution with authentication based on privileged port numbers from trusted
-# host
-#
-service login
-{
-	socket_type	= stream
-	protocol	= tcp
-	flags		= NAMEINARGS
-	wait		= no
-	user		= root
-	group		= root
-	log_on_success	+= USERID
-	log_on_failure	+= USERID
-	server		= @SBINDIR@/tcpd
-	server_args	= @SBINDIR@/in.rlogind -a
-	disable		= yes
-}
-							
-							
-							
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rsh.xinetd.inetutils b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rsh.xinetd.inetutils
deleted file mode 100644
index 2b894a7..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/rsh.xinetd.inetutils
+++ /dev/null
@@ -1,21 +0,0 @@
-# default: off
-# description:
-# The rshd server is a server for the rcmd(3) routine and, 
-# consequently, for the rsh(1) program. The server provides 
-# remote execution facilities with authentication based on 
-# privileged port numbers from trusted hosts.
-#
-service shell
-{
-	socket_type	= stream
-	protocol	= tcp
-	flags		= NAMEINARGS
-	wait		= no
-	user		= root
-	group		= root
-	log_on_success	+= USERID
-	log_on_failure	+= USERID
-	server		= @SBINDIR@/tcpd
-	server_args	= @SBINDIR@/in.rshd -aL
-	disable		= yes
-}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/telnet.xinetd.inetutils b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/telnet.xinetd.inetutils
deleted file mode 100644
index 2d9a040..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/telnet.xinetd.inetutils
+++ /dev/null
@@ -1,13 +0,0 @@
-# default: on
-# description: The telnet server serves telnet sessions; it uses \
-#       unencrypted username/password pairs for authentication.
-service telnet
-{
-	disable		= no
-	flags		= REUSE
-	socket_type	= stream
-	wait		= no
-	user		= root
-	server		= @SBINDIR@/in.telnetd
-	log_on_failure	+= USERID
-}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/tftpd.xinetd.inetutils b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/tftpd.xinetd.inetutils
deleted file mode 100644
index 67b44c4..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/tftpd.xinetd.inetutils
+++ /dev/null
@@ -1,19 +0,0 @@
-# default: off
-# description:
-# Tftpd is a server which supports the Internet Trivial File Transfer
-# Pro-tocol (RFC 783). The TFTP server operates at the port indicated
-# in the tftp service description; see services(5).
-#
-service tftp
-{
-        disable         = yes
-        socket_type     = dgram
-        protocol        = udp
-        flags           = IPv6
-        wait            = yes
-        user            = root
-        group           = root
-        server          = @SBINDIR@/in.tftpd
-        server_args     = /tftpboot
-}
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/version.patch b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/version.patch
deleted file mode 100644
index 532a0e5..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils/version.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Upstream-Status: Pending
-
-remove m4_esyscmd function
-
-Signed-off-by: Chunrong Guo <b40290@freescale.com>
---- inetutils-1.9.1/configure.ac	2012-01-06 22:05:05.000000000 +0800
-+++ inetutils-1.9.1/configure.ac	2012-11-12 14:01:11.732957019 +0800
-@@ -20,8 +20,7 @@
- 
- AC_PREREQ(2.59)
- 
--AC_INIT([GNU inetutils],
-- m4_esyscmd([build-aux/git-version-gen .tarball-version 's/inetutils-/v/;s/_/./g']),
-+AC_INIT([GNU inetutils],[1.9.4],
-  [bug-inetutils@gnu.org])
- 
- AC_CONFIG_SRCDIR([src/inetd.c])
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils_1.9.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils_1.9.4.bb
deleted file mode 100644
index a27dbae..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/inetutils/inetutils_1.9.4.bb
+++ /dev/null
@@ -1,206 +0,0 @@
-DESCRIPTION = "The GNU inetutils are a collection of common \
-networking utilities and servers including ftp, ftpd, rcp, \
-rexec, rlogin, rlogind, rsh, rshd, syslog, syslogd, talk, \
-talkd, telnet, telnetd, tftp, tftpd, and uucpd."
-HOMEPAGE = "http://www.gnu.org/software/inetutils"
-SECTION = "net"
-DEPENDS = "ncurses netbase readline virtual/crypt"
-
-LICENSE = "GPLv3"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7"
-
-SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.gz \
-           file://version.patch \
-           file://inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch \
-           file://inetutils-1.8-0003-wchar.patch \
-           file://rexec.xinetd.inetutils  \
-           file://rlogin.xinetd.inetutils \
-           file://rsh.xinetd.inetutils \
-           file://telnet.xinetd.inetutils \
-           file://tftpd.xinetd.inetutils \
-           file://inetutils-1.9-PATH_PROCNET_DEV.patch \
-           file://inetutils-only-check-pam_appl.h-when-pam-enabled.patch \
-           file://0001-rcp-fix-to-work-with-large-files.patch \
-"
-
-SRC_URI[md5sum] = "04852c26c47cc8c6b825f2b74f191f52"
-SRC_URI[sha256sum] = "be8f75eff936b8e41b112462db51adf689715658a1b09e0d6b05d11ec92cc616"
-
-inherit autotools gettext update-alternatives texinfo
-
-acpaths = "-I ./m4"
-
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '', 'file://fix-disable-ipv6.patch', d)}"
-
-PACKAGECONFIG ??= "ftp uucpd \
-                   ${@bb.utils.filter('DISTRO_FEATURES', 'pam', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6 ping6', '', d)} \
-                  "
-PACKAGECONFIG[ftp] = "--enable-ftp,--disable-ftp,readline"
-PACKAGECONFIG[uucpd] = "--enable-uucpd,--disable-uucpd,readline"
-PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6 gl_cv_socket_ipv6=no,"
-PACKAGECONFIG[ping6] = "--enable-ping6,--disable-ping6,"
-
-EXTRA_OECONF = "--with-ncurses-include-dir=${STAGING_INCDIR} \
-        inetutils_cv_path_login=${base_bindir}/login \
-        --with-libreadline-prefix=${STAGING_LIBDIR} \
-        --enable-rpath=no \
-"
-
-EXTRA_OECONF_append_libc-musl = " --disable-rsh --disable-rcp --disable-rlogin "
-
-do_configure_prepend () {
-    export HELP2MAN='true'
-    cp ${STAGING_DATADIR_NATIVE}/gettext/config.rpath ${S}/build-aux/config.rpath
-    rm -f ${S}/glob/configure*
-}
-
-do_install_append () {
-    install -m 0755 -d ${D}${base_sbindir}
-    install -m 0755 -d ${D}${sbindir}
-    install -m 0755 -d ${D}${sysconfdir}/xinetd.d
-    if [ "${base_bindir}" != "${bindir}" ] ; then
-         install -m 0755 -d ${D}${base_bindir}
-         mv ${D}${bindir}/ping* ${D}${base_bindir}/
-         mv ${D}${bindir}/hostname ${D}${base_bindir}/
-    fi
-    mv ${D}${bindir}/ifconfig ${D}${base_sbindir}/
-    mv ${D}${libexecdir}/syslogd ${D}${base_sbindir}/
-    mv ${D}${libexecdir}/tftpd ${D}${sbindir}/in.tftpd
-    mv ${D}${libexecdir}/telnetd ${D}${sbindir}/in.telnetd
-    mv ${D}${libexecdir}/rexecd ${D}${sbindir}/in.rexecd
-    if [ -e ${D}${libexecdir}/rlogind ]; then
-        mv ${D}${libexecdir}/rlogind ${D}${sbindir}/in.rlogind
-    fi
-    if [ -e ${D}${libexecdir}/rshd ]; then
-        mv ${D}${libexecdir}/rshd ${D}${sbindir}/in.rshd
-    fi
-    if [ -e ${D}${libexecdir}/talkd ]; then
-        mv ${D}${libexecdir}/talkd ${D}${sbindir}/in.talkd
-    fi
-    mv ${D}${libexecdir}/uucpd ${D}${sbindir}/in.uucpd
-    mv ${D}${libexecdir}/* ${D}${bindir}/
-    cp ${WORKDIR}/rexec.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/rexec
-    cp ${WORKDIR}/rlogin.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/rlogin
-    cp ${WORKDIR}/rsh.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/rsh
-    cp ${WORKDIR}/telnet.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/telnet
-    cp ${WORKDIR}/tftpd.xinetd.inetutils  ${D}/${sysconfdir}/xinetd.d/tftpd
-
-    sed -e 's,@SBINDIR@,${sbindir},g' -i ${D}/${sysconfdir}/xinetd.d/*
-    if [ -e ${D}${libdir}/charset.alias ]; then
-        rm -rf ${D}${libdir}/charset.alias
-    fi
-    rm -rf ${D}${libexecdir}/
-    # remove usr/lib if empty
-    rmdir ${D}${libdir} || true
-}
-
-PACKAGES =+ "${PN}-ping ${PN}-ping6 ${PN}-hostname ${PN}-ifconfig \
-${PN}-tftp ${PN}-logger ${PN}-traceroute ${PN}-syslogd \
-${PN}-ftp ${PN}-ftpd ${PN}-tftpd ${PN}-telnet ${PN}-telnetd ${PN}-inetd \
-${PN}-rsh ${PN}-rshd"
-
-# The packages tftpd, telnetd and rshd conflict with the ones
-# provided by netkit, so add the corresponding -dbg packages
-# for them to avoid the confliction between the dbg package
-# of inetutils and netkit.
-PACKAGES =+ "${PN}-tftpd-dbg ${PN}-telnetd-dbg ${PN}-rshd-dbg"
-NOAUTOPACKAGEDEBUG = "1"
-
-ALTERNATIVE_PRIORITY = "79"
-ALTERNATIVE_${PN} = "talk whois"
-ALTERNATIVE_LINK_NAME[talkd]  = "${sbindir}/in.talkd"
-ALTERNATIVE_LINK_NAME[uucpd]  = "${sbindir}/in.uucpd"
-
-ALTERNATIVE_PRIORITY_${PN}-logger = "60"
-ALTERNATIVE_${PN}-logger = "logger"
-ALTERNATIVE_${PN}-syslogd = "syslogd"
-ALTERNATIVE_LINK_NAME[syslogd]  = "${base_sbindir}/syslogd"
-
-ALTERNATIVE_${PN}-ftp = "ftp"
-ALTERNATIVE_${PN}-ftpd = "ftpd"
-ALTERNATIVE_${PN}-tftp = "tftp"
-ALTERNATIVE_${PN}-tftpd = "tftpd"
-ALTERNATIVE_LINK_NAME[tftpd] = "${sbindir}/tftpd"
-ALTERNATIVE_TARGET[tftpd]  = "${sbindir}/in.tftpd"
-
-ALTERNATIVE_${PN}-telnet = "telnet"
-ALTERNATIVE_${PN}-telnetd = "telnetd"
-ALTERNATIVE_LINK_NAME[telnetd] = "${sbindir}/telnetd"
-ALTERNATIVE_TARGET[telnetd] = "${sbindir}/in.telnetd"
-
-ALTERNATIVE_${PN}-rsh = "rcp rexec rlogin rsh"
-ALTERNATIVE_${PN}-rshd = "rshd rexecd rlogind"
-ALTERNATIVE_LINK_NAME[rshd] = "${sbindir}/rshd"
-ALTERNATIVE_TARGET[rshd] = "${sbindir}/in.rshd"
-ALTERNATIVE_LINK_NAME[rexecd] = "${sbindir}/rexecd"
-ALTERNATIVE_TARGET[rexecd] = "${sbindir}/in.rexecd"
-ALTERNATIVE_LINK_NAME[rlogind] = "${sbindir}/rlogind"
-ALTERNATIVE_TARGET[rlogind] = "${sbindir}/in.rlogind"
-
-ALTERNATIVE_${PN}-inetd= "inetd"
-ALTERNATIVE_${PN}-traceroute = "traceroute"
-
-ALTERNATIVE_${PN}-hostname = "hostname"
-ALTERNATIVE_LINK_NAME[hostname]  = "${base_bindir}/hostname"
-
-ALTERNATIVE_${PN}-doc = "hostname.1 dnsdomainname.1 logger.1 syslogd.8"
-ALTERNATIVE_LINK_NAME[hostname.1] = "${mandir}/man1/hostname.1"
-ALTERNATIVE_LINK_NAME[dnsdomainname.1] = "${mandir}/man1/dnsdomainname.1"
-ALTERNATIVE_LINK_NAME[logger.1] = "${mandir}/man1/logger.1"
-ALTERNATIVE_LINK_NAME[syslogd.8] = "${mandir}/man8/syslogd.8"
-
-ALTERNATIVE_${PN}-ifconfig = "ifconfig"
-ALTERNATIVE_LINK_NAME[ifconfig]  = "${base_sbindir}/ifconfig"
-
-ALTERNATIVE_${PN}-ping = "ping"
-ALTERNATIVE_LINK_NAME[ping]   = "${base_bindir}/ping"
-
-ALTERNATIVE_${PN}-ping6 = "${@bb.utils.filter('PACKAGECONFIG', 'ping6', d)}"
-ALTERNATIVE_LINK_NAME[ping6]  = "${base_bindir}/ping6"
-
-
-FILES_${PN}-dbg += "${base_bindir}/.debug ${base_sbindir}/.debug ${bindir}/.debug ${sbindir}/.debug"
-FILES_${PN}-ping = "${base_bindir}/ping.${BPN}"
-FILES_${PN}-ping6 = "${base_bindir}/ping6.${BPN}"
-FILES_${PN}-hostname = "${base_bindir}/hostname.${BPN}"
-FILES_${PN}-ifconfig = "${base_sbindir}/ifconfig.${BPN}"
-FILES_${PN}-traceroute = "${bindir}/traceroute.${BPN}"
-FILES_${PN}-logger = "${bindir}/logger.${BPN}"
-
-FILES_${PN}-syslogd = "${base_sbindir}/syslogd.${BPN}"
-RCONFLICTS_${PN}-syslogd = "rsyslog busybox-syslog sysklogd syslog-ng"
-
-FILES_${PN}-ftp = "${bindir}/ftp.${BPN}"
-
-FILES_${PN}-tftp = "${bindir}/tftp.${BPN}"
-FILES_${PN}-telnet = "${bindir}/telnet.${BPN}"
-FILES_${PN}-rsh = "${bindir}/rsh.${BPN} ${bindir}/rlogin.${BPN} ${bindir}/rexec.${BPN} ${bindir}/rcp.${BPN}"
-
-FILES_${PN}-rshd = "${sbindir}/in.rshd ${sbindir}/in.rlogind ${sbindir}/in.rexecd \
-                    ${sysconfdir}/xinetd.d/rsh ${sysconfdir}/xinetd.d/rlogin ${sysconfdir}/xinetd.d/rexec"
-FILES_${PN}-rshd-dbg = "${sbindir}/.debug/in.rshd ${sbindir}/.debug/in.rlogind ${sbindir}/.debug/in.rexecd"
-RDEPENDS_${PN}-rshd += "xinetd tcp-wrappers"
-RCONFLICTS_${PN}-rshd += "netkit-rshd"
-RPROVIDES_${PN}-rshd = "rshd"
-
-FILES_${PN}-ftpd = "${bindir}/ftpd.${BPN}"
-FILES_${PN}-ftpd-dbg = "${bindir}/.debug/ftpd.${BPN}"
-RDEPENDS_${PN}-ftpd += "xinetd"
-
-FILES_${PN}-tftpd = "${sbindir}/in.tftpd ${sysconfdir}/xinetd.d/tftpd"
-FILES_${PN}-tftpd-dbg = "${sbindir}/.debug/in.tftpd"
-RCONFLICTS_${PN}-tftpd += "netkit-tftpd"
-RDEPENDS_${PN}-tftpd += "xinetd"
-
-FILES_${PN}-telnetd = "${sbindir}/in.telnetd ${sysconfdir}/xinetd.d/telnet"
-FILES_${PN}-telnetd-dbg = "${sbindir}/.debug/in.telnetd"
-RCONFLICTS_${PN}-telnetd += "netkit-telnetd"
-RPROVIDES_${PN}-telnetd = "telnetd"
-RDEPENDS_${PN}-telnetd += "xinetd"
-
-FILES_${PN}-inetd = "${bindir}/inetd.${BPN}"
-
-RDEPENDS_${PN} = "xinetd"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.13.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.16.0.bb
similarity index 91%
rename from meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.13.0.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.16.0.bb
index ff3f7f0..2e9d01e 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.13.0.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/mbedtls/mbedtls_2.16.0.bb
@@ -23,9 +23,8 @@
 SECTION = "libs"
 
 SRC_URI = "https://tls.mbed.org/download/mbedtls-${PV}-apache.tgz"
-
-SRC_URI[md5sum] = "659d96bb03012ca6db414a9137fcdbd6"
-SRC_URI[sha256sum] = "593b4e4d2e1629fc407ab4750d69fa309a0ddb66565dc3deb5b60eddbdeb06da"
+SRC_URI[md5sum] = "eae9cf16114f4491dbbc0fe36bb7e6c3"
+SRC_URI[sha256sum] = "e3dab56e9093c790b7d5e0f7eb19451010fe680649d25cf1dcca9d5441669ae2"
 
 inherit cmake
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/files/0001-Add-OpenEmbedded-cross-compile-case.patch b/meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/files/0001-Add-OpenEmbedded-cross-compile-case.patch
new file mode 100644
index 0000000..cd4291d
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/files/0001-Add-OpenEmbedded-cross-compile-case.patch
@@ -0,0 +1,40 @@
+From 54698856e5602bbd9d61e855814c854a013b4840 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 22 Dec 2018 18:47:45 -0800
+Subject: [PATCH] Add OpenEmbedded cross compile case
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ genconfig.sh | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/genconfig.sh b/genconfig.sh
+index dc42462..59922e9 100755
+--- a/genconfig.sh
++++ b/genconfig.sh
+@@ -98,6 +98,12 @@ if [ -f ../shared/tomato_version ]; then
+ 	OS_VERSION="Tomato $TOMATO_VER"
+ fi
+ 
++# OpenEmbedded special case
++if [ -f ./os.openembedded ]; then
++	OS_NAME=OpenEmbedded
++	OS_VERSION=$(cat ./os.openembedded)
++fi
++
+ ${RM} ${CONFIGFILE}
+ 
+ echo "/* MiniUPnP Project" >> ${CONFIGFILE}
+@@ -318,6 +324,11 @@ case $OS_NAME in
+ 		echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
+ 		FW=netfilter
+ 		;;
++	OpenEmbedded)
++		OS_URL=http://www.openembedded.org/
++		echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
++		FW=netfilter
++		;;
+ 	AstLinux)
+ 		OS_URL=http://www.astlinux.org/
+ 		echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/miniupnpd_2.0.20180203.bb b/meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/miniupnpd_2.1.20190210.bb
similarity index 81%
rename from meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/miniupnpd_2.0.20180203.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/miniupnpd_2.1.20190210.bb
index 04b5cd5..302f507 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/miniupnpd_2.0.20180203.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/miniupnpd/miniupnpd_2.1.20190210.bb
@@ -12,13 +12,18 @@
 DEPENDS += "iptables net-tools util-linux libmnl libnetfilter-conntrack"
 
 SRC_URI = "http://miniupnp.tuxfamily.org/files/download.php?file=${P}.tar.gz;downloadfilename=${P}.tar.gz \
-           file://miniupnpd.service"
-
-SRC_URI[md5sum] = "b4c7c938915edeee6ca4c65dd021f212"
-SRC_URI[sha256sum] = "860c15f2f8340fd69546b01cffe4c7fcff3e63a7bdfe5a2af6b2346f0e074bb6"
+           file://miniupnpd.service \
+           file://0001-Add-OpenEmbedded-cross-compile-case.patch \
+           "
+SRC_URI[md5sum] = "03b00c27106835e728a3b858ecf83390"
+SRC_URI[sha256sum] = "1aaecd25cf152d99557dfe80c7508af9cb06e97ecad4786ce5dafb4c958d196b"
 
 IPV6 = "${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', '--ipv6', '', d)}"
 
+do_configure_prepend() {
+   echo "${@d.getVar('DISTRO_VERSION')}" > ${S}/os.openembedded
+}
+
 do_compile() {
     cd ${S}
     CONFIG_OPTIONS="${IPV6} --leasefile --vendorcfg" oe_runmake -f Makefile.linux
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch
deleted file mode 100644
index c89dfe6..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/files/0002-uthash-remove-in-tree-version.patch
+++ /dev/null
@@ -1,975 +0,0 @@
-From d9aeef8d95a325942cc92f4d72415771d75d904c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <andre.draszik@jci.com>
-Date: Tue, 12 Apr 2016 13:05:10 +0100
-Subject: [PATCH 2/2] uthash: remove in-tree version
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We don't need it as we want to use the version provided by
-meta-oe instead.
-
-Upstream-Status: Inappropriate [embedded-specific]
-Signed-off-by: André Draszik <andre.draszik@jci.com>
----
- src/uthash.h | 948 -----------------------------------------------------------
- 1 file changed, 948 deletions(-)
- delete mode 100644 src/uthash.h
-
-diff --git a/src/uthash.h b/src/uthash.h
-deleted file mode 100644
-index 915a825..0000000
---- a/src/uthash.h
-+++ /dev/null
-@@ -1,948 +0,0 @@
--/*
--Copyright (c) 2003-2013, Troy D. Hanson     http://troydhanson.github.com/uthash/
--All rights reserved.
--
--Redistribution and use in source and binary forms, with or without
--modification, are permitted provided that the following conditions are met:
--
--    * Redistributions of source code must retain the above copyright
--      notice, this list of conditions and the following disclaimer.
--
--THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
--IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
--TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
--PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
--OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
--EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
--PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
--LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
--NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--*/
--
--#ifndef UTHASH_H
--#define UTHASH_H 
--
--#include <string.h>   /* memcmp,strlen */
--#include <stddef.h>   /* ptrdiff_t */
--#include <stdlib.h>   /* exit() */
--
--/* These macros use decltype or the earlier __typeof GNU extension.
--   As decltype is only available in newer compilers (VS2010 or gcc 4.3+
--   when compiling c++ source) this code uses whatever method is needed
--   or, for VS2008 where neither is available, uses casting workarounds. */
--#ifdef _MSC_VER         /* MS compiler */
--#if _MSC_VER >= 1600 && defined(__cplusplus)  /* VS2010 or newer in C++ mode */
--#define DECLTYPE(x) (decltype(x))
--#else                   /* VS2008 or older (or VS2010 in C mode) */
--#define NO_DECLTYPE
--#define DECLTYPE(x)
--#endif
--#else                   /* GNU, Sun and other compilers */
--#define DECLTYPE(x) (__typeof(x))
--#endif
--
--#ifdef NO_DECLTYPE
--#define DECLTYPE_ASSIGN(dst,src)                                                 \
--do {                                                                             \
--  char **_da_dst = (char**)(&(dst));                                             \
--  *_da_dst = (char*)(src);                                                       \
--} while(0)
--#else 
--#define DECLTYPE_ASSIGN(dst,src)                                                 \
--do {                                                                             \
--  (dst) = DECLTYPE(dst)(src);                                                    \
--} while(0)
--#endif
--
--/* a number of the hash function use uint32_t which isn't defined on win32 */
--#ifdef _MSC_VER
--typedef unsigned int uint32_t;
--typedef unsigned char uint8_t;
--#else
--#include <inttypes.h>   /* uint32_t */
--#endif
--
--#define UTHASH_VERSION 1.9.8
--
--#ifndef uthash_fatal
--#define uthash_fatal(msg) exit(-1)        /* fatal error (out of memory,etc) */
--#endif
--#ifndef uthash_malloc
--#define uthash_malloc(sz) malloc(sz)      /* malloc fcn                      */
--#endif
--#ifndef uthash_free
--#define uthash_free(ptr,sz) free(ptr)     /* free fcn                        */
--#endif
--
--#ifndef uthash_noexpand_fyi
--#define uthash_noexpand_fyi(tbl)          /* can be defined to log noexpand  */
--#endif
--#ifndef uthash_expand_fyi
--#define uthash_expand_fyi(tbl)            /* can be defined to log expands   */
--#endif
--
--/* initial number of buckets */
--#define HASH_INITIAL_NUM_BUCKETS 32      /* initial number of buckets        */
--#define HASH_INITIAL_NUM_BUCKETS_LOG2 5  /* lg2 of initial number of buckets */
--#define HASH_BKT_CAPACITY_THRESH 10      /* expand when bucket count reaches */
--
--/* calculate the element whose hash handle address is hhe */
--#define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho)))
--
--#define HASH_FIND(hh,head,keyptr,keylen,out)                                     \
--do {                                                                             \
--  unsigned _hf_bkt,_hf_hashv;                                                    \
--  out=NULL;                                                                      \
--  if (head) {                                                                    \
--     HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt);   \
--     if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) {                           \
--       HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ],  \
--                        keyptr,keylen,out);                                      \
--     }                                                                           \
--  }                                                                              \
--} while (0)
--
--#ifdef HASH_BLOOM
--#define HASH_BLOOM_BITLEN (1ULL << HASH_BLOOM)
--#define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8) + ((HASH_BLOOM_BITLEN%8) ? 1:0)
--#define HASH_BLOOM_MAKE(tbl)                                                     \
--do {                                                                             \
--  (tbl)->bloom_nbits = HASH_BLOOM;                                               \
--  (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN);                 \
--  if (!((tbl)->bloom_bv))  { uthash_fatal( "out of memory"); }                   \
--  memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN);                                \
--  (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE;                                       \
--} while (0) 
--
--#define HASH_BLOOM_FREE(tbl)                                                     \
--do {                                                                             \
--  uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN);                              \
--} while (0) 
--
--#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8] |= (1U << ((idx)%8)))
--#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8] & (1U << ((idx)%8)))
--
--#define HASH_BLOOM_ADD(tbl,hashv)                                                \
--  HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
--
--#define HASH_BLOOM_TEST(tbl,hashv)                                               \
--  HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
--
--#else
--#define HASH_BLOOM_MAKE(tbl) 
--#define HASH_BLOOM_FREE(tbl) 
--#define HASH_BLOOM_ADD(tbl,hashv) 
--#define HASH_BLOOM_TEST(tbl,hashv) (1)
--#define HASH_BLOOM_BYTELEN 0
--#endif
--
--#define HASH_MAKE_TABLE(hh,head)                                                 \
--do {                                                                             \
--  (head)->hh.tbl = (UT_hash_table*)uthash_malloc(                                \
--                  sizeof(UT_hash_table));                                        \
--  if (!((head)->hh.tbl))  { uthash_fatal( "out of memory"); }                    \
--  memset((head)->hh.tbl, 0, sizeof(UT_hash_table));                              \
--  (head)->hh.tbl->tail = &((head)->hh);                                          \
--  (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS;                        \
--  (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2;              \
--  (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head);                    \
--  (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc(                      \
--          HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket));               \
--  if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); }             \
--  memset((head)->hh.tbl->buckets, 0,                                             \
--          HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket));               \
--  HASH_BLOOM_MAKE((head)->hh.tbl);                                               \
--  (head)->hh.tbl->signature = HASH_SIGNATURE;                                    \
--} while(0)
--
--#define HASH_ADD(hh,head,fieldname,keylen_in,add)                                \
--        HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
--
--#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced)                   \
--do {                                                                             \
--  replaced=NULL;                                                                 \
--  HASH_FIND(hh,head,&((add)->fieldname),keylen_in,replaced);                     \
--  if (replaced!=NULL) {                                                          \
--     HASH_DELETE(hh,head,replaced);                                              \
--  };                                                                             \
--  HASH_ADD(hh,head,fieldname,keylen_in,add);                                     \
--} while(0)
-- 
--#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add)                            \
--do {                                                                             \
-- unsigned _ha_bkt;                                                               \
-- (add)->hh.next = NULL;                                                          \
-- (add)->hh.key = (char*)keyptr;                                                  \
-- (add)->hh.keylen = (unsigned)keylen_in;                                                   \
-- if (!(head)) {                                                                  \
--    head = (add);                                                                \
--    (head)->hh.prev = NULL;                                                      \
--    HASH_MAKE_TABLE(hh,head);                                                    \
-- } else {                                                                        \
--    (head)->hh.tbl->tail->next = (add);                                          \
--    (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail);         \
--    (head)->hh.tbl->tail = &((add)->hh);                                         \
-- }                                                                               \
-- (head)->hh.tbl->num_items++;                                                    \
-- (add)->hh.tbl = (head)->hh.tbl;                                                 \
-- HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets,                         \
--         (add)->hh.hashv, _ha_bkt);                                              \
-- HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh);                   \
-- HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv);                                 \
-- HASH_EMIT_KEY(hh,head,keyptr,keylen_in);                                        \
-- HASH_FSCK(hh,head);                                                             \
--} while(0)
--
--#define HASH_TO_BKT( hashv, num_bkts, bkt )                                      \
--do {                                                                             \
--  bkt = ((hashv) & ((num_bkts) - 1));                                            \
--} while(0)
--
--/* delete "delptr" from the hash table.
-- * "the usual" patch-up process for the app-order doubly-linked-list.
-- * The use of _hd_hh_del below deserves special explanation.
-- * These used to be expressed using (delptr) but that led to a bug
-- * if someone used the same symbol for the head and deletee, like
-- *  HASH_DELETE(hh,users,users);
-- * We want that to work, but by changing the head (users) below
-- * we were forfeiting our ability to further refer to the deletee (users)
-- * in the patch-up process. Solution: use scratch space to
-- * copy the deletee pointer, then the latter references are via that
-- * scratch pointer rather than through the repointed (users) symbol.
-- */
--#define HASH_DELETE(hh,head,delptr)                                              \
--do {                                                                             \
--    unsigned _hd_bkt;                                                            \
--    struct UT_hash_handle *_hd_hh_del;                                           \
--    if ( ((delptr)->hh.prev == NULL) && ((delptr)->hh.next == NULL) )  {         \
--        uthash_free((head)->hh.tbl->buckets,                                     \
--                    (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
--        HASH_BLOOM_FREE((head)->hh.tbl);                                         \
--        uthash_free((head)->hh.tbl, sizeof(UT_hash_table));                      \
--        head = NULL;                                                             \
--    } else {                                                                     \
--        _hd_hh_del = &((delptr)->hh);                                            \
--        if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) {     \
--            (head)->hh.tbl->tail =                                               \
--                (UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) +               \
--                (head)->hh.tbl->hho);                                            \
--        }                                                                        \
--        if ((delptr)->hh.prev) {                                                 \
--            ((UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) +                  \
--                    (head)->hh.tbl->hho))->next = (delptr)->hh.next;             \
--        } else {                                                                 \
--            DECLTYPE_ASSIGN(head,(delptr)->hh.next);                             \
--        }                                                                        \
--        if (_hd_hh_del->next) {                                                  \
--            ((UT_hash_handle*)((ptrdiff_t)_hd_hh_del->next +                     \
--                    (head)->hh.tbl->hho))->prev =                                \
--                    _hd_hh_del->prev;                                            \
--        }                                                                        \
--        HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt);   \
--        HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del);        \
--        (head)->hh.tbl->num_items--;                                             \
--    }                                                                            \
--    HASH_FSCK(hh,head);                                                          \
--} while (0)
--
--
--/* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */
--#define HASH_FIND_STR(head,findstr,out)                                          \
--    HASH_FIND(hh,head,findstr,strlen(findstr),out)
--#define HASH_ADD_STR(head,strfield,add)                                          \
--    HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
--#define HASH_REPLACE_STR(head,strfield,add,replaced)                             \
--  HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)
--#define HASH_FIND_INT(head,findint,out)                                          \
--    HASH_FIND(hh,head,findint,sizeof(int),out)
--#define HASH_ADD_INT(head,intfield,add)                                          \
--    HASH_ADD(hh,head,intfield,sizeof(int),add)
--#define HASH_REPLACE_INT(head,intfield,add,replaced)                             \
--    HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
--#define HASH_FIND_PTR(head,findptr,out)                                          \
--    HASH_FIND(hh,head,findptr,sizeof(void *),out)
--#define HASH_ADD_PTR(head,ptrfield,add)                                          \
--    HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
--#define HASH_REPLACE_PTR(head,ptrfield,add)                                      \
--    HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
--#define HASH_DEL(head,delptr)                                                    \
--    HASH_DELETE(hh,head,delptr)
--
--/* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
-- * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined.
-- */
--#ifdef HASH_DEBUG
--#define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0)
--#define HASH_FSCK(hh,head)                                                       \
--do {                                                                             \
--    unsigned _bkt_i;                                                             \
--    unsigned _count, _bkt_count;                                                 \
--    char *_prev;                                                                 \
--    struct UT_hash_handle *_thh;                                                 \
--    if (head) {                                                                  \
--        _count = 0;                                                              \
--        for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) {       \
--            _bkt_count = 0;                                                      \
--            _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head;                      \
--            _prev = NULL;                                                        \
--            while (_thh) {                                                       \
--               if (_prev != (char*)(_thh->hh_prev)) {                            \
--                   HASH_OOPS("invalid hh_prev %p, actual %p\n",                  \
--                    _thh->hh_prev, _prev );                                      \
--               }                                                                 \
--               _bkt_count++;                                                     \
--               _prev = (char*)(_thh);                                            \
--               _thh = _thh->hh_next;                                             \
--            }                                                                    \
--            _count += _bkt_count;                                                \
--            if ((head)->hh.tbl->buckets[_bkt_i].count !=  _bkt_count) {          \
--               HASH_OOPS("invalid bucket count %d, actual %d\n",                 \
--                (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count);              \
--            }                                                                    \
--        }                                                                        \
--        if (_count != (head)->hh.tbl->num_items) {                               \
--            HASH_OOPS("invalid hh item count %d, actual %d\n",                   \
--                (head)->hh.tbl->num_items, _count );                             \
--        }                                                                        \
--        /* traverse hh in app order; check next/prev integrity, count */         \
--        _count = 0;                                                              \
--        _prev = NULL;                                                            \
--        _thh =  &(head)->hh;                                                     \
--        while (_thh) {                                                           \
--           _count++;                                                             \
--           if (_prev !=(char*)(_thh->prev)) {                                    \
--              HASH_OOPS("invalid prev %p, actual %p\n",                          \
--                    _thh->prev, _prev );                                         \
--           }                                                                     \
--           _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh);                    \
--           _thh = ( _thh->next ?  (UT_hash_handle*)((char*)(_thh->next) +        \
--                                  (head)->hh.tbl->hho) : NULL );                 \
--        }                                                                        \
--        if (_count != (head)->hh.tbl->num_items) {                               \
--            HASH_OOPS("invalid app item count %d, actual %d\n",                  \
--                (head)->hh.tbl->num_items, _count );                             \
--        }                                                                        \
--    }                                                                            \
--} while (0)
--#else
--#define HASH_FSCK(hh,head) 
--#endif
--
--/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to 
-- * the descriptor to which this macro is defined for tuning the hash function.
-- * The app can #include <unistd.h> to get the prototype for write(2). */
--#ifdef HASH_EMIT_KEYS
--#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)                                   \
--do {                                                                             \
--    unsigned _klen = fieldlen;                                                   \
--    write(HASH_EMIT_KEYS, &_klen, sizeof(_klen));                                \
--    write(HASH_EMIT_KEYS, keyptr, fieldlen);                                     \
--} while (0)
--#else 
--#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)                    
--#endif
--
--/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */
--#ifdef HASH_FUNCTION 
--#define HASH_FCN HASH_FUNCTION
--#else
--#define HASH_FCN HASH_JEN
--#endif
--
--/* The Bernstein hash function, used in Perl prior to v5.6 */
--#define HASH_BER(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _hb_keylen=keylen;                                                    \
--  char *_hb_key=(char*)(key);                                                    \
--  (hashv) = 0;                                                                   \
--  while (_hb_keylen--)  { (hashv) = ((hashv) * 33) + *_hb_key++; }               \
--  bkt = (hashv) & (num_bkts-1);                                                  \
--} while (0)
--
--
--/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at 
-- * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */
--#define HASH_SAX(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _sx_i;                                                                \
--  char *_hs_key=(char*)(key);                                                    \
--  hashv = 0;                                                                     \
--  for(_sx_i=0; _sx_i < keylen; _sx_i++)                                          \
--      hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i];                     \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while (0)
--
--#define HASH_FNV(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _fn_i;                                                                \
--  char *_hf_key=(char*)(key);                                                    \
--  hashv = 2166136261UL;                                                          \
--  for(_fn_i=0; _fn_i < keylen; _fn_i++)                                          \
--      hashv = (hashv * 16777619) ^ _hf_key[_fn_i];                               \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while(0) 
-- 
--#define HASH_OAT(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _ho_i;                                                                \
--  char *_ho_key=(char*)(key);                                                    \
--  hashv = 0;                                                                     \
--  for(_ho_i=0; _ho_i < keylen; _ho_i++) {                                        \
--      hashv += _ho_key[_ho_i];                                                   \
--      hashv += (hashv << 10);                                                    \
--      hashv ^= (hashv >> 6);                                                     \
--  }                                                                              \
--  hashv += (hashv << 3);                                                         \
--  hashv ^= (hashv >> 11);                                                        \
--  hashv += (hashv << 15);                                                        \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while(0)
--
--#define HASH_JEN_MIX(a,b,c)                                                      \
--do {                                                                             \
--  a -= b; a -= c; a ^= ( c >> 13 );                                              \
--  b -= c; b -= a; b ^= ( a << 8 );                                               \
--  c -= a; c -= b; c ^= ( b >> 13 );                                              \
--  a -= b; a -= c; a ^= ( c >> 12 );                                              \
--  b -= c; b -= a; b ^= ( a << 16 );                                              \
--  c -= a; c -= b; c ^= ( b >> 5 );                                               \
--  a -= b; a -= c; a ^= ( c >> 3 );                                               \
--  b -= c; b -= a; b ^= ( a << 10 );                                              \
--  c -= a; c -= b; c ^= ( b >> 15 );                                              \
--} while (0)
--
--#define HASH_JEN(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned _hj_i,_hj_j,_hj_k;                                                    \
--  unsigned char *_hj_key=(unsigned char*)(key);                                  \
--  hashv = 0xfeedbeef;                                                            \
--  _hj_i = _hj_j = 0x9e3779b9;                                                    \
--  _hj_k = (unsigned)keylen;                                                      \
--  while (_hj_k >= 12) {                                                          \
--    _hj_i +=    (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 )                      \
--        + ( (unsigned)_hj_key[2] << 16 )                                         \
--        + ( (unsigned)_hj_key[3] << 24 ) );                                      \
--    _hj_j +=    (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 )                      \
--        + ( (unsigned)_hj_key[6] << 16 )                                         \
--        + ( (unsigned)_hj_key[7] << 24 ) );                                      \
--    hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 )                         \
--        + ( (unsigned)_hj_key[10] << 16 )                                        \
--        + ( (unsigned)_hj_key[11] << 24 ) );                                     \
--                                                                                 \
--     HASH_JEN_MIX(_hj_i, _hj_j, hashv);                                          \
--                                                                                 \
--     _hj_key += 12;                                                              \
--     _hj_k -= 12;                                                                \
--  }                                                                              \
--  hashv += keylen;                                                               \
--  switch ( _hj_k ) {                                                             \
--     case 11: hashv += ( (unsigned)_hj_key[10] << 24 );                          \
--     case 10: hashv += ( (unsigned)_hj_key[9] << 16 );                           \
--     case 9:  hashv += ( (unsigned)_hj_key[8] << 8 );                            \
--     case 8:  _hj_j += ( (unsigned)_hj_key[7] << 24 );                           \
--     case 7:  _hj_j += ( (unsigned)_hj_key[6] << 16 );                           \
--     case 6:  _hj_j += ( (unsigned)_hj_key[5] << 8 );                            \
--     case 5:  _hj_j += _hj_key[4];                                               \
--     case 4:  _hj_i += ( (unsigned)_hj_key[3] << 24 );                           \
--     case 3:  _hj_i += ( (unsigned)_hj_key[2] << 16 );                           \
--     case 2:  _hj_i += ( (unsigned)_hj_key[1] << 8 );                            \
--     case 1:  _hj_i += _hj_key[0];                                               \
--  }                                                                              \
--  HASH_JEN_MIX(_hj_i, _hj_j, hashv);                                             \
--  bkt = hashv & (num_bkts-1);                                                    \
--} while(0)
--
--/* The Paul Hsieh hash function */
--#undef get16bits
--#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__)             \
--  || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
--#define get16bits(d) (*((const uint16_t *) (d)))
--#endif
--
--#if !defined (get16bits)
--#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)             \
--                       +(uint32_t)(((const uint8_t *)(d))[0]) )
--#endif
--#define HASH_SFH(key,keylen,num_bkts,hashv,bkt)                                  \
--do {                                                                             \
--  unsigned char *_sfh_key=(unsigned char*)(key);                                 \
--  uint32_t _sfh_tmp, _sfh_len = keylen;                                          \
--                                                                                 \
--  int _sfh_rem = _sfh_len & 3;                                                   \
--  _sfh_len >>= 2;                                                                \
--  hashv = 0xcafebabe;                                                            \
--                                                                                 \
--  /* Main loop */                                                                \
--  for (;_sfh_len > 0; _sfh_len--) {                                              \
--    hashv    += get16bits (_sfh_key);                                            \
--    _sfh_tmp       = (uint32_t)(get16bits (_sfh_key+2)) << 11  ^ hashv;          \
--    hashv     = (hashv << 16) ^ _sfh_tmp;                                        \
--    _sfh_key += 2*sizeof (uint16_t);                                             \
--    hashv    += hashv >> 11;                                                     \
--  }                                                                              \
--                                                                                 \
--  /* Handle end cases */                                                         \
--  switch (_sfh_rem) {                                                            \
--    case 3: hashv += get16bits (_sfh_key);                                       \
--            hashv ^= hashv << 16;                                                \
--            hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)] << 18);              \
--            hashv += hashv >> 11;                                                \
--            break;                                                               \
--    case 2: hashv += get16bits (_sfh_key);                                       \
--            hashv ^= hashv << 11;                                                \
--            hashv += hashv >> 17;                                                \
--            break;                                                               \
--    case 1: hashv += *_sfh_key;                                                  \
--            hashv ^= hashv << 10;                                                \
--            hashv += hashv >> 1;                                                 \
--  }                                                                              \
--                                                                                 \
--    /* Force "avalanching" of final 127 bits */                                  \
--    hashv ^= hashv << 3;                                                         \
--    hashv += hashv >> 5;                                                         \
--    hashv ^= hashv << 4;                                                         \
--    hashv += hashv >> 17;                                                        \
--    hashv ^= hashv << 25;                                                        \
--    hashv += hashv >> 6;                                                         \
--    bkt = hashv & (num_bkts-1);                                                  \
--} while(0) 
--
--#ifdef HASH_USING_NO_STRICT_ALIASING
--/* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads.
-- * For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error.
-- * MurmurHash uses the faster approach only on CPU's where we know it's safe. 
-- *
-- * Note the preprocessor built-in defines can be emitted using:
-- *
-- *   gcc -m64 -dM -E - < /dev/null                  (on gcc)
-- *   cc -## a.c (where a.c is a simple test file)   (Sun Studio)
-- */
--#if (defined(__i386__) || defined(__x86_64__)  || defined(_M_IX86))
--#define MUR_GETBLOCK(p,i) p[i]
--#else /* non intel */
--#define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 0x3) == 0)
--#define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 0x3) == 1)
--#define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 0x3) == 2)
--#define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 0x3) == 3)
--#define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL))
--#if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__))
--#define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24))
--#define MUR_TWO_TWO(p)   ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16))
--#define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >>  8))
--#else /* assume little endian non-intel */
--#define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24))
--#define MUR_TWO_TWO(p)   ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16))
--#define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) <<  8))
--#endif
--#define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) :           \
--                            (MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \
--                             (MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) :  \
--                                                      MUR_ONE_THREE(p))))
--#endif
--#define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r))))
--#define MUR_FMIX(_h) \
--do {                 \
--  _h ^= _h >> 16;    \
--  _h *= 0x85ebca6b;  \
--  _h ^= _h >> 13;    \
--  _h *= 0xc2b2ae35l; \
--  _h ^= _h >> 16;    \
--} while(0)
--
--#define HASH_MUR(key,keylen,num_bkts,hashv,bkt)                        \
--do {                                                                   \
--  const uint8_t *_mur_data = (const uint8_t*)(key);                    \
--  const int _mur_nblocks = (keylen) / 4;                               \
--  uint32_t _mur_h1 = 0xf88D5353;                                       \
--  uint32_t _mur_c1 = 0xcc9e2d51;                                       \
--  uint32_t _mur_c2 = 0x1b873593;                                       \
--  uint32_t _mur_k1 = 0;                                                \
--  const uint8_t *_mur_tail;                                            \
--  const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+_mur_nblocks*4); \
--  int _mur_i;                                                          \
--  for(_mur_i = -_mur_nblocks; _mur_i; _mur_i++) {                      \
--    _mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i);                        \
--    _mur_k1 *= _mur_c1;                                                \
--    _mur_k1 = MUR_ROTL32(_mur_k1,15);                                  \
--    _mur_k1 *= _mur_c2;                                                \
--                                                                       \
--    _mur_h1 ^= _mur_k1;                                                \
--    _mur_h1 = MUR_ROTL32(_mur_h1,13);                                  \
--    _mur_h1 = _mur_h1*5+0xe6546b64;                                    \
--  }                                                                    \
--  _mur_tail = (const uint8_t*)(_mur_data + _mur_nblocks*4);            \
--  _mur_k1=0;                                                           \
--  switch((keylen) & 3) {                                               \
--    case 3: _mur_k1 ^= _mur_tail[2] << 16;                             \
--    case 2: _mur_k1 ^= _mur_tail[1] << 8;                              \
--    case 1: _mur_k1 ^= _mur_tail[0];                                   \
--    _mur_k1 *= _mur_c1;                                                \
--    _mur_k1 = MUR_ROTL32(_mur_k1,15);                                  \
--    _mur_k1 *= _mur_c2;                                                \
--    _mur_h1 ^= _mur_k1;                                                \
--  }                                                                    \
--  _mur_h1 ^= (keylen);                                                 \
--  MUR_FMIX(_mur_h1);                                                   \
--  hashv = _mur_h1;                                                     \
--  bkt = hashv & (num_bkts-1);                                          \
--} while(0)
--#endif  /* HASH_USING_NO_STRICT_ALIASING */
--
--/* key comparison function; return 0 if keys equal */
--#define HASH_KEYCMP(a,b,len) memcmp(a,b,len) 
--
--/* iterate over items in a known bucket to find desired item */
--#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out)                       \
--do {                                                                             \
-- if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head));          \
-- else out=NULL;                                                                  \
-- while (out) {                                                                   \
--    if ((out)->hh.keylen == keylen_in) {                                           \
--        if ((HASH_KEYCMP((out)->hh.key,keyptr,keylen_in)) == 0) break;             \
--    }                                                                            \
--    if ((out)->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,(out)->hh.hh_next)); \
--    else out = NULL;                                                             \
-- }                                                                               \
--} while(0)
--
--/* add an item to a bucket  */
--#define HASH_ADD_TO_BKT(head,addhh)                                              \
--do {                                                                             \
-- head.count++;                                                                   \
-- (addhh)->hh_next = head.hh_head;                                                \
-- (addhh)->hh_prev = NULL;                                                        \
-- if (head.hh_head) { (head).hh_head->hh_prev = (addhh); }                        \
-- (head).hh_head=addhh;                                                           \
-- if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH)             \
--     && (addhh)->tbl->noexpand != 1) {                                           \
--       HASH_EXPAND_BUCKETS((addhh)->tbl);                                        \
-- }                                                                               \
--} while(0)
--
--/* remove an item from a given bucket */
--#define HASH_DEL_IN_BKT(hh,head,hh_del)                                          \
--    (head).count--;                                                              \
--    if ((head).hh_head == hh_del) {                                              \
--      (head).hh_head = hh_del->hh_next;                                          \
--    }                                                                            \
--    if (hh_del->hh_prev) {                                                       \
--        hh_del->hh_prev->hh_next = hh_del->hh_next;                              \
--    }                                                                            \
--    if (hh_del->hh_next) {                                                       \
--        hh_del->hh_next->hh_prev = hh_del->hh_prev;                              \
--    }                                                                
--
--/* Bucket expansion has the effect of doubling the number of buckets
-- * and redistributing the items into the new buckets. Ideally the
-- * items will distribute more or less evenly into the new buckets
-- * (the extent to which this is true is a measure of the quality of
-- * the hash function as it applies to the key domain). 
-- * 
-- * With the items distributed into more buckets, the chain length
-- * (item count) in each bucket is reduced. Thus by expanding buckets
-- * the hash keeps a bound on the chain length. This bounded chain 
-- * length is the essence of how a hash provides constant time lookup.
-- * 
-- * The calculation of tbl->ideal_chain_maxlen below deserves some
-- * explanation. First, keep in mind that we're calculating the ideal
-- * maximum chain length based on the *new* (doubled) bucket count.
-- * In fractions this is just n/b (n=number of items,b=new num buckets).
-- * Since the ideal chain length is an integer, we want to calculate 
-- * ceil(n/b). We don't depend on floating point arithmetic in this
-- * hash, so to calculate ceil(n/b) with integers we could write
-- * 
-- *      ceil(n/b) = (n/b) + ((n%b)?1:0)
-- * 
-- * and in fact a previous version of this hash did just that.
-- * But now we have improved things a bit by recognizing that b is
-- * always a power of two. We keep its base 2 log handy (call it lb),
-- * so now we can write this with a bit shift and logical AND:
-- * 
-- *      ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0)
-- * 
-- */
--#define HASH_EXPAND_BUCKETS(tbl)                                                 \
--do {                                                                             \
--    unsigned _he_bkt;                                                            \
--    unsigned _he_bkt_i;                                                          \
--    struct UT_hash_handle *_he_thh, *_he_hh_nxt;                                 \
--    UT_hash_bucket *_he_new_buckets, *_he_newbkt;                                \
--    _he_new_buckets = (UT_hash_bucket*)uthash_malloc(                            \
--             2 * tbl->num_buckets * sizeof(struct UT_hash_bucket));              \
--    if (!_he_new_buckets) { uthash_fatal( "out of memory"); }                    \
--    memset(_he_new_buckets, 0,                                                   \
--            2 * tbl->num_buckets * sizeof(struct UT_hash_bucket));               \
--    tbl->ideal_chain_maxlen =                                                    \
--       (tbl->num_items >> (tbl->log2_num_buckets+1)) +                           \
--       ((tbl->num_items & ((tbl->num_buckets*2)-1)) ? 1 : 0);                    \
--    tbl->nonideal_items = 0;                                                     \
--    for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++)                \
--    {                                                                            \
--        _he_thh = tbl->buckets[ _he_bkt_i ].hh_head;                             \
--        while (_he_thh) {                                                        \
--           _he_hh_nxt = _he_thh->hh_next;                                        \
--           HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2, _he_bkt);            \
--           _he_newbkt = &(_he_new_buckets[ _he_bkt ]);                           \
--           if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) {                \
--             tbl->nonideal_items++;                                              \
--             _he_newbkt->expand_mult = _he_newbkt->count /                       \
--                                        tbl->ideal_chain_maxlen;                 \
--           }                                                                     \
--           _he_thh->hh_prev = NULL;                                              \
--           _he_thh->hh_next = _he_newbkt->hh_head;                               \
--           if (_he_newbkt->hh_head) _he_newbkt->hh_head->hh_prev =               \
--                _he_thh;                                                         \
--           _he_newbkt->hh_head = _he_thh;                                        \
--           _he_thh = _he_hh_nxt;                                                 \
--        }                                                                        \
--    }                                                                            \
--    uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
--    tbl->num_buckets *= 2;                                                       \
--    tbl->log2_num_buckets++;                                                     \
--    tbl->buckets = _he_new_buckets;                                              \
--    tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ?         \
--        (tbl->ineff_expands+1) : 0;                                              \
--    if (tbl->ineff_expands > 1) {                                                \
--        tbl->noexpand=1;                                                         \
--        uthash_noexpand_fyi(tbl);                                                \
--    }                                                                            \
--    uthash_expand_fyi(tbl);                                                      \
--} while(0)
--
--
--/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */
--/* Note that HASH_SORT assumes the hash handle name to be hh. 
-- * HASH_SRT was added to allow the hash handle name to be passed in. */
--#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn)
--#define HASH_SRT(hh,head,cmpfcn)                                                 \
--do {                                                                             \
--  unsigned _hs_i;                                                                \
--  unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize;               \
--  struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail;            \
--  if (head) {                                                                    \
--      _hs_insize = 1;                                                            \
--      _hs_looping = 1;                                                           \
--      _hs_list = &((head)->hh);                                                  \
--      while (_hs_looping) {                                                      \
--          _hs_p = _hs_list;                                                      \
--          _hs_list = NULL;                                                       \
--          _hs_tail = NULL;                                                       \
--          _hs_nmerges = 0;                                                       \
--          while (_hs_p) {                                                        \
--              _hs_nmerges++;                                                     \
--              _hs_q = _hs_p;                                                     \
--              _hs_psize = 0;                                                     \
--              for ( _hs_i = 0; _hs_i  < _hs_insize; _hs_i++ ) {                  \
--                  _hs_psize++;                                                   \
--                  _hs_q = (UT_hash_handle*)((_hs_q->next) ?                      \
--                          ((void*)((char*)(_hs_q->next) +                        \
--                          (head)->hh.tbl->hho)) : NULL);                         \
--                  if (! (_hs_q) ) break;                                         \
--              }                                                                  \
--              _hs_qsize = _hs_insize;                                            \
--              while ((_hs_psize > 0) || ((_hs_qsize > 0) && _hs_q )) {           \
--                  if (_hs_psize == 0) {                                          \
--                      _hs_e = _hs_q;                                             \
--                      _hs_q = (UT_hash_handle*)((_hs_q->next) ?                  \
--                              ((void*)((char*)(_hs_q->next) +                    \
--                              (head)->hh.tbl->hho)) : NULL);                     \
--                      _hs_qsize--;                                               \
--                  } else if ( (_hs_qsize == 0) || !(_hs_q) ) {                   \
--                      _hs_e = _hs_p;                                             \
--                      if (_hs_p){                                                \
--                        _hs_p = (UT_hash_handle*)((_hs_p->next) ?                \
--                                ((void*)((char*)(_hs_p->next) +                  \
--                                (head)->hh.tbl->hho)) : NULL);                   \
--                       }                                                         \
--                      _hs_psize--;                                               \
--                  } else if ((                                                   \
--                      cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
--                             DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
--                             ) <= 0) {                                           \
--                      _hs_e = _hs_p;                                             \
--                      if (_hs_p){                                                \
--                        _hs_p = (UT_hash_handle*)((_hs_p->next) ?                \
--                               ((void*)((char*)(_hs_p->next) +                   \
--                               (head)->hh.tbl->hho)) : NULL);                    \
--                       }                                                         \
--                      _hs_psize--;                                               \
--                  } else {                                                       \
--                      _hs_e = _hs_q;                                             \
--                      _hs_q = (UT_hash_handle*)((_hs_q->next) ?                  \
--                              ((void*)((char*)(_hs_q->next) +                    \
--                              (head)->hh.tbl->hho)) : NULL);                     \
--                      _hs_qsize--;                                               \
--                  }                                                              \
--                  if ( _hs_tail ) {                                              \
--                      _hs_tail->next = ((_hs_e) ?                                \
--                            ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL);          \
--                  } else {                                                       \
--                      _hs_list = _hs_e;                                          \
--                  }                                                              \
--                  if (_hs_e) {                                                   \
--                  _hs_e->prev = ((_hs_tail) ?                                    \
--                     ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL);              \
--                  }                                                              \
--                  _hs_tail = _hs_e;                                              \
--              }                                                                  \
--              _hs_p = _hs_q;                                                     \
--          }                                                                      \
--          if (_hs_tail){                                                         \
--            _hs_tail->next = NULL;                                               \
--          }                                                                      \
--          if ( _hs_nmerges <= 1 ) {                                              \
--              _hs_looping=0;                                                     \
--              (head)->hh.tbl->tail = _hs_tail;                                   \
--              DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list));      \
--          }                                                                      \
--          _hs_insize *= 2;                                                       \
--      }                                                                          \
--      HASH_FSCK(hh,head);                                                        \
-- }                                                                               \
--} while (0)
--
--/* This function selects items from one hash into another hash. 
-- * The end result is that the selected items have dual presence 
-- * in both hashes. There is no copy of the items made; rather 
-- * they are added into the new hash through a secondary hash 
-- * hash handle that must be present in the structure. */
--#define HASH_SELECT(hh_dst, dst, hh_src, src, cond)                              \
--do {                                                                             \
--  unsigned _src_bkt, _dst_bkt;                                                   \
--  void *_last_elt=NULL, *_elt;                                                   \
--  UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL;                         \
--  ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst));                 \
--  if (src) {                                                                     \
--    for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) {     \
--      for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head;                \
--          _src_hh;                                                               \
--          _src_hh = _src_hh->hh_next) {                                          \
--          _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh);                       \
--          if (cond(_elt)) {                                                      \
--            _dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho);               \
--            _dst_hh->key = _src_hh->key;                                         \
--            _dst_hh->keylen = _src_hh->keylen;                                   \
--            _dst_hh->hashv = _src_hh->hashv;                                     \
--            _dst_hh->prev = _last_elt;                                           \
--            _dst_hh->next = NULL;                                                \
--            if (_last_elt_hh) { _last_elt_hh->next = _elt; }                     \
--            if (!dst) {                                                          \
--              DECLTYPE_ASSIGN(dst,_elt);                                         \
--              HASH_MAKE_TABLE(hh_dst,dst);                                       \
--            } else {                                                             \
--              _dst_hh->tbl = (dst)->hh_dst.tbl;                                  \
--            }                                                                    \
--            HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt);    \
--            HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh);            \
--            (dst)->hh_dst.tbl->num_items++;                                      \
--            _last_elt = _elt;                                                    \
--            _last_elt_hh = _dst_hh;                                              \
--          }                                                                      \
--      }                                                                          \
--    }                                                                            \
--  }                                                                              \
--  HASH_FSCK(hh_dst,dst);                                                         \
--} while (0)
--
--#define HASH_CLEAR(hh,head)                                                      \
--do {                                                                             \
--  if (head) {                                                                    \
--    uthash_free((head)->hh.tbl->buckets,                                         \
--                (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket));      \
--    HASH_BLOOM_FREE((head)->hh.tbl);                                             \
--    uthash_free((head)->hh.tbl, sizeof(UT_hash_table));                          \
--    (head)=NULL;                                                                 \
--  }                                                                              \
--} while(0)
--
--#define HASH_OVERHEAD(hh,head)                                                   \
-- (size_t)((((head)->hh.tbl->num_items   * sizeof(UT_hash_handle))   +            \
--           ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket))   +            \
--            (sizeof(UT_hash_table))                                 +            \
--            (HASH_BLOOM_BYTELEN)))
--
--#ifdef NO_DECLTYPE
--#define HASH_ITER(hh,head,el,tmp)                                                \
--for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL);       \
--  el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL)) 
--#else
--#define HASH_ITER(hh,head,el,tmp)                                                \
--for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);                 \
--  el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))
--#endif
--
--/* obtain a count of items in the hash */
--#define HASH_COUNT(head) HASH_CNT(hh,head) 
--#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
--
--typedef struct UT_hash_bucket {
--   struct UT_hash_handle *hh_head;
--   unsigned count;
--
--   /* expand_mult is normally set to 0. In this situation, the max chain length
--    * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
--    * the bucket's chain exceeds this length, bucket expansion is triggered). 
--    * However, setting expand_mult to a non-zero value delays bucket expansion
--    * (that would be triggered by additions to this particular bucket)
--    * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
--    * (The multiplier is simply expand_mult+1). The whole idea of this
--    * multiplier is to reduce bucket expansions, since they are expensive, in
--    * situations where we know that a particular bucket tends to be overused.
--    * It is better to let its chain length grow to a longer yet-still-bounded
--    * value, than to do an O(n) bucket expansion too often. 
--    */
--   unsigned expand_mult;
--
--} UT_hash_bucket;
--
--/* random signature used only to find hash tables in external analysis */
--#define HASH_SIGNATURE 0xa0111fe1
--#define HASH_BLOOM_SIGNATURE 0xb12220f2
--
--typedef struct UT_hash_table {
--   UT_hash_bucket *buckets;
--   unsigned num_buckets, log2_num_buckets;
--   unsigned num_items;
--   struct UT_hash_handle *tail; /* tail hh in app order, for fast append    */
--   ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
--
--   /* in an ideal situation (all buckets used equally), no bucket would have
--    * more than ceil(#items/#buckets) items. that's the ideal chain length. */
--   unsigned ideal_chain_maxlen;
--
--   /* nonideal_items is the number of items in the hash whose chain position
--    * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
--    * hash distribution; reaching them in a chain traversal takes >ideal steps */
--   unsigned nonideal_items;
--
--   /* ineffective expands occur when a bucket doubling was performed, but 
--    * afterward, more than half the items in the hash had nonideal chain
--    * positions. If this happens on two consecutive expansions we inhibit any
--    * further expansion, as it's not helping; this happens when the hash
--    * function isn't a good fit for the key domain. When expansion is inhibited
--    * the hash will still work, albeit no longer in constant time. */
--   unsigned ineff_expands, noexpand;
--
--   uint32_t signature; /* used only to find hash tables in external analysis */
--#ifdef HASH_BLOOM
--   uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
--   uint8_t *bloom_bv;
--   char bloom_nbits;
--#endif
--
--} UT_hash_table;
--
--typedef struct UT_hash_handle {
--   struct UT_hash_table *tbl;
--   void *prev;                       /* prev element in app order      */
--   void *next;                       /* next element in app order      */
--   struct UT_hash_handle *hh_prev;   /* previous hh in bucket order    */
--   struct UT_hash_handle *hh_next;   /* next hh in bucket order        */
--   void *key;                        /* ptr to enclosing struct's key  */
--   unsigned keylen;                  /* enclosing struct's key len     */
--   unsigned hashv;                   /* result of hash-fcn(key)        */
--} UT_hash_handle;
--
--#endif /* UTHASH_H */
--- 
-2.15.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.5.1.bb b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.5.8.bb
similarity index 91%
rename from meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.5.1.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.5.8.bb
index 06c1d67..768b593 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.5.1.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/mosquitto/mosquitto_1.5.8.bb
@@ -11,12 +11,11 @@
 DEPENDS = "uthash"
 
 SRC_URI = "http://mosquitto.org/files/source/mosquitto-${PV}.tar.gz \
-           file://0002-uthash-remove-in-tree-version.patch \
            file://mosquitto.init \
 "
 
-SRC_URI[md5sum] = "f98c99998a36a234f3a9d9b402b991db"
-SRC_URI[sha256sum] = "8557bc7ae34dfaf32a0fb56d2491b7a7f731269c88337227233013502df4d5b0"
+SRC_URI[md5sum] = "bbbcceb32db3657d9d436a8440a9db1c"
+SRC_URI[sha256sum] = "78d7e70c3794dc3a1d484b4f2f8d3addebe9c2da3f5a1cebe557f7d13beb0da4"
 
 inherit systemd update-rc.d useradd
 
@@ -37,9 +36,10 @@
     ${PACKAGECONFIG_CONFARGS} \
     STRIP=/bin/true \
     WITH_DOCS=no \
+    WITH_BUNDLED_DEPS=no \
 "
 
-export LIB_SUFFIX = "${@d.getVar('baselib', True).replace('lib', '')}"
+export LIB_SUFFIX = "${@d.getVar('baselib').replace('lib', '')}"
 
 do_install() {
     oe_runmake 'DESTDIR=${D}' install
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch
similarity index 81%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch
index 351f264..302c029 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch
@@ -1,4 +1,4 @@
-From 583f0448fb7e9aba2b410c06eec6f420b41a6a0c Mon Sep 17 00:00:00 2001
+From 3dc3d8e73bc430ea4e93e33f7b2a4b3e0ff175af Mon Sep 17 00:00:00 2001
 From: Pablo Saavedra <psaavedra@igalia.com>
 Date: Tue, 13 Mar 2018 17:36:20 +0100
 Subject: [PATCH] Fixed configure.ac: Fix pkgconfig sysroot locations
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/configure.ac b/configure.ac
-index 51e5eb6..c9d3e56 100644
+index 967eac0..b914219 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -572,7 +572,7 @@ if test "$have_jansson" = "yes"; then
+@@ -592,7 +592,7 @@ if test "$have_jansson" = "yes"; then
  	AC_DEFINE(WITH_JANSSON, 1, [Define if JANSSON is enabled])
  
  	AC_CHECK_TOOLS(READELF, [eu-readelf readelf])
@@ -20,6 +20,3 @@
  	JANSSON_SONAME=`$READELF -d $JANSSON_LIBDIR/libjansson.so |sed -n 's/.*SONAME.*\[[\([^]]*\)]]/\1/p'`
  
  	if test "$JANSSON_SONAME" = ""; then
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-Do-not-create-settings-settings-property-documentati.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch
similarity index 69%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-Do-not-create-settings-settings-property-documentati.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch
index c50293c..5581dd3 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0003-Do-not-create-settings-settings-property-documentati.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0002-Do-not-create-settings-settings-property-documentati.patch
@@ -13,15 +13,15 @@
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
 ---
- Makefile.am  | 20 --------------------
+ Makefile.am  | 11 -----------
  configure.ac |  5 -----
- 2 files changed, 25 deletions(-)
+ 2 files changed, 16 deletions(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index 1e100f6..d31e3c1 100644
+index b180466..1ab4658 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -1115,9 +1115,7 @@ EXTRA_DIST += \
+@@ -1298,9 +1298,7 @@ EXTRA_DIST += \
  if HAVE_INTROSPECTION
  
  libnm_noinst_data = \
@@ -31,7 +31,7 @@
  	libnm/nm-settings-keyfile-docs.xml \
  	libnm/nm-settings-ifcfg-rh-docs.xml
  
-@@ -3692,27 +3690,9 @@ $(clients_common_libnmc_base_la_OBJECTS): $(libnm_lib_h_pub_mkenums)
+@@ -3930,18 +3928,9 @@ $(clients_common_libnmc_base_la_OBJECTS): $(libnm_lib_h_pub_mkenums)
  $(clients_common_libnmc_base_la_OBJECTS): clients/common/.dirstamp
  
  clients_common_settings_doc_h = clients/common/settings-docs.h
@@ -40,16 +40,7 @@
 -	$(AM_V_GEN) $(XSLTPROC) --output $@ $< $(word 2,$^)
 -DISTCLEANFILES += $(clients_common_settings_doc_h)
 -check-local-settings-docs: $(clients_common_settings_doc_h)
--	@if test -z "$$NMTST_NO_CHECK_SETTINGS_DOCS" ; then \
--		if ! cmp -s "$(srcdir)/$(clients_common_settings_doc_h).in" "$(builddir)/$(clients_common_settings_doc_h)" ; then \
--			if test "$$NM_TEST_REGENERATE" == 1 ; then \
--				cp -f "$(builddir)/$(clients_common_settings_doc_h)" "$(srcdir)/$(clients_common_settings_doc_h).in"; \
--			else \
--				echo "The generated file \"$(builddir)/$(clients_common_settings_doc_h)\" differs from the source file \"$(srcdir)/$(clients_common_settings_doc_h).in\". You probably should copy the generated file over to the source file. You can skip this test by setting \$$NMTST_NO_CHECK_SETTINGS_DOCS=yes". You can also automatically copy the file by rerunning the test with \$$NM_TEST_REGENERATE=1 ; \
--				false; \
--			fi; \
--		fi;\
--	fi
+-	$(srcdir)/tools/check-settings-docs.sh "$(srcdir)" "$(builddir)" "$(clients_common_settings_doc_h)"
 -check_local += check-local-settings-docs
 -else
  $(clients_common_settings_doc_h): $(clients_common_settings_doc_h).in clients/common/.dirstamp
@@ -60,10 +51,10 @@
  	$(clients_common_settings_doc_h) \
  	$(clients_common_settings_doc_h).in
 diff --git a/configure.ac b/configure.ac
-index 79dc3b9..23d14a6 100644
+index b914219..872c292 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1195,11 +1195,6 @@ GTK_DOC_CHECK(1.0)
+@@ -1215,11 +1215,6 @@ GTK_DOC_CHECK(1.0)
  # check if we can build setting property documentation
  build_docs=no
  if test -n "$INTROSPECTION_MAKEFILE"; then
@@ -76,5 +67,5 @@
  	if test -z "$PERL"; then
  		AC_MSG_ERROR([--enable-introspection requires perl])
 -- 
-2.14.5
+2.20.1
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch
similarity index 83%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch
index 0c415bc..555e5ff 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch
@@ -1,4 +1,4 @@
-From 3f4b6319701834182304c4079119780f4ae5b49b Mon Sep 17 00:00:00 2001
+From b2cdab746ef64bc25ba0b9cff596ebdddd6e8dc6 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 7 Nov 2018 11:30:44 -0800
 Subject: [PATCH] Do not include net/ethernet.h and linux/if_ether.h
@@ -7,6 +7,7 @@
 removing them still keeps it working so it seems they are redundant
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  shared/n-acd/src/n-acd.c              | 1 -
  src/platform/wpan/nm-wpan-utils.h     | 2 --
@@ -14,19 +15,19 @@
  3 files changed, 5 deletions(-)
 
 diff --git a/shared/n-acd/src/n-acd.c b/shared/n-acd/src/n-acd.c
-index 9164f95..9538e50 100644
+index def56a2..dd4eb78 100644
 --- a/shared/n-acd/src/n-acd.c
 +++ b/shared/n-acd/src/n-acd.c
-@@ -23,7 +23,6 @@
- #include <errno.h>
+@@ -11,7 +11,6 @@
+ #include <inttypes.h>
  #include <limits.h>
- #include <linux/filter.h>
--#include <linux/if_ether.h>
  #include <linux/if_packet.h>
- #include <net/ethernet.h>
- #include <netinet/if_ether.h>
+-#include <netinet/if_ether.h>
+ #include <netinet/in.h>
+ #include <stdlib.h>
+ #include <string.h>
 diff --git a/src/platform/wpan/nm-wpan-utils.h b/src/platform/wpan/nm-wpan-utils.h
-index f7d0c03..e1c81f5 100644
+index 1b54ec4..ed39938 100644
 --- a/src/platform/wpan/nm-wpan-utils.h
 +++ b/src/platform/wpan/nm-wpan-utils.h
 @@ -20,8 +20,6 @@
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-musl-basic.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-musl-basic.patch
deleted file mode 100644
index 00dda5b..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0001-musl-basic.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From e92de7409a3e107f90d108a9c5d49bd0418296dd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Thu, 22 Mar 2018 17:54:10 +0100
-Subject: [PATCH] Usual fix for musl libc
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Stolen from [1] and prettyfied slightly
-
-[1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
----
- src/systemd/src/basic/stdio-util.h | 2 ++
- src/systemd/src/basic/util.h       | 5 +++++
- 2 files changed, 7 insertions(+)
-
-diff --git a/src/systemd/src/basic/stdio-util.h b/src/systemd/src/basic/stdio-util.h
-index 73c0327..e1ce64f 100644
---- a/src/systemd/src/basic/stdio-util.h
-+++ b/src/systemd/src/basic/stdio-util.h
-@@ -1,7 +1,9 @@
- /* SPDX-License-Identifier: LGPL-2.1+ */
- #pragma once
- 
-+#if defined(__GLIBC__)
- #include <printf.h>
-+#endif
- #include <stdarg.h>
- #include <stdio.h>
- #include <sys/types.h>
-diff --git a/src/systemd/src/basic/util.h b/src/systemd/src/basic/util.h
-index b31dfd1..9b7032c 100644
---- a/src/systemd/src/basic/util.h
-+++ b/src/systemd/src/basic/util.h
-@@ -28,6 +28,11 @@
- #include "missing.h"
- #include "time-util.h"
- 
-+#if !defined(__GLIBC__)
-+typedef int (*__compar_fn_t) (const void*, const void*);
-+typedef __compar_fn_t comparison_fn_t;
-+#endif
-+
- size_t page_size(void) _pure_;
- #define PAGE_ALIGN(l) ALIGN_TO((l), page_size())
- 
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch
similarity index 84%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch
index 49a0735..5c59208 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/0001-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch
@@ -1,28 +1,29 @@
-From 18f71c1b48730b8602826517f2b5b088283ae948 Mon Sep 17 00:00:00 2001
+From 32dc6cab58912add5bc6495558538953d9344c36 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Fri, 31 Mar 2017 16:48:00 -0700
 Subject: [PATCH] sd-lldp.h: Remove net/ethernet.h seems to be over specified
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  src/systemd/src/libsystemd-network/sd-lldp.c | 1 +
  src/systemd/src/systemd/sd-lldp.h            | 2 +-
  2 files changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/src/systemd/src/libsystemd-network/sd-lldp.c b/src/systemd/src/libsystemd-network/sd-lldp.c
-index 31e2448..7721cc2 100644
+index 741128e..62914ae 100644
 --- a/src/systemd/src/libsystemd-network/sd-lldp.c
 +++ b/src/systemd/src/libsystemd-network/sd-lldp.c
 @@ -3,6 +3,7 @@
- #include "nm-sd-adapt.h"
+ #include "nm-sd-adapt-core.h"
  
  #include <arpa/inet.h>
 +#include <net/ethernet.h>
  #include <linux/sockios.h>
+ #include <sys/ioctl.h>
  
- #include "sd-lldp.h"
 diff --git a/src/systemd/src/systemd/sd-lldp.h b/src/systemd/src/systemd/sd-lldp.h
-index 3f35eeb..61b0e45 100644
+index bf3afad..4cace87 100644
 --- a/src/systemd/src/systemd/sd-lldp.h
 +++ b/src/systemd/src/systemd/sd-lldp.h
 @@ -18,7 +18,7 @@
@@ -34,6 +35,3 @@
  #include <sys/types.h>
  
  #include "sd-event.h"
--- 
-2.14.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-basic.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-basic.patch
new file mode 100644
index 0000000..8d90548
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-basic.patch
@@ -0,0 +1,56 @@
+From ff1a5b849755db67b1778940fff92d6eb8b8b050 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+Date: Thu, 22 Mar 2018 17:54:10 +0100
+Subject: [PATCH] Usual fix for musl libc
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream-Status: Pending
+
+Stolen from [1] and prettyfied slightly
+
+[1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
+
+Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
+---
+ shared/systemd/src/basic/stdio-util.h | 2 ++
+ shared/systemd/src/basic/util.h       | 5 +++++
+ 2 files changed, 7 insertions(+)
+
+diff --git a/shared/systemd/src/basic/stdio-util.h b/shared/systemd/src/basic/stdio-util.h
+index dc67b6e..6336243 100644
+--- a/shared/systemd/src/basic/stdio-util.h
++++ b/shared/systemd/src/basic/stdio-util.h
+@@ -1,7 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+ 
++#if defined(__GLIBC__)
+ #include <printf.h>
++#endif
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+diff --git a/shared/systemd/src/basic/util.h b/shared/systemd/src/basic/util.h
+index dc33d66..8ee2d64 100644
+--- a/shared/systemd/src/basic/util.h
++++ b/shared/systemd/src/basic/util.h
+@@ -27,6 +27,11 @@
+ #include "macro.h"
+ #include "time-util.h"
+ 
++#if !defined(__GLIBC__)
++typedef int (*__compar_fn_t) (const void*, const void*);
++typedef __compar_fn_t comparison_fn_t;
++#endif
++
+ size_t page_size(void) _pure_;
+ #define PAGE_ALIGN(l) ALIGN_TO((l), page_size())
+ 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-musl-dlopen-configure-ac.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-dlopen-configure-ac.patch
similarity index 88%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-musl-dlopen-configure-ac.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-dlopen-configure-ac.patch
index c162c1d..419e1be 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-musl-dlopen-configure-ac.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-dlopen-configure-ac.patch
@@ -1,4 +1,4 @@
-From 57239fda56b68a8f3e413f7b6af5290ba0d86636 Mon Sep 17 00:00:00 2001
+From 7743ea63fbe572b1f82db7d399fe9c5c99521432 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Thu, 22 Mar 2018 18:18:06 +0100
 Subject: [PATCH] musl: dlopen is included so LD_LIBS="" instead of
@@ -14,15 +14,16 @@
 [1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
 ---
  configure.ac | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/configure.ac b/configure.ac
-index 487a266..96ae4f7 100644
+index b914219..1b2b0ff 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -235,6 +235,7 @@ dnl
+@@ -241,6 +241,7 @@ dnl
  dnl Checks for libdl - on certain platforms its part of libc
  dnl
  AC_SEARCH_LIBS([dlopen], [dl dld], [], [ac_cv_search_dlopen=])
@@ -30,6 +31,3 @@
  AC_SUBST([DL_LIBS], "$ac_cv_search_dlopen")
  
  PKG_CHECK_MODULES(GLIB, [gio-unix-2.0 >= 2.37.6 gmodule-2.0],
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-network-support.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-network-support.patch
similarity index 69%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-network-support.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-network-support.patch
index 9a58c0e..45f607f 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0003-musl-network-support.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-network-support.patch
@@ -1,4 +1,4 @@
-From 714b4731a238653e9c7d885c0dee10677b0a4df3 Mon Sep 17 00:00:00 2001
+From 70ecbc01874bf2f8603ccbdfda634cac0bb83d93 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Thu, 22 Mar 2018 18:24:07 +0100
 Subject: [PATCH] musl: network support
@@ -13,14 +13,15 @@
 [1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
 ---
- libnm-core/nm-utils.h               | 4 ++++
- src/platform/wifi/nm-wifi-utils.h   | 4 ++++
- src/systemd/src/basic/socket-util.h | 5 +++++
- 3 files changed, 13 insertions(+)
+ libnm-core/nm-utils.h                  | 4 ++++
+ shared/systemd/src/basic/socket-util.h | 6 ++++++
+ src/platform/wifi/nm-wifi-utils.h      | 4 ++++
+ 3 files changed, 14 insertions(+)
 
 diff --git a/libnm-core/nm-utils.h b/libnm-core/nm-utils.h
-index df9284b..2bcf4b8 100644
+index 2b5baba..976850c 100644
 --- a/libnm-core/nm-utils.h
 +++ b/libnm-core/nm-utils.h
 @@ -30,7 +30,11 @@
@@ -35,8 +36,25 @@
  #include <linux/if_infiniband.h>
  
  #include "nm-core-enum-types.h"
+diff --git a/shared/systemd/src/basic/socket-util.h b/shared/systemd/src/basic/socket-util.h
+index d2246a8..76f257f 100644
+--- a/shared/systemd/src/basic/socket-util.h
++++ b/shared/systemd/src/basic/socket-util.h
+@@ -13,6 +13,12 @@
+ #include <sys/types.h>
+ #include <sys/un.h>
+ 
++#if !defined(__GLIBC__)
++/* SIOCGSTAMPNS from linux/asm-generic.h
++ * for src/systemd/src/libsystemd-network/sd-lldp.c */
++#include <linux/sockios.h>
++#endif
++
+ #include "macro.h"
+ #include "missing_socket.h"
+ #include "sparse-endian.h"
 diff --git a/src/platform/wifi/nm-wifi-utils.h b/src/platform/wifi/nm-wifi-utils.h
-index 705717b..da3edc4 100644
+index 36148b5..d282eb2 100644
 --- a/src/platform/wifi/nm-wifi-utils.h
 +++ b/src/platform/wifi/nm-wifi-utils.h
 @@ -22,7 +22,11 @@
@@ -51,22 +69,3 @@
  
  #include "nm-dbus-interface.h"
  #include "nm-setting-wireless.h"
-diff --git a/src/systemd/src/basic/socket-util.h b/src/systemd/src/basic/socket-util.h
-index d7e2d85..d109c84 100644
---- a/src/systemd/src/basic/socket-util.h
-+++ b/src/systemd/src/basic/socket-util.h
-@@ -11,6 +11,11 @@
- #include <linux/netlink.h>
- #include <linux/if_infiniband.h>
- #include <linux/if_packet.h>
-+#if !defined(__GLIBC__)
-+/* SIOCGSTAMPNS from linux/asm-generic.h
-+ * for src/systemd/src/libsystemd-network/sd-lldp.c */
-+#include <linux/sockios.h>
-+#endif
- 
- #include "macro.h"
- #include "missing.h"
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-process-util.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-musl-process-util.patch
similarity index 79%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-process-util.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-musl-process-util.patch
index 9e5c943..525e359 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0004-musl-process-util.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-musl-process-util.patch
@@ -1,4 +1,4 @@
-From d513c8bfc982dbd976617178b040c512c95710b6 Mon Sep 17 00:00:00 2001
+From 4f2fb1e1f785bad22df8f3d96cb4792acf21f315 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Thu, 25 Oct 2018 09:57:07 +0200
 Subject: [PATCH] musl: process-util
@@ -13,14 +13,15 @@
 [1] https://github.com/voidlinux/void-packages/tree/master/srcpkgs/NetworkManager/patches
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
 ---
- src/systemd/src/basic/process-util.c | 9 +++++++++
+ shared/systemd/src/basic/process-util.c | 9 +++++++++
  1 file changed, 9 insertions(+)
 
-diff --git a/src/systemd/src/basic/process-util.c b/src/systemd/src/basic/process-util.c
-index 1412f03..45f5049 100644
---- a/src/systemd/src/basic/process-util.c
-+++ b/src/systemd/src/basic/process-util.c
+diff --git a/shared/systemd/src/basic/process-util.c b/shared/systemd/src/basic/process-util.c
+index b0afb5c..7adc8bd 100644
+--- a/shared/systemd/src/basic/process-util.c
++++ b/shared/systemd/src/basic/process-util.c
 @@ -21,6 +21,9 @@
  #include <sys/wait.h>
  #include <syslog.h>
@@ -31,7 +32,7 @@
  #if 0 /* NM_IGNORED */
  #if HAVE_VALGRIND_VALGRIND_H
  #include <valgrind/valgrind.h>
-@@ -1153,11 +1156,13 @@ void reset_cached_pid(void) {
+@@ -1168,11 +1171,13 @@ void reset_cached_pid(void) {
          cached_pid = CACHED_PID_UNSET;
  }
  
@@ -40,12 +41,12 @@
   * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
   * libpthread, as it is part of glibc anyway. */
  extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
- extern void* __dso_handle __attribute__ ((__weak__));
+ extern void* __dso_handle _weak_;
 +#endif
  
  pid_t getpid_cached(void) {
          static bool installed = false;
-@@ -1186,7 +1191,11 @@ pid_t getpid_cached(void) {
+@@ -1201,7 +1206,11 @@ pid_t getpid_cached(void) {
                           * only half-documented (glibc doesn't document it but LSB does — though only superficially)
                           * we'll check for errors only in the most generic fashion possible. */
  
@@ -57,6 +58,3 @@
                                  /* OOM? Let's try again later */
                                  cached_pid = CACHED_PID_UNSET;
                                  return new_pid;
--- 
-2.14.5
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-avoid-further-conflicts-by-including-net-ethern.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch
similarity index 91%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-avoid-further-conflicts-by-including-net-ethern.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch
index 6bca95e..211a2da 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0005-musl-avoid-further-conflicts-by-including-net-ethern.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch
@@ -1,4 +1,4 @@
-From b3b4fe35018c98ad176719b2d9ffb867974fc7c3 Mon Sep 17 00:00:00 2001
+From 4232a34064e33b52f07cca51b902b93699800f72 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Mon, 16 Apr 2018 14:45:44 +0200
 Subject: [PATCH] musl: avoid further conflicts by including net/ethernet.h
@@ -9,6 +9,7 @@
 Upstream-Status: Pending
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
 ---
  src/systemd/src/systemd/sd-dhcp-client.h  | 2 ++
  src/systemd/src/systemd/sd-dhcp-lease.h   | 2 ++
@@ -17,7 +18,7 @@
  4 files changed, 8 insertions(+)
 
 diff --git a/src/systemd/src/systemd/sd-dhcp-client.h b/src/systemd/src/systemd/sd-dhcp-client.h
-index e388552..9c4dde8 100644
+index bd0d429..c935fe1 100644
 --- a/src/systemd/src/systemd/sd-dhcp-client.h
 +++ b/src/systemd/src/systemd/sd-dhcp-client.h
 @@ -20,7 +20,9 @@
@@ -29,9 +30,9 @@
 +#endif
  #include <netinet/in.h>
  #include <sys/types.h>
- 
+ #include <stdbool.h>
 diff --git a/src/systemd/src/systemd/sd-dhcp-lease.h b/src/systemd/src/systemd/sd-dhcp-lease.h
-index 2a60145..19d1814 100644
+index d299c79..991e67e 100644
 --- a/src/systemd/src/systemd/sd-dhcp-lease.h
 +++ b/src/systemd/src/systemd/sd-dhcp-lease.h
 @@ -19,7 +19,9 @@
@@ -45,7 +46,7 @@
  #include <sys/types.h>
  
 diff --git a/src/systemd/src/systemd/sd-dhcp6-client.h b/src/systemd/src/systemd/sd-dhcp6-client.h
-index fa36dca..2d25010 100644
+index 43d38f5..57ab487 100644
 --- a/src/systemd/src/systemd/sd-dhcp6-client.h
 +++ b/src/systemd/src/systemd/sd-dhcp6-client.h
 @@ -20,7 +20,9 @@
@@ -55,9 +56,9 @@
 +#if defined(__GLIBC__)
  #include <net/ethernet.h>
 +#endif
- #include <stdbool.h>
  #include <sys/types.h>
  
+ #include "sd-dhcp6-lease.h"
 diff --git a/src/systemd/src/systemd/sd-ipv4ll.h b/src/systemd/src/systemd/sd-ipv4ll.h
 index 71bd4cf..1c667ba 100644
 --- a/src/systemd/src/systemd/sd-ipv4ll.h
@@ -72,6 +73,3 @@
  #include <netinet/in.h>
  
  #include "sd-event.h"
--- 
-2.14.5
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-Add-a-strndupa-replacement-for-musl.patch b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0008-Add-a-strndupa-replacement-for-musl.patch
similarity index 60%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-Add-a-strndupa-replacement-for-musl.patch
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0008-Add-a-strndupa-replacement-for-musl.patch
index 023a4d9..8858101 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0006-Add-a-strndupa-replacement-for-musl.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0008-Add-a-strndupa-replacement-for-musl.patch
@@ -1,4 +1,4 @@
-From 6db6596e450062601d18b2ae812a4a58d2e03a53 Mon Sep 17 00:00:00 2001
+From cdd69321ec97ed19e66a747a968a1637a251b9e6 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Mon, 16 Apr 2018 15:07:20 +0200
 Subject: [PATCH] Add a strndupa replacement for musl
@@ -9,15 +9,16 @@
 Upstream-Status: Pending
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
+
 ---
- src/systemd/src/basic/in-addr-util.c | 1 +
- src/systemd/src/basic/string-util.h  | 5 +++++
+ shared/systemd/src/basic/in-addr-util.c | 1 +
+ shared/systemd/src/basic/string-util.h  | 5 +++++
  2 files changed, 6 insertions(+)
 
-diff --git a/src/systemd/src/basic/in-addr-util.c b/src/systemd/src/basic/in-addr-util.c
-index 2a02d90..a57c360 100644
---- a/src/systemd/src/basic/in-addr-util.c
-+++ b/src/systemd/src/basic/in-addr-util.c
+diff --git a/shared/systemd/src/basic/in-addr-util.c b/shared/systemd/src/basic/in-addr-util.c
+index 5ced350..c6b52b8 100644
+--- a/shared/systemd/src/basic/in-addr-util.c
++++ b/shared/systemd/src/basic/in-addr-util.c
 @@ -13,6 +13,7 @@
  #include "in-addr-util.h"
  #include "macro.h"
@@ -26,11 +27,11 @@
  #include "util.h"
  
  bool in4_addr_is_null(const struct in_addr *a) {
-diff --git a/src/systemd/src/basic/string-util.h b/src/systemd/src/basic/string-util.h
-index 4c94b18..a6dc446 100644
---- a/src/systemd/src/basic/string-util.h
-+++ b/src/systemd/src/basic/string-util.h
-@@ -26,6 +26,11 @@
+diff --git a/shared/systemd/src/basic/string-util.h b/shared/systemd/src/basic/string-util.h
+index 38070ab..6b918e0 100644
+--- a/shared/systemd/src/basic/string-util.h
++++ b/shared/systemd/src/basic/string-util.h
+@@ -27,6 +27,11 @@
  #define strcaseeq(a,b) (strcasecmp((a),(b)) == 0)
  #define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0)
  
@@ -42,6 +43,3 @@
  int strcmp_ptr(const char *a, const char *b) _pure_;
  
  static inline bool streq_ptr(const char *a, const char *b) {
--- 
-2.14.3
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.14.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.16.0.bb
similarity index 77%
rename from meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.14.4.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.16.0.bb
index f21600e..bdf60ee 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.14.4.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.16.0.bb
@@ -5,7 +5,7 @@
 LICENSE = "GPLv2+"
 LIC_FILES_CHKSUM = "file://COPYING;md5=cbbffd568227ada506640fe950a4823b \
                     file://libnm-util/COPYING;md5=1c4fa765d6eb3cd2fbd84344a1b816cd \
-                    file://docs/api/html/license.html;md5=2d56a1b0c42e388aa86aef59b154e8c3 \
+                    file://docs/api/html/license.html;md5=233931303ef80eded167add1f60a50c1 \
 "
 
 DEPENDS = " \
@@ -16,7 +16,6 @@
     util-linux \
     libndp \
     libnewt \
-    polkit \
     jansson \
     curl \
 "
@@ -25,19 +24,19 @@
 
 SRC_URI = " \
     ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
-    file://0001-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch \
-    file://0002-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch \
-    file://0003-Do-not-create-settings-settings-property-documentati.patch \
-    file://0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch \
-    file://musl/0001-musl-basic.patch \
-    file://musl/0002-musl-dlopen-configure-ac.patch \
-    file://musl/0003-musl-network-support.patch \
-    file://musl/0004-musl-process-util.patch \
-    file://musl/0005-musl-avoid-further-conflicts-by-including-net-ethern.patch \
-    file://musl/0006-Add-a-strndupa-replacement-for-musl.patch \
+    file://0001-Fixed-configure.ac-Fix-pkgconfig-sysroot-locations.patch \
+    file://0002-Do-not-create-settings-settings-property-documentati.patch \
+    file://musl/0001-Do-not-include-net-ethernet.h-and-linux-if_ether.h.patch \
+    file://musl/0002-sd-lldp.h-Remove-net-ethernet.h-seems-to-be-over-spe.patch \
+    file://musl/0003-musl-basic.patch \
+    file://musl/0004-musl-dlopen-configure-ac.patch \
+    file://musl/0005-musl-network-support.patch \
+    file://musl/0006-musl-process-util.patch \
+    file://musl/0007-musl-avoid-further-conflicts-by-including-net-ethern.patch \
+    file://musl/0008-Add-a-strndupa-replacement-for-musl.patch \
 "
-SRC_URI[md5sum] = "54ce62f0aa18ef6c5e754eaac47494ac"
-SRC_URI[sha256sum] = "35a3ede4c7d12d6212033c9e44cb82b7692f38063b53a067567f02f5937c8c18"
+SRC_URI[md5sum] = "10abacaafb162a67d2942adf03e7e9e4"
+SRC_URI[sha256sum] = "8e962833b6ca03edda1bc57ed6614a7b8c2339531b44acef098d05f2324c5d2c"
 
 UPSTREAM_CHECK_URI = "${GNOME_MIRROR}/NetworkManager/1.10/"
 UPSTREAM_CHECK_REGEX = "NetworkManager\-(?P<pver>1\.10(\.\d+)+).tar.xz"
@@ -69,13 +68,13 @@
 PACKAGECONFIG ??= "nss ifupdown dhclient dnsmasq \
     ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \
     ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'wifi', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit', d)} \
 "
 PACKAGECONFIG[systemd] = " \
-    --with-systemdsystemunitdir=${systemd_unitdir}/system --with-session-tracking=systemd --enable-polkit, \
+    --with-systemdsystemunitdir=${systemd_unitdir}/system --with-session-tracking=systemd, \
     --without-systemdsystemunitdir, \
-    polkit \
 "
+PACKAGECONFIG[polkit] = "--enable-polkit --enable-polkit-agent,--disable-polkit --disable-polkit-agent,polkit"
 PACKAGECONFIG[bluez5] = "--enable-bluez5-dun,--disable-bluez5-dun,bluez5"
 # consolekit is not picked by shlibs, so add it to RDEPENDS too
 PACKAGECONFIG[consolekit] = "--with-session-tracking=consolekit,,consolekit,consolekit"
@@ -137,7 +136,7 @@
     ${mandir}/man1/nmtui* \
 "
 
-SYSTEMD_SERVICE_${PN} = "NetworkManager.service NetworkManager-dispatcher.service"
+SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'NetworkManager.service NetworkManager-dispatcher.service', '', d)}"
 
 do_install_append() {
     rm -rf ${D}/run ${D}${localstatedir}/run
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_git.bb
index c944144..050a283 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openconnect/openconnect_git.bb
@@ -2,7 +2,11 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING.LGPL;md5=243b725d71bb5df4a1e5920b344b86ad"
 
+SRC_URI = "git://git.infradead.org/users/dwmw2/openconnect.git"
+SRCREV = "6487ee8763e1b6345718684909aca970befbc49d"
+
 DEPENDS = "vpnc libxml2 krb5 gettext-native"
+RDEPENDS_${PN} = "bash python"
 
 PACKAGECONFIG ??= "gnutls lz4 libproxy"
 
@@ -14,10 +18,7 @@
 # not config defaults
 PACKAGECONFIG[pcsc-lite] = "--with-libpcsclite,--without-libpcsclite,pcsc-lite,"
 
-PV = "7.08"
-
-SRCREV = "9697bea0e50952cab57063238b43a7099e498cbb"
-SRC_URI = "git://git.infradead.org/users/dwmw2/openconnect.git"
+PV = "8.02"
 
 S = "${WORKDIR}/git"
 
@@ -25,3 +26,8 @@
 
 EXTRA_OECONF += "--with-vpnc-script=${SYSROOT_DESTDIR}${sysconfdir}/vpnc/vpnc-script \
                  --disable-static"
+
+do_configure_append() {
+    # script has /usr/bin/python2 path hardcoded
+    sed -i -e 's=python2\.*=python=g' ${S}/trojans/tncc-wrapper.py
+}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/python-networkmanager/python-networkmanager_2.0.1.bb b/meta-openembedded/meta-networking/recipes-connectivity/python-networkmanager/python-networkmanager_2.1.bb
similarity index 70%
rename from meta-openembedded/meta-networking/recipes-connectivity/python-networkmanager/python-networkmanager_2.0.1.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/python-networkmanager/python-networkmanager_2.1.bb
index 4e41aa5..3aa41f1 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/python-networkmanager/python-networkmanager_2.0.1.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/python-networkmanager/python-networkmanager_2.1.bb
@@ -4,8 +4,8 @@
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=8d8bac174bf8422b151200e6cc78ebe4"
 
-SRC_URI[md5sum] = "5fc644a65463031295c6b7dd51a0f1bd"
-SRC_URI[sha256sum] = "bc36507506ad29bfdac941b0987ebd1cc9633c9a9291d7378e229e4515a0a517"
+SRC_URI[md5sum] = "f638d854a3639fb37c0e06d1092a771e"
+SRC_URI[sha256sum] = "aef1e34d98d7bec7cc368e0ca0f2e97493f9b5ebe6d7103f8f6460cfca3dc6fc"
 
 PYPI_PACKAGE = "python-networkmanager"
 inherit pypi setuptools
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.8.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.8.4.bb
index f1aaeb8..e86ed96 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.8.4.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.8.4.bb
@@ -193,15 +193,15 @@
 
 python samba_populate_packages() {
     def module_hook(file, pkg, pattern, format, basename):
-        pn = d.getVar('PN', True)
+        pn = d.getVar('PN')
         d.appendVar('RRECOMMENDS_%s-base' % pn, ' %s' % pkg)
 
-    mlprefix = d.getVar('MLPREFIX', True) or ''
+    mlprefix = d.getVar('MLPREFIX') or ''
     pam_libdir = d.expand('${base_libdir}/security')
     pam_pkgname = mlprefix + 'pam-plugin%s'
     do_split_packages(d, pam_libdir, '^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True)
 
-    libdir = d.getVar('libdir', True)
+    libdir = d.getVar('libdir')
     do_split_packages(d, libdir, '^lib(.*)\.so\..*$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True, allow_links=True)
     pkglibdir = '%s/samba' % libdir
     do_split_packages(d, pkglibdir, '^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True)
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.11.1.bb b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.11.1.bb
index a99138d..c2eb95f 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.11.1.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/snort/snort_2.9.11.1.bb
@@ -72,7 +72,7 @@
     mkdir -p ${D}${localstatedir}/log/snort
     install -d ${D}/var/log/snort
 
-    sed -i 's/-fdebug-prefix-map[^ ]*//g; s#${STAGING_DIR_TARGET}##g' ${D}${libdir}/pkgconfig/*.pc
+    sed -i -e 's|-fdebug-prefix-map[^ ]*||g; s|-fmacro-prefix-map[^ ]*||g; s|${STAGING_DIR_TARGET}||g' ${D}${libdir}/pkgconfig/*.pc
 }
 
 FILES_${PN} += " \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.10.24.bb b/meta-openembedded/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2019.03.01.bb
similarity index 91%
rename from meta-openembedded/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.10.24.bb
rename to meta-openembedded/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2019.03.01.bb
index e1aa9a5..7b7de58 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2018.10.24.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/wireless-regdb/wireless-regdb_2019.03.01.bb
@@ -5,8 +5,8 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=07c4f6dea3845b02a18dc00c8c87699c"
 
 SRC_URI = "https://www.kernel.org/pub/software/network/${BPN}/${BP}.tar.xz"
-SRC_URI[md5sum] = "b81bd1f6525a4806a707881aa3dda63f"
-SRC_URI[sha256sum] = "0d3e845ac77d21aac9b88642c3dd043a83e3920d706b63d5e5c31dffdbec9116"
+SRC_URI[md5sum] = "b5eb2d0cc23f5e495a59405e34ce437f"
+SRC_URI[sha256sum] = "3a4e6f7006599bc5764f86e1e86422710da13ad80e0242147b61c6855ebc915f"
 
 inherit bin_package allarch
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/files/0001-fix-no-rule-to-make-cyassl-options.h.patch b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/files/0001-fix-no-rule-to-make-cyassl-options.h.patch
deleted file mode 100644
index f304d93..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/files/0001-fix-no-rule-to-make-cyassl-options.h.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From fb490136cf8f2456cfe13b0b4f796e6c155e75dc Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-Date: Wed, 30 Aug 2017 03:02:32 -0400
-Subject: [PATCH] fix no rule to make cyassl/options.h
-
-Upstream-Status: Pending
-
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- configure.ac | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/configure.ac b/configure.ac
-index 395d75d..d4a3880 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -3684,6 +3684,7 @@ AC_CONFIG_FILES([wolfssl/options.h])
- #fi
- AC_CONFIG_FILES([support/wolfssl.pc])
- AC_CONFIG_FILES([rpm/spec])
-+AC_CONFIG_FILES([cyassl/options.h])
- 
- AX_CREATE_GENERIC_CONFIG
- AX_AM_JOBSERVER([yes])
--- 
-2.8.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.14.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.14.4.bb
deleted file mode 100644
index dc9094d..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.14.4.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "wolfSSL Lightweight, Embedded SSL Library"
-DESCRIPTION = "wolfSSL, formerly CyaSSL, is a lightweight SSL library written in C and \
-               optimized for embedded and RTOS environments. It can be \
-               Up to 20 times smaller than OpenSSL while still supporting \
-               a full TLS 1.2 client and server."
-HOMEPAGE = "http://www.wolfssl.com/yaSSL/Products-wolfssl.html"
-BUGTRACKER = "http://github.com/wolfssl/wolfssl/issues"
-SECTION = "libs"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-PROVIDES += "cyassl"
-RPROVIDES_${PN} = "cyassl"
-
-S = "${WORKDIR}/git"
-SRCREV = "1196a3b64d9fabffc8273b87f6f69ac0e75d2eb7"
-SRC_URI = "git://github.com/wolfSSL/wolfssl.git;protocol=https; \
-           file://0001-fix-no-rule-to-make-cyassl-options.h.patch \
-          "
-
-inherit autotools
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.7.bb b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.7.bb
new file mode 100644
index 0000000..0a0a607
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_3.15.7.bb
@@ -0,0 +1,21 @@
+SUMMARY = "wolfSSL Lightweight Embedded SSL/TLS Library"
+DESCRIPTION = "wolfSSL, formerly CyaSSL, is a lightweight SSL library written \
+               in C and optimized for embedded and RTOS environments. It can \
+               be up to 20 times smaller than OpenSSL while still supporting \
+               a full TLS client and server, up to TLS 1.3"
+HOMEPAGE = "https://www.wolfssl.com/products/wolfssl"
+BUGTRACKER = "https://github.com/wolfssl/wolfssl/issues"
+SECTION = "libs"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PROVIDES += "cyassl"
+RPROVIDES_${PN} = "cyassl"
+
+SRC_URI = "https://www.wolfssl.com/wolfssl-${PV}.zip"
+SRC_URI[md5sum] = "6ec08c09e3f51cccbb1686b4fd45f92f"
+SRC_URI[sha256sum] = "4cc318c49580d3b9c361fe258fac6106624aa744f1d34e03977b587766a753ee"
+
+inherit autotools
+
+BBCLASSEXTEND += "native nativesdk"