Giter Site home page Giter Site logo

ibrdtn / ibrdtn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from morgenroth/ibrdtn

77.0 77.0 61.0 28.97 MB

A modular and lightweight implementation of the bundle protocol.

Java 10.58% Shell 0.92% Makefile 1.42% C++ 81.54% C 2.00% Objective-C 0.26% TeX 0.49% Python 0.20% Tcl 0.15% NSIS 0.56% Batchfile 0.01% M4 1.86%

ibrdtn's Introduction

IBR-DTN - A modular and lightweight implementation of the bundle protocol.

Build Status Coverage Status

This implementation of the bundle protocol RFC5050 is designed for embedded systems like the RouterBoard 532A or Ubiquiti RouterStation Pro and can be used as framework for DTN applications.

The module-based architecture with miscellaneous interfaces, makes it possible to change functionalities like routing or storage of bundle just by inheriting a specific class.

Links

Features

  • Bundle Protocol (RFC 5050)
  • Bundle Security Protocol (RFC 6257)
  • Socket based API
  • AgeBlock support and bundle age tracking (draft-irtf-dtnrg-bundle-age-block-01)
  • Scope Control Hop Limit Block support
  • Experimental support for compressed bundle payload
  • Bundle-in-Bundle support
  • IPv6 support
  • Applications: dtnsend, dtnrecv, dtntrigger, dtnping, dtntracepath, dtninbox, dtnoutbox, dtnstream

Convergence Layer

  • TCP/IP convergence layer (RFC 7242)
  • TLS extension for TCP convergence layer by Stephen Röttger
  • UDP/IP convergence layer - draft-irtf-dtnrg-udp-clayer-00
  • IP neighbor discovery based on draft-irtf-dtnrg-ipnd-01
  • HTTP convergence layer by Robert Heitz (Java Servlet)
  • IEEE 802.15.4 LoWPAN convergence layer by Stefan Schmidt

Routing Modules

  • Routing with static connections
  • Forward bundles on discovery
  • Epidemic routing with bloomfilter
  • Flooding routing scheme
  • PRoPHET Routing

Storage Modules

  • Memory-based storage
  • Persistent storage in file-system
  • SQLite Storage

ibrdtn's People

Contributors

bgernert avatar bkuhls avatar cotequeiroz avatar dgoltzsche avatar dklimkin avatar gbaudic avatar madluigi avatar morgenroth avatar phihag avatar rohieb avatar rottibs avatar sebastianschildt avatar soneyworld avatar thomashalwax avatar timpner avatar wronkiew avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ibrdtn's Issues

Configuration of PAN ID of dgram:lowpan CL

When using the dgram:lowpan Convergence Layer, the PAN ID of outgoing messages has to be configured using the "net_XXX_port" directive. While the PAN ID is not a port per se, this also should be unnecessary. The linux-zigbee stack knows its own PAN ID and outgoing messages should by default be sent on that particular PAN ID.

The situation that can arise is, that IBR-DTN is sending messages on a PAN ID that itself cannot receive due to hardware filters. This situation is incredibly hard to debug when no external tools (sniffers) are available.

Possible solutions:

  • Make IBR-DTN find out the PAN ID of the stack and then use that PAN ID for outgoing messages unless otherwise specified
  • Make IBR-DTN warn, if the outgoing PAN ID does not match the default PAN ID of the stack
  • Let IBR-DTN specify no PAN ID and make the linux-zigbee stack insert the proper PAN ID into outgoing messages

GPG Expired key

I tried to install IBRDTN depending on the following
https://github.com/ibrdtn/ibrdtn/wiki/Install-IBR-DTN#debianubuntu
I followed the steps under Debian/Ubuntu
but I experienced this error when I'm trying to do "sudo apt-get update"
Error:

W: http://download.opensuse.org/repositories/home:/j_morgenroth/xUbuntu_16.04/./Release.gpg: Signature by key 144E39A7BA9845106A7FBFBA8984BBB839EBCBCA uses weak digest algorithm (SHA1)
W: GPG error: http://download.opensuse.org/repositories/home:/j_morgenroth/xUbuntu_16.04 ./ Release: The following signatures were invalid: KEYEXPIRED 1500481402
W: The repository 'http://download.opensuse.org/repositories/home:/j_morgenroth/xUbuntu_16.04 ./ Release' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.

