From b8d98187b93115f7604ae649675211b97a359d76 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 12 Nov 2016 06:54:35 +0000 Subject: dibbler: Add recipe dibbler is a light weight DHCPv6 implementation Signed-off-by: Khem Raj Signed-off-by: Joe MacDonald --- .../dibbler/dibbler_fix_getSize_crash.patch | 72 ++++++++++++++++ .../dibbler/dibbler/types.patch | 96 ++++++++++++++++++++++ .../recipes-connectivity/dibbler/dibbler_1.0.1.bb | 37 +++++++++ 3 files changed, 205 insertions(+) create mode 100644 meta-networking/recipes-connectivity/dibbler/dibbler/dibbler_fix_getSize_crash.patch create mode 100644 meta-networking/recipes-connectivity/dibbler/dibbler/types.patch create mode 100644 meta-networking/recipes-connectivity/dibbler/dibbler_1.0.1.bb diff --git a/meta-networking/recipes-connectivity/dibbler/dibbler/dibbler_fix_getSize_crash.patch b/meta-networking/recipes-connectivity/dibbler/dibbler/dibbler_fix_getSize_crash.patch new file mode 100644 index 0000000000..adb249fdec --- /dev/null +++ b/meta-networking/recipes-connectivity/dibbler/dibbler/dibbler_fix_getSize_crash.patch @@ -0,0 +1,72 @@ +diff --git a/ClntMessages/ClntMsg.cpp b/ClntMessages/ClntMsg.cpp +index eeaadd0..0cf5dce 100644 +--- a/ClntMessages/ClntMsg.cpp ++++ b/ClntMessages/ClntMsg.cpp +@@ -346,7 +346,9 @@ unsigned long TClntMsg::getTimeout() + + void TClntMsg::send() + { +- char* pkt = new char[getSize()]; ++ size_t size = getSize(); ++ char* pkt = new char[size]; ++ memset(pkt, 0, size); + + srand((uint32_t)time(NULL)); + if (!RC) +@@ -364,7 +366,7 @@ void TClntMsg::send() + + RC++; + +- this->storeSelf(pkt); ++ storeSelf(pkt); + + SPtr ptrIface = ClntIfaceMgr().getIfaceByID(Iface); + if (!ptrIface) { +diff --git a/ClntMessages/ClntMsgRequest.cpp b/ClntMessages/ClntMsgRequest.cpp +index 4a7b5da..f3e40fd 100644 +--- a/ClntMessages/ClntMsgRequest.cpp ++++ b/ClntMessages/ClntMsgRequest.cpp +@@ -143,7 +143,10 @@ TClntMsgRequest::TClntMsgRequest(List(TAddrIA) IAs, + IsDone=false; + SPtr ptr; + ptr = new TOptDUID(OPTION_CLIENTID, ClntCfgMgr().getDUID(), this ); +- Options.push_back( ptr ); ++ ++ if ( ptr ) { ++ Options.push_back( ptr ); ++ } + + if (!srvDUID) { + Log(Error) << "Unable to send REQUEST: ServerId not specified.\n" << LogEnd; +@@ -154,7 +157,9 @@ TClntMsgRequest::TClntMsgRequest(List(TAddrIA) IAs, + ptr = (Ptr*) new TOptDUID(OPTION_SERVERID, srvDUID,this); + // all IAs provided by checkSolicit + SPtr ClntAddrIA; +- Options.push_back( ptr ); ++ if ( ptr ) { ++ Options.push_back( ptr ); ++ } + + IAs.first(); + while (ClntAddrIA = IAs.get()) +diff --git a/Messages/Msg.cpp b/Messages/Msg.cpp +index baa6c86..6eef6c7 100644 +--- a/Messages/Msg.cpp ++++ b/Messages/Msg.cpp +@@ -66,10 +66,15 @@ int TMsg::getSize() + { + int pktsize=0; + TOptList::iterator opt; ++ int optionCount = 0; + for (opt = Options.begin(); opt!=Options.end(); ++opt) + { +- pktsize += (*opt)->getSize(); ++ Log(Info) << "### CPE Debug - Option with index " << optionCount++ << LogEnd ; ++ Log(Info) << "### CPE Debug - Option with type " << (*opt)->getOptType() << LogEnd ; ++ pktsize += (*opt)->getSize(); + } ++ Log(Info) << "### CPE Debug - Packet size of option (Add 4) " << pktsize << LogEnd ; ++ + return pktsize + 4; + } + diff --git a/meta-networking/recipes-connectivity/dibbler/dibbler/types.patch b/meta-networking/recipes-connectivity/dibbler/dibbler/types.patch new file mode 100644 index 0000000000..28f18ef423 --- /dev/null +++ b/meta-networking/recipes-connectivity/dibbler/dibbler/types.patch @@ -0,0 +1,96 @@ +Apply fixes to build on musl + +Signed-off-by: Khem Raj + + +Index: dibbler-1.0.1/IfaceMgr/IfaceMgr.cpp +=================================================================== +--- dibbler-1.0.1.orig/IfaceMgr/IfaceMgr.cpp ++++ dibbler-1.0.1/IfaceMgr/IfaceMgr.cpp +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include "Portable.h" + #include "IfaceMgr.h" + #include "Iface.h" +Index: dibbler-1.0.1/IfaceMgr/SocketIPv6.h +=================================================================== +--- dibbler-1.0.1.orig/IfaceMgr/SocketIPv6.h ++++ dibbler-1.0.1/IfaceMgr/SocketIPv6.h +@@ -18,6 +18,7 @@ class TIfaceSocket; + + #include + #include ++#include + + #include "Portable.h" + #include "DHCPConst.h" +Index: dibbler-1.0.1/Port-linux/ethtool-local.h +=================================================================== +--- dibbler-1.0.1.orig/Port-linux/ethtool-local.h ++++ dibbler-1.0.1/Port-linux/ethtool-local.h +@@ -22,9 +22,9 @@ + */ + + typedef unsigned long long u64; +-typedef __uint32_t u32; +-typedef __uint16_t u16; +-typedef __uint8_t u8; ++typedef uint32_t u32; ++typedef uint16_t u16; ++typedef uint8_t u8; + + #include "ethtool-kernel.h" + +Index: dibbler-1.0.1/Port-linux/interface.c +=================================================================== +--- dibbler-1.0.1.orig/Port-linux/interface.c ++++ dibbler-1.0.1/Port-linux/interface.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -35,13 +36,10 @@ + #include + #include + +-#include + + #include "ethtool-local.h" + #include "interface.h" + #include +-#include +-#include + + void daemon_log(int loglevel, const char *fmt,...) + { +Index: dibbler-1.0.1/Port-linux/lowlevel-linux-link-state.c +=================================================================== +--- dibbler-1.0.1.orig/Port-linux/lowlevel-linux-link-state.c ++++ dibbler-1.0.1/Port-linux/lowlevel-linux-link-state.c +@@ -18,7 +18,6 @@ + #include + #include + #include +-#include + #include "Portable.h" + #include "interface.h" + +Index: dibbler-1.0.1/Port-linux/utils.h +=================================================================== +--- dibbler-1.0.1.orig/Port-linux/utils.h ++++ dibbler-1.0.1/Port-linux/utils.h +@@ -4,6 +4,7 @@ + #include + //#include + #include ++#include + + #include "libnetlink.h" + #include "ll_map.h" diff --git a/meta-networking/recipes-connectivity/dibbler/dibbler_1.0.1.bb b/meta-networking/recipes-connectivity/dibbler/dibbler_1.0.1.bb new file mode 100644 index 0000000000..a2d46dbe0b --- /dev/null +++ b/meta-networking/recipes-connectivity/dibbler/dibbler_1.0.1.bb @@ -0,0 +1,37 @@ +SUMMARY = "Dibbler DHCPv6 client" +DESCRIPTION = "Dibbler is a portable DHCPv6 implementation. It supports stateful as well as stateless autoconfiguration for IPv6." +HOMEPAGE = "http://klub.com.pl/dhcpv6" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://LICENSE;md5=7236695bb6d4461c105d685a8b61c4e3" + +SRC_URI = "http://klub.com.pl/dhcpv6/${BPN}/${P}.tar.gz \ + file://dibbler_fix_getSize_crash.patch \ + file://types.patch \ +" +SRC_URI[md5sum] = "93357bea3ec35b0c1d11242055361409" +SRC_URI[sha256sum] = "27869877e060c039cbc24a5f6a9dd69006bf67de0ffdf29a645a80aef6e476a1" + +PACKAGECONFIG ??= "debug bind-reuse resolvconf dns-update" + +PACKAGECONFIG[debug] = "--enable-debug,,," +PACKAGECONFIG[efence] = "--enable-efence,,," +PACKAGECONFIG[bind-reuse] = "--enable-bind-reuse,,," +PACKAGECONFIG[dst-addr-filter] = "--enable-dst-addr-check,,," +PACKAGECONFIG[resolvconf] = "--enable-resolvconf,,," +PACKAGECONFIG[dns-update] = "--enable-dns-update,,," +PACKAGECONFIG[auth] = "--enable-auth,,," +PACKAGECONFIG[gtest] = "--enable-gtest-static,,," + +inherit autotools + +DEPENDS += "flex-native" + +CFLAGS += "-D_GNU_SOURCE" + +PACKAGES =+ "${PN}-requestor ${PN}-client ${PN}-relay ${PN}-server" + +FILES_${PN}-client = "${sbindir}/${PN}-client" +FILES_${PN}-relay = "${sbindir}/${PN}-relay" +FILES_${PN}-requestor = "${sbindir}/${PN}-requestor" +FILES_${PN}-server = "${sbindir}/${PN}-server" -- cgit 1.2.3-korg