dibbler: Add recipe

dibbler is a light weight DHCPv6 implementation

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
This commit is contained in:
Khem Raj
2016-11-12 06:54:35 +00:00
committed by Joe MacDonald
parent eb6f1afd14
commit b8d98187b9
3 changed files with 205 additions and 0 deletions
@@ -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<TIfaceIface> 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<TOpt> 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<TAddrIA> 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;
}
@@ -0,0 +1,96 @@
Apply fixes to build on musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
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 <string>
#include <stdlib.h>
#include <errno.h>
+#include <sys/select.h>
#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 <iostream>
#include <string>
+#include <sys/select.h>
#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 <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
+#include <linux/sockios.h>
#include <syslog.h>
#include <string.h>
#include <errno.h>
@@ -35,13 +36,10 @@
#include <stdlib.h>
#include <assert.h>
-#include <net/if.h>
#include "ethtool-local.h"
#include "interface.h"
#include <stdarg.h>
-#include <linux/sockios.h>
-#include <linux/if_ether.h>
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 <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include <bits/sigthread.h>
#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 <asm/types.h>
//#include <resolv.h>
#include <linux/types.h>
+#include <sys/types.h>
#include "libnetlink.h"
#include "ll_map.h"
@@ -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"