Dear Johannes,
Thank you for the lead. Yes, you are right. I want to wiretap and get the knowledge of the crossing bundles (on say, an intermediate node having epidemic routing).
I looked up the internet, but I could not get a clear idea on how to use the QueueBundleEvent. Is that a plugin or do I have to register the event in the code directly? Where is the standard API connection? And what is an extended protocol?
Until now, I understand using the tools and have myself made changes to the Ibrdtn C++ tools and I understand workings of ibrdtnd.conf and reading the neighbors via localhost query. However, was curious where/how you got the 'stream' information? Is it the same way we query for the DTN neighbors (say, opening a socket using a python script)?
Thanks, Shyam
On Mon, Jan 13, 2014 at 8:20 AM, Johannes Morgenroth < morgenroth@ibr.cs.tu-bs.de> wrote:
Hi Shyam,
if I understand you right, you want to wiretap all / specific crossing traffic like wireshark does?
IBR-DTN does not provide such mechanism to standard applications due to security reasons. But with the event API you can listen to QueueBundleEvent and then request that bundle ID using the standard API connection. At this time, there is no protection against reading non-local bundles via the extended protocol.
For the event API you switch into the right handler via "protocol event" and then you get the stream.
IBR-DTN 0.11.0 (build 4a406ca) API 1.0 protocol event 200 SWITCHED TO EVENT Event: BundleReceivedEvent Peer: dtn://syrah/test Local: true Source: dtn://syrah/test Timestamp: 442912579 Sequencenumber: 1 Lifetime: 3600 Procflags: 128 Destination: dtn://test/test
Event: QueueBundleEvent Source: dtn://syrah/test Timestamp: 442912579 Sequencenumber: 1 Lifetime: 3600 Procflags: 128 Destination: dtn://test/test
Kind regards, Johannes Morgenroth
Am 11.01.2014 02:57, schrieb Shyam B:
Hi,
This is regarding Epidemic routing and receiving bundles. Using dtntrigger for example, one can receive the bundle targeted to a particular target node. I.e. When the bundle arrives at the target node, the target node has an immediate knowledge of it (using payload, eid) via script.
Consider the scenario where epidemic routing is used, and an *intermediate node* receives the bundle meant for a target node. Dtntrigger does not work in this case. My question is, how do I know that intermediate node has received a bundle (programmatically)? DTN daemon has this knowledge of received bundles by the intermediate node but, if an application running on this intermediate node wishes to know that some (external) bundle has been received, how would it know that. It is received into the 'bundles' directory, but I would like something like DTNTrigger for the intermediate node' knowledge! How can I achieve this?
This approach will be very helpful in my aerial application.
Thank you!
-- Best Regards, Shyam