I found that the package key is expired in 19/7/2017. Could you please generate a new key pairs and update the Release.key, or guide me to different solution to overcome to succeed the installation.

API: Registration List crashes daemon

Checking registrations once works fine, on the second try it crashes when calling regfree((regex_t*)_regex); in EID.cpp:300
Daemon dies with Segmentation fault, but IIRC once I've seen "double free", too.

client:

pi@xi:~ $ nc 0 4550
IBR-DTN 1.0.1 (build c7e131f) API 1.0.1
protocol extended
200 SWITCHED TO EXTENDED
registration list
200 REGISTRATION LIST
ipn:4660.1282435192

registration list
200 REGISTRATION LIST
ipn:4660.1282435192

gdb bt:

Thread 28 (Thread 0x72fff450 (LWP 10538)):
#0  free_charset (cset=0x5) at regcomp.c:3726
#1  0x76c22dd0 in free_token (node=<optimized out>) at regcomp.c:3805
#2  0x76c22eac in free_dfa_content (dfa=0x764000e0) at regcomp.c:594
#3  0x76c2ef94 in __regfree (preg=0x76400ac0) at regcomp.c:643
#4  0x76f7ac58 in dtn::data::EID::~EID (this=0x764011f8, __in_chrg=<optimized out>) at EID.cpp:300
#5  0x0004eef8 in destroy (this=<optimized out>, __p=0x764011f8) at /usr/include/c++/4.9/ext/new_allocator.h:133
#6  _M_destroy_node (this=0x72ffea54, __p=0x764011e8) at /usr/include/c++/4.9/bits/stl_tree.h:409
#7  std::_Rb_tree<dtn::data::EID, dtn::data::EID, std::_Identity<dtn::data::EID>, std::less<dtn::data::EID>, std::allocator<dtn::data::EID> >::_M_erase (this=0x72ffea54, this@entry=0x0, __x=0x764011e8) at /usr/include/c++/4.9/bits/stl_tree.h:1247
#8  0x0011db20 in ~_Rb_tree (this=0x72ffea4c, __in_chrg=<optimized out>) at /usr/include/c++/4.9/bits/stl_tree.h:715
#9  ~set (this=0x72ffea4c, __in_chrg=<optimized out>) at /usr/include/c++/4.9/bits/stl_set.h:90
#10 dtn::api::ExtendedApiHandler::run (this=0x76400820) at ExtendedApiHandler.cpp:269
#11 0x0010a220 in dtn::api::ClientHandler::run (this=0x75e03d70) at ClientHandler.cpp:94
#12 0x76f17b08 in ibrcommon::Thread::__execute__ (obj=0x75e03d70) at Thread.cpp:85
#13 0x76e9fe90 in start_thread (arg=0x72fff450) at pthread_create.c:311
#14 0x76c49698 in ?? () at ../ports/sysdeps/unix/sysv/linux/arm/nptl/../clone.S:92 from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Share concept required for Whisper

The common share function is not present in Whisper. The user should be able to share any text he like to one of its buddies.

Additionally, the user should be able to send files (maybe by integrating ShareBox) to buddies.

Push delivery predictability vector (PRoPHET) to neighbors

If neighbors are added to or removed from the delivery predictability vector of PRoPHET or if a value in this table is incremented, the table should get pushed to other peers. By doing this, changes of the topology can propagated faster.

Coding standards for the project

Sorry this is more of a question rather than a bug. I couldn't find contributor's guidelines on wiki. I'd like to find out:

  1. What is the target C++ version? Will C++11/14/17 code be accepted?
  2. RAII doesn't seem to be used, is it ok for new code / refactorings?
  3. What's the plan on exceptions? Those seem to be used in some places but not others. Is it recommended for new code? Is it ok to avoid them (normally I'd avoid them for C++)?
  4. I am slightly confused on the structure, e.g. ibrcommon vs ibrdtn libs, and artifacts like:
    ./ibrdtn/ibrdtn/ibrdtn/ibrdtn.h
    Are there any existing plans on restructuring?

Thanks.

Enable security features by default in the Debian package

  • Create a keypath and make it writable for the user 'dtnd'.
  • Enable security by default.
  • Add script to debian package to generate dhparams if they does not exist.
  • Add dependency to openssl tools.

The generation of DH params file is a long running procedure. To avoid that generation on start-up of the daemon, this file should be generated on installation using openssl tools.

Shell command to generate params file:

$ openssl dhparam -out test.pem 1024

64-bit builds fail on Android NDK r10c

The libraries libnl-3 and openssl do not compile for the 64-bit targets of Android NDK.

[arm64-v8a] StaticLibrary  : libibrcommon_gcm.a
[arm64-v8a] Compile        : nl-route-3 <= addr.c
In file included from /opt/tmp/jenkins/workspace/android-ibrdtn-test/android/ibrdtn/jni/nl-3/android_toolchain/jni/../../include/netlink-local.h:31:0,
                 from /opt/tmp/jenkins/workspace/android-ibrdtn-test/android/ibrdtn/jni/nl-3/android_toolchain/jni/../../lib/./route/addr.c:109:
/opt/tmp/jenkins/workspace/android-ibrdtn-test/android/ibrdtn/jni/nl-3/android_toolchain/jni/missing_include/search.h:13:24: fatal error: sys/_types.h: No such file or directory
 #include <sys/_types.h>

ibrdtn/daemon unittests fail, probably due to missing cleanup

Unittests in ibrdtn/ibrdtn/daemon/tests/unittests fail with

BundleSetTest.cpp:204: Assertion
Test name: BundleSetTest::namingTest (MemoryBundleStorage)
equality assertion failed
- Expected: 1000
- Actual  : 500

I guess it is using an uncleaned storage from an earlier test, because with every subsequent it fails at another place with increasing "Actual" number.

Second run:

   BundleSetTest.cpp:196: Assertion
   Test name: BundleSetTest::namingTest (MemoryBundleStorage)
   equality assertion failed
   - Expected: 500
   - Actual  : 1000

Third run:

BundleSetTest.cpp:196: Assertion
Test name: BundleSetTest::namingTest (MemoryBundleStorage)
equality assertion failed
- Expected: 500
- Actual  : 1500

etc.

Deleting the folder /tmp/memory-bundleset-test between runs resets everything to the first error condition.

APIHandlerType.SELECTIVE :: Unable to mark bundle as delivered.

By using this simple example and sending multiple (2+) bundle from single another node an APIException: bundle delivered failed. This error occurs only with the SelectiveHandler, the PassthroughHandler works fine.

How to recreate it?

Both nodes as supposed to already be running #dtnd properly!

From node A

$echo -n "test"|dtnsend dtn://nodeB/test (at least) twice

From node B

package ibrdtn.example;

import ibrdtn.api.APIException;
import ibrdtn.example.api.APIHandlerType;
import ibrdtn.example.api.DTNClient;
import ibrdtn.example.api.PayloadType;

public class DtnExample {

    public static void main(String[] args) {
        DTNClient client = new DTNClient("test", PayloadType.BYTE, APIHandlerType.SELECTIVE);
        try {
            client.getEC().setEndpoint("test");
        } catch (APIException e) {
            e.printStackTrace();
        }
    }
}

Error

Jul 28, 2014 2:46:46 PM ibrdtn.example.api.AbstractAPIHandler$1 run
SEVERE: Unable to mark bundle as delivered.
ibrdtn.api.APIException: bundle delivered failed
    at ibrdtn.api.ExtendedClient.markDelivered(ExtendedClient.java:1009)
    at ibrdtn.example.api.AbstractAPIHandler$1.run(AbstractAPIHandler.java:55)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

Bash Completion broken on Debian

On recent Debian versions, the call of 'nc' does not return after sending the command. The bash completion just freeze and does not return any results. Calling 'nc' with the '--half-close' option solves this issue at least for Debian. Another solution would be to replace the function which collects all known EIDs with a native tool, e.g. dtnc.

Failed ndkBuild process 'command 'sh' on Windows or Linux Android Studio

for several weeks i learn how to compile IBR-DTN source from IBR-DTN Github , and now im being stuck at Android NDK stuff. here my failure log on Android Studio, i tried Windows version and Linux version there are always same error

Error:Execution failed for task ':app:ndkBuild'. 
> A problem occurred starting process 'command 'sh'

and this is my build.gradle

apply plugin: 'android-sdk-manager'
    apply plugin: 'com.android.application'

def createVersionName() {
    if (System.getenv().containsKey("BUILD_NUMBER")) {
        if (System.getenv().containsKey("GIT_COMMIT")) {
            return rootProject.ext.versionName + "-" + System.getenv("GIT_COMMIT").substring(0, 7)
        } else {
            return rootProject.ext.versionName + "-" + System.getenv("BUILD_NUMBER")
        }
    } else {
        return rootProject.ext.versionName
    }
}

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "de.tubs.ibr.dtn"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode System.getenv("BUILD_NUMBER") as Integer ?: rootProject.ext.versionCode
        versionName createVersionName()
    }
    signingConfigs {
        release {
            storeFile file(System.getenv("KEYSTORE") ?: "publish.keystore")
            storePassword System.getenv("KEYSTORE_PASSWD")
            keyAlias System.getenv("KEY_ALIAS") ?: android.defaultConfig.applicationId
            keyPassword System.getenv("KEY_PASSWD")
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets.main {
        jniLibs.srcDir 'src/main/libs'
        jni.srcDirs = []
    }
}

// enable signing if the keystore exists
if (android.signingConfigs.release.storeFile.exists()) {
    android.buildTypes.release.signingConfig = android.signingConfigs.release
}

task ndkBuild(type: Exec) {
    executable "sh"
    workingDir "src/main/jni"
    args "build.sh"
}
preBuild.dependsOn ndkBuild

dependencies {
    compile 'de.tubs.ibr.dtn:library:1.1.2'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.jjoe64:graphview:3.1.+'
    compile 'com.google.zxing:core:3.2.+'
    compile 'com.google.zxing:android-integration:3.2.+'
}

image

Let apps retrieve bundles sent to a REGEX destination

As describe within this mail on the mailing list, delivery to REGEX destination could be really handy. The daemon should transfer every bundles sent to:

  • dtn://node1/app0
  • dtn://node1/app0?
  • dtn://node1/app0?p=2
  • dtn://node1/app0?lang=en&p=4

at the same application registered as dtn://node1/app0.
In the current state, the query is, as expected, considered as a part of the URI. Thus to receive bundles sent to [dtn://node1/app0?lang=en] the user needs to add a registration *app0?lang=en
by doing $dtnrecv --name "app0?lang=en

partial Answered from Johannes Morgenroth:

There is no way to achieve what you requested without changing the code. If you want to add such a feature, you can simply add query extensions to the EID class and change the compare methods according your needs. Another way would be to add "*" capabilities to the registrations class.

Store extracted files in the non-public storage of the app instead of on the sdcard

Currently, ShareBox extracts all files to the sdcard storage and provides file:// handles to other apps. A better way would be to extract files to a non-public cache / storage and provide content URIs to open the files with other apps.

On Kitkat, ShareBox should also implement the storage access framework. This way, an application can directly access files received by sharebox.

Implement complete forwarding strategy

By default bundles forwarded to other peers are kept until they are purged by expiration or the purge vector. But in most of the cases it would be sufficient to forward a bundle completely without keeping a copy of it. This is the case, if the routing approach knows the path to the peer as with PRoPHET or Direct Delivery.

To implement such a feature, a flag in the BundleTransfer class should indicate that the bundle can be deleted right after it has been forwarded. Important here is that the bundle get deleted and not purged, because purging involves other mechanism which would purge the bundle completely from the network.

Additional to the deletion in the storage, the bundle-set used to filter already known bundles (BaseRouter) must be altered to accept the bundle again if the path for the bundle has changed and needs to cross the BPA again.

Update Android App to new OpenSSL Version

Google demands at least OpenSSL 1.02f for new updates. Can somebody rebuilt the IBR-DTN APK and reupload it? @bgernert @morgenroth ?

Your app(s) listed at the end of this email utilize a version of OpenSSL that contains one or more security vulnerabilities. If you have more than 20 affected apps in your account, please check the Developer Console for a full list.

Please migrate your app(s) to OpenSSL 1.02f/1.01r or higher as soon as possible and increment the version number of the upgraded APK. Beginning July 11, 2016, Google Play will block publishing of any new apps or updates that use older versions of OpenSSL. If you’re using a 3rd party library that bundles OpenSSL, you’ll need to upgrade it to a version that bundles OpenSSL 1.02f/1.01r or higher.

The vulnerabilities were addressed in OpenSSL 1.02f/1.01r. The latest versions of OpenSSL can be downloaded here. To confirm your OpenSSL version, you can do a grep search for ($ unzip -p YourApp.apk | strings | grep "OpenSSL").

To confirm you’ve upgraded correctly, submit the updated version to the Developer Console and check back after five hours. If the app hasn’t been correctly upgraded, we will display a warning.

The vulnerabilities include "logjam" and CVE-2015-3194. The Logjam attack allows a man-in-the-middle attacker to downgrade vulnerable TLS connections to 512-bit export-grade cryptography. This allows the attacker to read and modify any data passed over the connection. Details about other vulnerabilities are available here. For other technical questions, you can post to Stack Overflow and use the tags “android-security” and “OpenSSL.”

While these specific issues may not affect every app that uses OpenSSL, it’s best to stay up to date on all security patches. Apps with vulnerabilities that expose users to risk of compromise may be considered in violation of our Malicious Behavior policy and section 4.4 of the Developer Distribution Agreement.

Flacky test TestStreamConnection::connectionUpDown

One test occasionally fails for me: TestStreamConnection::connectionUpDown

##Failure Location unknown## : Error
Test name: TestStreamConnection::connectionUpDown
uncaught exception of type std::exception (or derived).

  • Search permission is denied on a component of the path prefix.

Other runs it's OK so it's hard to tell, can be a race condition. Logging to look into this later.

Live Photo Mode

Automatically send all pictures taken by the device camera to an endpoint.

TCP-CL connections stuck forever if the handshake is stalled

The time-out of the TCP should be activated before the handshake is initiated. As long as this is done before the handshake, a stalled handshake (due to disconnection) is not detected as failure and the half-initialized connection is never removed.

A re-write of the time-out handling is necessary to fix the issue. The new approach should allow to set the initial time-out using a configuration option. More-over, the keep-alive interval is fixed to 10 seconds which also should be configurable.

Two modes of time-out are necessary.

  • In a configuration without the idle time-out feature, the timer checks if the last data or keep-alive segment has been received within the time-interval specified by the keep-alive value.
  • In a configuration with the idle time-out feature, the timer checks if the last data has been received within the idle timeout value specified by the configuration.

To further reduce the number of thread for each connection, the time-out can realized using the event-system instead of a Timer thread. The StreamConnection should provide an method to trigger the time-out checking externally.

Suggestion: The standard time-out value is quite short an consumes a lot of energy on embedded devices. A time-out of 180 seconds should mitigate the situation.

Application ID in IPN scheme is mandatory

At the moment IBR-DTN encodes IPN EIDs without an application as "ipn:". As stated by Scott Burleigh the application ID is mandatory and an EID without an application part shall be expressed as "ipn:.0".

How to get `local_uri` through the socket?

Hi everyone,

Everything is in the title. I could not find in the API documentation a way to get the local_uri (from the conf file) using the socket API.

Is it possible? (without a "hack" in which an random endpoint is set, sends a bundle to itself and parses the source/destination URI)

Implement Hybrid BLOB provider

A hybrid BLOB provider may improve forwarding speed for small bundles. Since it is not critical to hold small amounts of data in the memory, the BLOB provider can start with a memory-based BLOB and dynamically switches to a file-based one if the amount exceeds a threshold (e.g. 4096 byte).

configure.ac:49: error: possibly undefined macro: AC_SUBST

Hi everyone!

Wanting to work on the bleeding edge I went accross an error just after a git clone https://github.com/ibrdtn/ibrdtn.git && cd ibrdtn/ibrcommon/ && ./autogen.sh

Error

## enter directory ibrcommon ##
## run autogen.sh script ##
set version to 1.0.1
configure.ac:49: error: possibly undefined macro: AC_SUBST
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:72: error: possibly undefined macro: AC_DEFINE
configure.ac:77: error: possibly undefined macro: AC_CHECK_LIB
configure.ac:97: error: possibly undefined macro: AC_MSG_ERROR
configure.ac:200: error: possibly undefined macro: AC_MSG_WARN
autoreconf: /usr/bin/autoconf failed with exit status: 1

Solution

Installing the package pkg-config solved this issue.
Thanks mutsu

Bloom-filters of the summary vectors are too low dimensioned

The amount of traffic within the "Cloud Uplink" has filled the bloom-filters of the summary vectors. Many bundles are not transmitted because the sender assumes that they are already known by the peer.

A solution would be to increase the size of the Bloom-filter but that might unveil compatibility issues with older versions.

PRoPHET routing data needs to be persistent

As with bundle-sets, it would be a good approach to store the routing data of PRoPHET (acknowledgement set and delivery predictability vector) on shutdown and reload it on start-up. To be protected against power-failures, the data should be stored additional in a interval, e.g. 1 minute.

To alter the values of the delivery predictability vector on each restore of the data, the time-stamp has to be included.

ibrdtn-tools does not build for debian 6.0

Build of ibrdtn-tools fails on debian 6.0 with this error:

[   63s] g++ -DHAVE_CONFIG_H -I.  -I../src -I/usr/include/ibrdtn-0.11 -I/usr/include/ibrcommon-0.11          -g -O2 -g -Wall -O2 -c -o BundleStream.o `test -f 'streaming/BundleStream.cpp' || echo './'`streaming/BundleStream.cpp
[   64s] g++ -DHAVE_CONFIG_H -I.  -I../src -I/usr/include/ibrdtn-0.11 -I/usr/include/ibrcommon-0.11          -g -O2 -g -Wall -O2 -c -o BundleStreamBuf.o `test -f 'streaming/BundleStreamBuf.cpp' || echo './'`streaming/BundleStreamBuf.cpp
[   65s] streaming/BundleStreamBuf.cpp: In member function 'int BundleStreamBuf::__underflow()':
[   65s] streaming/BundleStreamBuf.cpp:187: warning: comparison between signed and unsigned integer expressions
[   65s] g++ -DHAVE_CONFIG_H -I.  -I../src -I/usr/include/ibrdtn-0.11 -I/usr/include/ibrcommon-0.11          -g -O2 -g -Wall -O2 -c -o StreamBundle.o `test -f 'streaming/StreamBundle.cpp' || echo './'`streaming/StreamBundle.cpp
[   66s] /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 -g -Wall -O2 -librdtn -librcommon -lpthread -lz -lnl -lssl -lcrypto    -larchive     -o dtnstream dtnstream.o BundleStream.o BundleStreamBuf.o StreamBundle.o  -lm -lrt 
[   66s] libtool: link: g++ -g -O2 -g -Wall -O2 -o dtnstream dtnstream.o BundleStream.o BundleStreamBuf.o StreamBundle.o  /usr/lib/libibrdtn.so /usr/lib/libibrcommon.so -lpthread -lz -lnl -lssl -lcrypto /usr/lib/libarchive.so -lm -lrt
[   66s] g++ -DHAVE_CONFIG_H -I.  -I../src -I/usr/include/ibrdtn-0.11 -I/usr/include/ibrcommon-0.11          -g -O2 -g -Wall -O2 -c -o dtninbox.o dtninbox.cpp
[   67s] g++ -DHAVE_CONFIG_H -I.  -I../src -I/usr/include/ibrdtn-0.11 -I/usr/include/ibrcommon-0.11          -g -O2 -g -Wall -O2 -c -o FileHash.o `test -f 'io/FileHash.cpp' || echo './'`io/FileHash.cpp
[   67s] g++ -DHAVE_CONFIG_H -I.  -I../src -I/usr/include/ibrdtn-0.11 -I/usr/include/ibrcommon-0.11          -g -O2 -g -Wall -O2 -c -o ObservedFile.o `test -f 'io/ObservedFile.cpp' || echo './'`io/ObservedFile.cpp
[   68s] g++ -DHAVE_CONFIG_H -I.  -I../src -I/usr/include/ibrdtn-0.11 -I/usr/include/ibrcommon-0.11          -g -O2 -g -Wall -O2 -c -o TarUtils.o `test -f 'io/TarUtils.cpp' || echo './'`io/TarUtils.cpp
[   68s] io/TarUtils.cpp: In static member function 'static void io::TarUtils::read(const ibrcommon::File&, std::istream&)':
[   68s] io/TarUtils.cpp:95: error: 'archive_read_support_filter_all' was not declared in this scope
[   68s] io/TarUtils.cpp:112: error: 'archive_read_free' was not declared in this scope
[   68s] io/TarUtils.cpp: In static member function 'static void io::TarUtils::write(std::ostream&, const io::ObservedFile&, const std::set<io::ObservedFile, std::less<io::ObservedFile>, std::allocator<io::ObservedFile> >&)':
[   68s] io/TarUtils.cpp:220: error: 'archive_write_free' was not declared in this scope
[   68s] io/TarUtils.cpp:228: error: 'archive_write_free' was not declared in this scope
[   68s] make[3]: *** [TarUtils.o] Error 1
[   68s] make[3]: Leaving directory `/usr/src/packages/BUILD/src'
[   68s] make[2]: *** [all] Error 2
[   68s] make[2]: Leaving directory `/usr/src/packages/BUILD/src'
[   68s] make[1]: *** [all-recursive] Error 1
[   68s] make[1]: Leaving directory `/usr/src/packages/BUILD'
[   68s] make: *** [debian/stamp-makefile-build] Error 2
[   68s] dpkg-buildpackage: error: debian/rules build gave error exit status 2
[   70s] /.build/build: line 373:   259 Killed                  background_monitor_process
[   72s] [   53.727877] reboot: Power down

Bind to lo0 fails on MacOS X

If the API or a convergence-layer is configured to bind to lo0 on MacOS X it fails with an error that it can not bind to [::1]:4550 or [::1]:4556.

FragmentManager merges bundles successfully but never delivers them to local consumer

Hi,

I think I found an issue with the FragmentManager. In my lab I do only have two nodes (SENDER and RECEIVER). SENDER transmits a file using dtnsend that has a size of 1024 bytes. The deamon is configured to split bundles bigger than 512 bytes. At the RECEIVER side I'm using dtnrecv.

The bundles get fragmented correctly and transmitted successfully. The RECEIVER daemon also merges the fragments into one bundle, but it never gets delivered to the dtnrecv client.

When bundles got merged by the FragementManager they get injected into the BundleCore using inject() method with the param local=true. These bundles never will be delivered to the local receiver.

After changing to 3rd param of the method call to dtn::core::BundleCore::getInstance().inject(dtn::core::BundleCore::local, merged, false); the bundle fragments get merged correctly and the resulting bundle gets delivered to the (local) receiver.

Since I'm am not an expert regarding your implementation please take a look at this issue.
Thanks in advance

Add phone-number hash to presence beacon

  • If presence beacon with hash is received, link the contact with the address book entry.
  • Put EID of the chat peer into an address book field.
  • Show Whisper contacts with the image and name of the address book.
  • Individual salt required since it is very easy to create a rainbow table for all numbers.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.