Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 16
From: [email-masked]
To: [email-masked]
Date: Mon, 01 Nov 2010 03:00:25 +0800
List-Id: dtn-users mailing list <dtn-users.maillists.intel-research.net>

您的邮件已经收到，我会尽快回复您，谢谢！

From: [email-masked]
To: [email-masked]
Date: Sun, 31 Oct 2010 03:00:32 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 15

您的邮件已经收到，我会尽快回复您，谢谢！

From: [email-masked]
To: [email-masked]
Date: Sat, 30 Oct 2010 03:00:34 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 14

您的邮件已经收到，我会尽快回复您，谢谢！

From: Darren Long <[email-masked]>
Date: Thu, 28 Oct 2010 20:57:13 +0100
To: [email-masked]
Cc: [email-masked]
Subject: Re: [dtn-users] Problem in DTN2 installation on Ubuntu

Hi,

Try running:
	sudo ldconfig

Darren

On 28 Oct 2010, at 20:53, [email-masked] wrote:

> Hi,
> 
> I have a problem in the installation of DTN2 on Ubuntu.When I 
> try running DTN2 by typing the command
> 
> daemon/dtnd -c /dtn/dtn.conf --init-db (I give full paths for 
> dtnd and dtn.conf)
> 
> I get an error saying 'error while loading shared 
> libraries:libdb-4.6 so:cannot open shared object file.No such 
> file or directory'.But I have installed Berkeley db already.
> 
> What must be causing this error?
> 
> Thanks and regards
> 
> Neha Paranjape
> Neha Paranjape
> Graduate Student(Telecommunications)
> University of Maryland,College Park
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users

From: <[email-masked]>
To: [email-masked]
Date: Thu, 28 Oct 2010 15:53:26 -0400 (EDT)
Subject: [dtn-users] Problem in DTN2 installation on Ubuntu

Hi,

I have a problem in the installation of DTN2 on Ubuntu.When I 
try running DTN2 by typing the command

daemon/dtnd -c /dtn/dtn.conf --init-db (I give full paths for 
dtnd and dtn.conf)

I get an error saying 'error while loading shared 
libraries:libdb-4.6 so:cannot open shared object file.No such 
file or directory'.But I have installed Berkeley db already.

What must be causing this error?

Thanks and regards

Neha Paranjape
Neha Paranjape
Graduate Student(Telecommunications)
University of Maryland,College Park

From: [email-masked]
To: [email-masked]
Date: Fri, 29 Oct 2010 03:00:29 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 13

您的邮件已经收到，我会尽快回复您，谢谢！

From: [email-masked]
To: [email-masked]
Date: Thu, 28 Oct 2010 03:00:29 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 12

您的邮件已经收到，我会尽快回复您，谢谢！

From: Ioannis Komnios <[email-masked]>
Date: Wed, 27 Oct 2010 14:55:51 +0300
To: [email-masked]
Cc: Vassilis Tsaousidis <[email-masked]>
Subject: [dtn-users] Open positions at Space Internetworking Center, Xanthi, Greece

--Apple-Mail-14-635706827
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

[We apologize in advance if you receive multiple copies of this message]

=20

This call for interest is announced in the framework of the project =
=E2=80=9CSpace Internetworking Center=E2=80=9D with the acronym SPICE =
(Grant Agreement Number 264226) which is funded by =E2=80=9CCapacities=E2=80=
=9D of the FP7 Seventh Framework Programme. The project is approved as a =
=E2=80=9CCoordination and Support Action=E2=80=9D under the =E2=80=9CResea=
rch Potential=E2=80=9D Scheme and has a duration of three years =
(01/09/10-31/8/13).

=20

A. BACKGROUND

Internetworked Systems Laboratory (InterSys Group) has made significant =
contributions to the architectural requirements, objectives =
standardization and prototyping of future Space Internetworking =
strategy. InterSys Group is a leading group in Europe in Space =
Internetworking, participates in the Consultative Committee for Space =
Data Systems and in several other European Bodies. The Internetworked =
Systems Laboratory has a total funding of around 4 million Euros. The =
Project Coordinator, Vassilis Tsaousidis, is a Professor in the =
Department of Electrical and Computer Engineering of Democritus =
University of Thrace, Greece and the Director of Internetworked Systems =
Laboratory.

SPICE relies on three major objectives: to broaden the group=E2=80=99s =
accomplished research innovation and engineering capacity both by =
mobilizing resources to visit first-class cooperating European =
institutions and hiring top class researchers from abroad; to support a =
revolutionary scientific agenda, as far as Delay Tolerant Networking is =
concerned, that boosts European competitiveness and supports a wide =
spectrum of applications; and to institutionalize and establish a =
permanent quality framework for innovative research activities in the =
convergence region of Thrace. Apart from the required infrastructure =
update, SPICE aims at promoting research through the publication of =
special issues in high-quality journals, the organisation of regular =
lectures and presentations from distinguished scientists, as well as the =
hosting of a panel session and two workshops on promising networking =
technologies, such as 4G communications.

=20

B. JOB DESCRIPTION

In the framework of SPICE project we invite applications for a team of =
scientists as follows:

=20

1. Two senior researchers from abroad to work at the Space =
Internetworking Center (Xanthi, Greece) and be responsible for =E2=80=9Cth=
e design of application-transport-routing protocols for SPACE and, in =
general, delay tolerant communications=E2=80=9D.

Vacancies duration: the term of the appointment will be for one year =
starting no later than March 2011 with an option for extension.

Job Requirements:

=E2=96=A0            Computer engineering or computer science degree

=E2=96=A0            Ph.D. Degree, preferably in the fields of computer =
networks or computer architecture or telecommunications

=E2=96=A0            Excellent knowledge of English language (speak, =
read and write fluently).

Experience in designing space communication protocols or protocols for =
delay tolerant networks is desirable. The evaluation of all candidates =
will be based on their experience, relevance of studies and research =
accomplishments.

=20

2. Experienced technical personnel for the administration of the Space =
Internetworking Center. Job Requirements:

=E2=96=A0            Computer engineering or computer science degree

=E2=96=A0            Knowledge of TCP/IP protocol stack

=E2=96=A0            Experience in designing/implementing internetworked =
systems.

=20

C. CONTRACT

Salary depends on qualifications. Maximum gross annual salary is =
40.000=E2=82=AC. Accommodation cost in Xanthi is relatively low (for =
example typical apartment with two bedrooms costs 300=E2=82=AC-350=E2=82=AC=
).

=20

D. EQUAL OPPORTUNITIES

Equal opportunities policy without distinctions (sex, origin, religion, =
disability, age etc) will be applied.

=20

E. REQUIRED DOCUMENTATION

Interested applicants should send their curriculum vitae using the =
Europass standard including:

=E2=96=A0            An application letter

=E2=96=A0            A research statement

=E2=96=A0            A synopsis of research experience

=E2=96=A0            A list of publications

=E2=96=A0            The names of three referees

by e-mail to [email-masked].

=20

Please use the following reference in the subject: =
SPICE_RESEARCHERS_2010. Please note that an acknowledgement e-mail will =
be sent upon receipt of each application within 3 working days.

=20

An interview may be asked by the Project Coordinator, in case this is =
deemed necessary. Selected candidates should provide:

=E2=96=A0            Original documents (or official translations) of =
Degrees

=E2=96=A0            Original documents (or official translations) of =
working experience certificates

=E2=96=A0            Three letters of reference.

=20

F. DEADLINE OF SUBMISSION

Initial deadline for receipt of e-mail: 20/11/2010

However applications will be accepted until positions are filled.

Candidates will be evaluated based on their qualification by a =
Scientific Committee.=

--Apple-Mail-14-635706827
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space; =
"><!--StartFragment--><p class=3D"MsoNormal">[We apologize in advance if =
you receive multiple copies of
this message]</p><p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p =
class=3D"MsoNormal">This call for interest is announced in the framework =
of the
project <b style=3D"mso-bidi-font-weight:normal">=E2=80=9CSpace =
Internetworking Center=E2=80=9D </b>with
the acronym SPICE (Grant Agreement Number 264226) which is funded by <b =
style=3D"mso-bidi-font-weight:normal">=E2=80=9CCapacities=E2=80=9D of =
the FP7 Seventh Framework
Programme.</b> The project is approved as a =E2=80=9CCoordination and =
Support Action=E2=80=9D
under the <b style=3D"mso-bidi-font-weight:normal">=E2=80=9CResearch =
Potential=E2=80=9D Scheme</b>
and has a duration of three years (01/09/10-31/8/13).</p><p =
class=3D"MsoNormal"><b><o:p>&nbsp;</o:p></b></p><p =
class=3D"MsoNormal"><b>A. BACKGROUND<o:p></o:p></b></p><p =
class=3D"MsoNormal">Internetworked Systems Laboratory (InterSys Group) =
has made
significant contributions to the architectural requirements, objectives
standardization and prototyping of future Space Internetworking =
strategy.
InterSys Group is a leading group in Europe in Space Internetworking,
participates in the Consultative Committee for Space Data Systems and in
several other European Bodies. The Internetworked Systems Laboratory has =
a total
funding of around 4 million Euros. The Project Coordinator, Vassilis
Tsaousidis, is a Professor in the Department of Electrical and Computer
Engineering of Democritus University of Thrace, Greece and the Director =
of
Internetworked Systems Laboratory.</p><p class=3D"MsoNormal">SPICE =
relies on three major objectives: to broaden the
group=E2=80=99s accomplished research innovation and engineering =
capacity both by
mobilizing resources to visit first-class cooperating European =
institutions and
hiring top class researchers from abroad; to support a revolutionary =
scientific
agenda, as far as Delay Tolerant Networking is concerned, that boosts =
European
competitiveness and supports a wide spectrum of applications; and to
institutionalize and establish a permanent quality framework for =
innovative
research activities in the convergence region of Thrace. Apart from the
required infrastructure update, SPICE aims at promoting research through =
the
publication of special issues in high-quality journals, the organisation =
of
regular lectures and presentations from distinguished scientists, as =
well as
the hosting of a panel session and two workshops on promising networking
technologies, such as 4G communications.</p><p =
class=3D"MsoNormal"><b><o:p>&nbsp;</o:p></b></p><p =
class=3D"MsoNormal"><b>B. JOB DESCRIPTION<o:p></o:p></b></p><p =
class=3D"MsoNormal">In the framework of SPICE project we invite =
applications for
a team of scientists as follows:</p><p =
class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p class=3D"MsoNormal">1. =
<b>Two senior researchers </b>from abroad to work at the
Space Internetworking Center (Xanthi, Greece) and be responsible for =
=E2=80=9Cthe
design of application-transport-routing protocols for SPACE and, in =
general,
delay tolerant communications=E2=80=9D. </p><p =
class=3D"MsoNormal">Vacancies duration: <b =
style=3D"mso-bidi-font-weight:normal">the
term of the appointment will be for one year starting no later than =
March 2011
with an option for extension.<o:p></o:p></b></p><p class=3D"MsoNormal">Job=
 Requirements: </p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span><b>Computer
engineering or computer science degree </b></p><p =
class=3D"MsoNormal"><span style=3D"font-family:&quot;Lucida =
Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0<span =
style=3D"mso-tab-count:1">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;</span></span><b>Ph.D.
Degree, preferably in the fields of computer networks or computer =
architecture
or telecommunications <o:p></o:p></b></p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span><b>Excellent
knowledge of English language (speak, read and write =
fluently).<o:p></o:p></b></p><p class=3D"MsoNormal">Experience in =
designing space communication protocols or
protocols for delay tolerant networks is desirable. The evaluation of =
all
candidates will be based on their experience, relevance of studies and =
research
accomplishments.</p><p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p =
class=3D"MsoNormal">2. <b>Experienced technical personnel </b>for the =
administration
of the Space Internetworking Center. Job Requirements:</p><p =
class=3D"MsoNormal"><span style=3D"font-family:&quot;Lucida =
Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span><b>Computer
engineering or computer science degree <o:p></o:p></b></p><p =
class=3D"MsoNormal"><span style=3D"font-family:&quot;Lucida =
Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span><b>Knowledge
of TCP/IP protocol stack <o:p></o:p></b></p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span><b>Experience
in designing/implementing internetworked systems.<o:p></o:p></b></p><p =
class=3D"MsoNormal"><b><o:p>&nbsp;</o:p></b></p><p =
class=3D"MsoNormal"><b>C. CONTRACT<o:p></o:p></b></p><p =
class=3D"MsoNormal">Salary depends on qualifications. Maximum gross =
annual
salary is 40.000=E2=82=AC. Accommodation cost in Xanthi is relatively =
low (for example
typical apartment with two bedrooms costs 300=E2=82=AC-350=E2=82=AC).</p><=
p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p class=3D"MsoNormal"><b>D. =
EQUAL OPPORTUNITIES<o:p></o:p></b></p><p class=3D"MsoNormal">Equal =
opportunities policy without distinctions (sex,
origin, religion, disability, age etc) will be applied.</p><p =
class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p class=3D"MsoNormal"><b>E. =
REQUIRED DOCUMENTATION<o:p></o:p></b></p><p class=3D"MsoNormal">Interested=
 applicants should send their curriculum vitae
using the Europass standard including:</p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>An
application letter </p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>A
research statement </p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>A
synopsis of research experience </p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>A
list of publications </p><p class=3D"MsoNormal"><span =
style=3D"font-family:&quot;Lucida Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>The
names of three referees</p><p class=3D"MsoNormal">by e-mail to <a =
href=3D"mailto:[email-masked]">[email-masked]</a>.
</p><p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p =
class=3D"MsoNormal">Please use the following reference in the subject: =
<b>SPICE_RESEARCHERS_2010</b>.
Please note that an acknowledgement e-mail will be sent upon receipt of =
each
application within 3 working days.</p><p =
class=3D"MsoNormal"><o:p>&nbsp;</o:p></p><p class=3D"MsoNormal">An =
interview may be asked by the Project Coordinator, in
case this is deemed necessary. Selected candidates should provide:</p><p =
class=3D"MsoNormal"><span style=3D"font-family:&quot;Lucida =
Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>Original
documents (or official translations) of Degrees </p><p =
class=3D"MsoNormal"><span style=3D"font-family:&quot;Lucida =
Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>Original
documents (or official translations) of working experience certificates =
</p><p class=3D"MsoNormal"><span style=3D"font-family:&quot;Lucida =
Grande&quot;;mso-bidi-font-family:
&quot;Lucida Grande&quot;">=E2=96=A0</span><span =
style=3D"mso-tab-count:1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; </span>Three
letters of reference.</p><p =
class=3D"MsoListParagraph"><o:p>&nbsp;</o:p></p><p =
class=3D"MsoNormal"><b>F. DEADLINE OF SUBMISSION <o:p></o:p></b></p><p =
class=3D"MsoNormal">Initial deadline for receipt of e-mail: =
<b>20/11/2010<o:p></o:p></b></p><p class=3D"MsoNormal">However =
applications will be accepted until positions are
filled.</p><p class=3D"MsoNormal"><i>Candidates will be evaluated based =
on their qualification
by a Scientific Committee.</i></p>

<!--EndFragment-->

</body></html>=

--Apple-Mail-14-635706827--

From: [email-masked]
To: [email-masked]
Date: Wed, 27 Oct 2010 03:00:26 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 11

您的邮件已经收到，我会尽快回复您，谢谢！

Date: Tue, 26 Oct 2010 11:49:50 +0100
From: Darren Long <[email-masked]>
To: "Akshay S.N" <[email-masked]>
Cc: [email-masked]
Subject: Re: [dtn-users] Running DTN on Blue tooth enabled x86 machines

Akshay,

One other thing I  conveniently glossed over is the need to have  the
bluez dependencies installed so that oasys and DTN2 qre built with BT CL
support.

The dependency packages depend on the linux distro you are using, but if
the dependencies are satisfied, then when configuring oasys, it should say:

checking whether bluetooth support should be enabled... try
checking for library containing baswap... -lbluetooth
checking bluetooth/bluetooth.h usability... yes
checking bluetooth/bluetooth.h presence... yes
checking for bluetooth/bluetooth.h... yes
checking whether bluetooth support was found... yes

and on the last line:

  EXTLIB_LDFLAGS: -ldl -lm  -ltcl8.5 -lbluetooth  -lexpat -lreadline
-lz  -ldb-4.8 -lax25  -lpthread

The last line of configure output for DTN2 should be as below:

EXTLIB_LDFLAGS: -ldns_sd  -ldl -lm  -ltcl8.5 -lbluetooth  -lexpat
-lreadline  -lz  -ldb-4.8 -lax25  -lpthread

Note the -lbluetooth is the bit we're interested in here. Other
libraries aren't relevant necessarily for your build.

Finally, once it is working you can use (if installed):

sudo hcidump -X

to see the BT traffic.

Darren

On 26/10/10 11:33, Darren Long wrote:
> Hi Akshay
> 
> I've not used BT CL for a while but I just got it running between my
> net-book and my workstation.
> 
> In my dtn.conf files, I added an interface for BT CL like so:
> 
> 	interface add bt0 bt
> 
> I added the discovery and announce lines like so:
> 
> 	discovery add btdisc0 bt
> 	discovery announce announce-bt0 btdisc0 bt interval=60
> 
> I couldn't remember if I needed to peer the devices, but nothing seemed
> to happen, so on my netbook, I used the  bluetooth-applet to search for
> my workstation and associated with it (i.e. typed in the right pass codes).
> 
> Then, as if by magic, the BT link appeared.
> 
> In the past I've had this running on embedded platforms with no GUI, and
> it took a while to figure out how to handle bluetooth peering without
> GUI apps.  Perhaps you don't need to worry about that though.
> 
> Good luck,
> 
> Darren
> 
> On 26/10/10 10:34, Akshay S.N wrote:
>>
>> Hello All,
>> I have installed DTN on 2 x86 machines and DTN works well over TCP . Now
>> i have need where i don have any internet connection in my machines
>> rather i have blue-tooth setup on both the machines and i have a
>> Blue-tooth 12 Hex digit  MAC address for both the machines.
>>
>> How can i make DTN to work over Blue-tooth. I believe there is
>> Blue-tooth convergence layer already.
>>
>> Please guide to some documents on how  to run DTN over bluetooth or any
>> steps/ changes to be done in dtn.conf. I couldn't find a good
>> documentation for DTN over blue-tooth.
>>
>> -- 
>> Regards,
>> Akshay
>>
>>
>>
>>
>> _______________________________________________
>> dtn-users mailing list
>> [email-masked]
>> http://maillists.intel-research.net/mailman/listinfo/dtn-users
> 
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users

Date: Tue, 26 Oct 2010 11:33:57 +0100
From: Darren Long <[email-masked]>
To: "Akshay S.N" <[email-masked]>
Cc: [email-masked]
Subject: Re: [dtn-users] Running DTN on Blue tooth enabled x86 machines

Hi Akshay

I've not used BT CL for a while but I just got it running between my
net-book and my workstation.

In my dtn.conf files, I added an interface for BT CL like so:

	interface add bt0 bt

I added the discovery and announce lines like so:

	discovery add btdisc0 bt
	discovery announce announce-bt0 btdisc0 bt interval=60

I couldn't remember if I needed to peer the devices, but nothing seemed
to happen, so on my netbook, I used the  bluetooth-applet to search for
my workstation and associated with it (i.e. typed in the right pass codes).

Then, as if by magic, the BT link appeared.

In the past I've had this running on embedded platforms with no GUI, and
it took a while to figure out how to handle bluetooth peering without
GUI apps.  Perhaps you don't need to worry about that though.

Good luck,

Darren

On 26/10/10 10:34, Akshay S.N wrote:
> 
> Hello All,
> I have installed DTN on 2 x86 machines and DTN works well over TCP . Now
> i have need where i don have any internet connection in my machines
> rather i have blue-tooth setup on both the machines and i have a
> Blue-tooth 12 Hex digit  MAC address for both the machines.
> 
> How can i make DTN to work over Blue-tooth. I believe there is
> Blue-tooth convergence layer already.
> 
> Please guide to some documents on how  to run DTN over bluetooth or any
> steps/ changes to be done in dtn.conf. I couldn't find a good
> documentation for DTN over blue-tooth.
> 
> -- 
> Regards,
> Akshay
> 
> 
> 
> 
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users

Date: Tue, 26 Oct 2010 15:04:15 +0530
From: "Akshay S.N" <[email-masked]>
To: [email-masked]
Subject: [dtn-users] Running DTN on Blue tooth enabled x86 machines

--0016363b9d3af63ec5049381cf56
Content-Type: text/plain; charset=ISO-8859-1

Hello All,
I have installed DTN on 2 x86 machines and DTN works well over TCP . Now i
have need where i don have any internet connection in my machines rather i
have blue-tooth setup on both the machines and i have a Blue-tooth 12 Hex
digit  MAC address for both the machines.

How can i make DTN to work over Blue-tooth. I believe there is Blue-tooth
convergence layer already.

Please guide to some documents on how  to run DTN over bluetooth or any
steps/ changes to be done in dtn.conf. I couldn't find a good documentation
for DTN over blue-tooth.

-- 
Regards,
Akshay

--0016363b9d3af63ec5049381cf56
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<br>Hello All,<br><div class=3D"gmail_quote">I have installed DTN on 2 x86 =
machines and DTN works well over TCP . Now i have need where i don have any=
 internet connection in my machines rather i have blue-tooth setup on both =
the machines and i have a Blue-tooth 12 Hex digit=A0 MAC address for both t=
he machines.<br>

<br>How can i make DTN to work over Blue-tooth. I believe there is Blue-too=
th convergence layer already.<br><br>Please guide to some documents on how=
=A0 to run DTN over bluetooth or any steps/ changes to be done in dtn.conf.=
 I couldn&#39;t find a good documentation for DTN over blue-tooth.<br>

<br>-- <br>Regards,<br><font color=3D"#888888">Akshay<br>
</font></div><br><br>

--0016363b9d3af63ec5049381cf56--

From: "Scott, Keith L." <[email-masked]>
To: Victor lyamtsev <[email-masked]>, "[email-masked]" <[email-masked]>
Date: Tue, 26 Oct 2010 05:16:11 -0400
Accept-Language: en-US
acceptlanguage: en-US
Subject: Re: [dtn-users] dtn2: same ip address for different CL's ?

------=_NextPart_000_0000_01CB74F6.CE6F2B40
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

The IP stack differentiates endpoints by (IP address, Protocol (e.g.
TCP/UDP), Port).  Said differently, ANY application (not just BP) can open
two sockets on the same address/port for TCP and UDP (and probably, though I
haven't seen it, three if it used TCP/UDP/SCTP).  Incoming packets are
demultiplexed based on the address, protocol, and port to the correct
socket.

		--keith

-----Original Message-----
From: [email-masked]
[mailto:[email-masked]] On Behalf Of Victor
lyamtsev
Sent: Tuesday, October 26, 2010 9:23 AM
To: [email-masked]
Subject: [dtn-users] dtn2: same ip address for different CL's ?

Would it be valid to use the same ip address/ port number for
different convergence layers?
For example, if I try to use
link add link_udp 127.0.0.1 ALWAYSON udp
link add link_tcp 127.0.0.1 ALWAYSON tcp
in the config file - dtnd seems to start up without complain, but how
does that work?

Thank you,
-v
_______________________________________________
dtn-users mailing list
[email-masked]
http://maillists.intel-research.net/mailman/listinfo/dtn-users

------=_NextPart_000_0000_01CB74F6.CE6F2B40
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"

------=_NextPart_000_0000_01CB74F6.CE6F2B40--

Date: Tue, 26 Oct 2010 04:23:16 -0400
From: Victor lyamtsev <[email-masked]>
To: [email-masked]
Subject: [dtn-users] dtn2: same ip address for different CL's ?

Would it be valid to use the same ip address/ port number for
different convergence layers?
For example, if I try to use
link add link_udp 127.0.0.1 ALWAYSON udp
link add link_tcp 127.0.0.1 ALWAYSON tcp
in the config file - dtnd seems to start up without complain, but how
does that work?

Thank you,
-v

From: [email-masked]
To: [email-masked]
Date: Tue, 26 Oct 2010 03:01:34 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 10

您的邮件已经收到，我会尽快回复您，谢谢！

From: [email-masked]
To: [email-masked]
Date: Mon, 25 Oct 2010 03:00:30 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 9

您的邮件已经收到，我会尽快回复您，谢谢！

From: [email-masked]
To: [email-masked]
Date: Sun, 24 Oct 2010 03:00:43 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 8

您的邮件已经收到，我会尽快回复您，谢谢！

From: [email-masked]
To: [email-masked]
Date: Fri, 22 Oct 2010 03:00:21 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 7

您的邮件已经收到，我会尽快回复您，谢谢！

From: <[email-masked]>
To: DTN User Group <[email-masked]>
Date: Thu, 21 Oct 2010 12:45:06 -0400 (EDT)
Subject: [dtn-users] Installing DTN2

Hi,

I am a new user of DTN2 and am trying to install DTN2 on Ubuntu.I have downloaded DTN2 and Oasys from SourceForge.Can some one please tell me how to install DTN2?I am not able to understand the documentation in the DTN2 manual.

Thanks

Neha Paranjape
Graduate Student(Telecommunications)
University of Maryland,College Park

Date: Wed, 20 Oct 2010 21:46:23 +0100
From: Elwyn Davies <[email-masked]>
To: Leo Iannacone <[email-masked]>
Cc: [email-masked]
Subject: Re: [dtn-users] DTN2 scheduled links?

Hi.

The routing side of SCHEDULED links is essentially unimplemented in the 
core DTN2 code. There is some infrastructure support via the notion of 
SCHEDULED links and a bit of functionality in the contact manager to 
handle them, but there is no router to drive them. Check out the 
functional spec at 
http://www.n4c.eu/Download/n4c-wp2-023-dtn-infrastructure-fs-12.pdf 
which has information about what is available.

It is possible that someone implemented the contact graph routing used 
in ION and documented in 
http://tools.ietf.org/html/draft-burleigh-dtnrg-cgr-00 (and the ION 
documentation) as a DTN2 external router, but I haven't seen anything 
about such an implementation. There is some external router 
infrastructure at http://code.google.com/p/external-dtn2-router but this 
doesn't contain a specific router AFAICS. There is external router 
implementation of the RAPID protocol at http://prisms.cs.umass.edu/rapid/.

Regards,
Elwyn Davies

Leo Iannacone wrote:
> Hi all,
>
> someone of you could explain if is it possible use SCHEDULED links?
> And... how to use it?
>
> I didn't found any doc about that, in the code directory I read:
>
> file STATUS:
> -- Scheduled
>  No support for scheduled links is yet implemented.
>
> Is this information right?
>
>
> Leo Iannacone.
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users
>   

From: [email-masked]
To: [email-masked]
Date: Thu, 21 Oct 2010 03:00:22 +0800
Subject: [dtn-users] Auto-Re: dtn-users Digest, Vol 36, Issue 6

您的邮件已经收到，我会尽快回复您，谢谢！

From: Leo Iannacone <[email-masked]>
Date: Wed, 20 Oct 2010 19:23:31 +0200
To: [email-masked]
Subject: [dtn-users] DTN2 scheduled links?

Hi all,

someone of you could explain if is it possible use SCHEDULED links?
And... how to use it?

I didn't found any doc about that, in the code directory I read:

file STATUS:
-- Scheduled
 No support for scheduled links is yet implemented.

Is this information right?

Leo Iannacone.

Date: Wed, 13 Oct 2010 22:54:53 -0700
From: Shaukat Ali <[email-masked]>
To: [email-masked]
Subject: [dtn-users] New Comer

--0016364ee4e64d6a5904928d59e3
Content-Type: text/plain; charset=ISO-8859-1

Hi Everyone,

This is my first email to the group. I need some help on urgent basis. I
have installed and configured ONE simulator. I am using jDK 6.0. I have run
the one.bat file and it works fine and  loads the interface. Can anyone tell
me how to run some scenarios and setting different parameters? One can say I
am a new comer so how can I take a start?
Any help will be highly appreciated.

regards,

Shaukat

--0016364ee4e64d6a5904928d59e3
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi Everyone,<div><br></div><div>This is my first email to the group. I need=
 some help on urgent basis. I have installed and configured ONE simulator. =
I am using jDK 6.0. I have run the one.bat file and it works fine and =A0lo=
ads the interface. Can anyone tell me how to run some scenarios and setting=
 different parameters? One can say I am a new comer so how can I take a sta=
rt?</div>
<div>Any help will be highly appreciated.</div><div><br></div><div>regards,=
</div><div><br></div><div>Shaukat</div>

--0016364ee4e64d6a5904928d59e3--

Date: Tue, 12 Oct 2010 21:45:46 +0300
From: Sotirios Diamantopoulos <[email-masked]>
To: [email-masked], [email-masked], [email-masked]
Subject: [dtn-users] BCFIC 2011 - "Space/Earth Delay/Disruption Tolerant Networking"	special session

---------------------------------------------------------------------------
*** Our apologies if you receive multiple copies of this CFP ***
---------------------------------------------------------------------------

Baltic Congress on Future Internet Communications (BCFIC Riga 2011)

Special session on "Space/Earth Delay/Disruption Tolerant Networking"

Riga, Latvia

February, 16-18, 2011

   "Space/Earth Delay/Disruption Tolerant Networking" special session,  
held in conjunction with the Baltic Conference on Future Internet  
Communications, on February 2011 at Riga, Latvia (BCFIC Riga 2011),  
seeks novel ideas in the form of preliminary or work-in-progress  
results as well as mature research papers for Delay-/Disruption  
Tolerant Networks. Work-in-progress papers are appropriate indeed for  
the session. Such papers could be further developed with more mature  
results and submitted to the relevant special session of the Journal  
of Internet Engineering, which is scheduled for April 2011. Topics  
include but are not limited to:

* DTN Routing

* Reliability mechanisms

* Congestion and Storage Congestion Control

* Resource Sharing in DTN environments

* Network Coding techniques for DTNs

* Application Development

* Network management

* Error and Flow Control

* Privacy and Security of Information in DTNs

* Naming/Addressing and interoperability issues with the Internet architecture

* Experiences and Measurements from DTN testbeds

* Performance Evaluation and Metrics for DTN Research

* Performance and Design Tradeoffs for DTN Algorithms and Protocols

* DTN Architectures:

   - Satellite Communications

   - Deep-space Communications

   - Underwater Communications

   - Connectivity in Developing Countries

   - Communication in Public and Private Transport Vehicles

It should also be noted that:

- A selection of the best papers will be invited for special issues in  
the Journal of Internet Engineering and Elsevier Adhoc Networks Journal.

- BCFIC Riga 2011 proceedings will be published in IEEE Xplore  
(approved) and indexed in the correspondent databases (e.g. EI-index  
and others).

- BCFIC Riga 2011 is Technically Co-Sponsored by IEEE Latvia (approved).

Paper-submission Deadline: November 15, 2010

Acceptance Notification: December 6, 2010

Camera Ready: December 18, 2010

Session Organizers:

- Vassilis Tsaoussidis, Professor, Department of Electrical  
Engineering, Democritus University of Thrace, Greece

- Efthymios Koutsogiannis, PhD Candidate

- Sotirios Diamantopoulos, PhD Candidate

Kind Regards,

Sotirios Diamantopoulos

Internetworked Systems Lab, Democritus University of Thrace
http://intersys.ee.duth.gr/

From: Darren Long <[email-masked]>
Date: Sat, 09 Oct 2010 15:11:19 +0100
To: [email-masked]
Subject: [dtn-users] Patches for updates to AX.25 Connected Mode CL in DTN2

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT

Hi,

Here's 5 patches updating the AX.25 Connected Mode CL in DTN2.  They don't touch anything but AX.25 specific files.

A new link option, ack_window is added for ax25cm links, and implemented in the SeqpacketConvergenceLayer class.  This can be used to reduce the number of convergence layer  protocol ack segments sent.    This means that ack segments will be sent for every ack_window data segments, acking the byte range ack_window * segment_length.  Ack segments are always sent when a data_segment is flagged as the end of a bundle.  Setting ack_window to anything higher than 1 will increase the granularity at which reactive fragmentation is performed. The parameter defaults to 8 if unspecified.  Use of ack_window seems to be backwards compatible with older code.

A new file, doc/ax25.txt is added, providing a reference to the relevant wiki page.

Some general tidying of associated files is performed.

This has been running well for a number of weeks over a UHF link, tested on Ubuntu 10.04 (i686) and Debian Squeeze (i686).

Cheers,

Darren

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: application/octet-stream; name=DTN2.3494.export
Content-transfer-encoding: 7bit
Content-disposition: attachment; filename=DTN2.3494.export

# HG changeset patch
# User Darren Long <[email-masked]>
# Date 1279674619 -3600
# Node ID d332fcbbff8ff4fa56dddaec2cba11b983ef4141
# Parent  fb5ddfd8cf830cf40a2181eeb69746bb0776b500
Initial support for ack_window option for AX.25 convergence layer.  Minimises ack traffic.

diff -r fb5ddfd8cf83 -r d332fcbbff8f servlib/conv_layers/SeqpacketConvergenceLayer.cc
--- a/servlib/conv_layers/SeqpacketConvergenceLayer.cc	Tue Jul 06 14:11:32 2010 -0400
+++ b/servlib/conv_layers/SeqpacketConvergenceLayer.cc	Wed Jul 21 02:10:19 2010 +0100
@@ -33,7 +33,8 @@
       segment_ack_enabled_(true),
       negative_ack_enabled_(true),
       keepalive_interval_(10),
-      segment_length_(4096)
+      segment_length_(4096),
+      ack_window_(8)
 {
 }
 
@@ -70,6 +71,9 @@
     
     p.addopt(new oasys::UIntOpt("segment_length",
                                 &params->segment_length_));
+                                
+    p.addopt(new oasys::UIntOpt("ack_window",
+                                &params->ack_window_)); 
     
     p.addopt(new oasys::UInt8Opt("cl_version",
                                  &cl_version_));
@@ -118,6 +122,7 @@
     buf->appendf("negative_ack_enabled: %u\n", params->negative_ack_enabled_);
     buf->appendf("keepalive_interval: %u\n", params->keepalive_interval_);
     buf->appendf("segment_length: %u\n", params->segment_length_);
+    buf->appendf("ack_window: %u\n", params->ack_window_);
 }
 
 //----------------------------------------------------------------------
@@ -131,7 +136,8 @@
       send_segment_todo_(0),
       recv_segment_todo_(0),
       breaking_contact_(false),
-      contact_initiated_(false)
+      contact_initiated_(false),
+      ack_window_todo_(0)
 {
 }
 
@@ -462,7 +468,7 @@
     if (iter == incoming->ack_data_.end() || incoming->rcvd_data_.empty()) {
         goto check_done;
     }
-    
+      
 
     // however, we have to be careful to check the recv_data as well
     // to make sure we've actually gotten the segment, since the bit
@@ -470,17 +476,33 @@
     // completed
     while (1) {
         size_t rcvd_bytes  = incoming->rcvd_data_.num_contiguous();
-        size_t ack_len     = *iter + 1; 
-        size_t segment_len = ack_len - incoming->acked_length_;
-        (void)segment_len;
+        size_t ack_len     = rcvd_bytes; // DML hack // *iter + 1; 
+        //size_t segment_len = ack_len - incoming->acked_length_;
+        //(void)segment_len;
+
+        SeqpacketLinkParams* params = seqpacket_lparams();
         
-        if (ack_len > rcvd_bytes) {
+        // DML - If we have a whole bundle's worth of data we want to ack now
+        // otherwise, we want to see if we have a whole window's worth to ack,
+        // and if we have, ack that.  If not, we'll deal with it later.
+        
+        // so, if we don't have a full bundle or we have haven't reached the
+        // ack window yet, bail        
+        if(0 != ack_window_todo_) {
             log_debug("send_pending_acks: "
-                      "waiting to send ack length %zu for %zu byte segment "
-                      "since only received %zu",
-                      ack_len, segment_len, rcvd_bytes);
+                      "waiting to send ack for window %zu segments "
+                      "since need %zu more segments",
+                      params->ack_window_, ack_window_todo_);
             break;
         }
+        else {
+            // we might have a full bundle, or we might have reached an ack window
+            // but either way, ack all we have.
+            
+            
+            // we may need to set the ack_window_todo_
+            ack_window_todo_ = params->ack_window_;
+        }
 
         // make sure we have space in the send buffer
         encoding_len = 1 + SDNV::encoding_len(ack_len);
@@ -491,8 +513,7 @@
             break;
         }
         
-        // make sure we have space in the segment_length
-        SeqpacketLinkParams* params = seqpacket_lparams();
+
                
         if (totol_ack_len + encoding_len > params->segment_length_ ) {
             log_debug("send_pending_acks: "
@@ -502,9 +523,9 @@
         }        
         
         log_debug("send_pending_acks: "
-                  "sending ack length %zu for %zu byte segment "
+                  "sending ack length %zu "
                   "[range %u..%u] ack_data *%p",
-                  ack_len, segment_len, incoming->acked_length_, *iter,
+                  ack_len, incoming->acked_length_, *iter,
                   &incoming->ack_data_);
         
         *sendbuf_.end() = ACK_SEGMENT;
@@ -1103,6 +1124,9 @@
 bool
 SeqpacketConvergenceLayer::Connection::handle_data_segment(u_int8_t flags)
 {
+    SeqpacketLinkParams* params = dynamic_cast<SeqpacketLinkParams*>(params_);
+    ASSERT(params != NULL);
+
     IncomingBundle* incoming = NULL;
     if (flags & BUNDLE_START)
     {
@@ -1133,7 +1157,10 @@
             log_debug("got BUNDLE_START segment, creating new IncomingBundle");
             IncomingBundle* incoming = new IncomingBundle(new Bundle());
             incoming_.push_back(incoming);
+            ack_window_todo_ = params->ack_window_; // start counting towards the ack window now
         }
+        ack_window_todo_ = params->ack_window_; // start counting towards the ack window now
+
     }
     else if (incoming_.empty())
     {
@@ -1191,6 +1218,12 @@
         
         log_debug("got BUNDLE_END: total length %u",
                   incoming->total_length_);
+                  
+        ack_window_todo_ = 0; // trigger an ack now
+    }
+    else {
+            ASSERT(0 != ack_window_todo_);        
+            ack_window_todo_--; // count this towards the window
     }
     
     recv_segment_todo_ = segment_len;
diff -r fb5ddfd8cf83 -r d332fcbbff8f servlib/conv_layers/SeqpacketConvergenceLayer.h
--- a/servlib/conv_layers/SeqpacketConvergenceLayer.h	Tue Jul 06 14:11:32 2010 -0400
+++ b/servlib/conv_layers/SeqpacketConvergenceLayer.h	Wed Jul 21 02:10:19 2010 +0100
@@ -163,7 +163,7 @@
     }
     
     /**
-     * Link parameters shared among all stream based convergence layers.
+     * Link parameters shared among all Seqpacket based convergence layers.
      */
     class SeqpacketLinkParams : public ConnectionConvergenceLayer::LinkParams {
     public:
@@ -171,6 +171,7 @@
         bool  negative_ack_enabled_;	///< Enable negative acks
         u_int keepalive_interval_;	///< Seconds between keepalive packets
         u_int segment_length_;		///< Maximum size of transmitted segments
+        u_int ack_window_;          ///< Number of segments before acking
 
     protected:
         // See comment in LinkParams for why this should be protected
@@ -262,6 +263,7 @@
                                         ///< break_contact 
         bool contact_initiated_; //< bit to prevent certain actions before
     	                             //< contact is initiated
+    	u_int ack_window_todo_; //< number of segments heard so far in window
     };
 
     /// For some gcc variants, this typedef seems to be needed

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: application/octet-stream; name=DTN2.3495.export
Content-transfer-encoding: 7bit
Content-disposition: attachment; filename=DTN2.3495.export

# HG changeset patch
# User Darren Long <[email-masked]>
# Date 1283607593 -3600
# Node ID 4b9781c07cca90b9aa55b4d4cbd370d0f2748f45
# Parent  d332fcbbff8ff4fa56dddaec2cba11b983ef4141
Sorted out some formatting and tweaked comments.

diff -r d332fcbbff8f -r 4b9781c07cca servlib/conv_layers/AX25CMConvergenceLayer.cc
--- a/servlib/conv_layers/AX25CMConvergenceLayer.cc	Wed Jul 21 02:10:19 2010 +0100
+++ b/servlib/conv_layers/AX25CMConvergenceLayer.cc	Sat Sep 04 14:39:53 2010 +0100
@@ -776,7 +776,7 @@
     oasys::CRC32 crc;
     if(static_cast<uint>(cc) <= sizeof(oasys::CRC32::CRC_t)) {
         // DML: I had an assert here to see if we ever get 'packets' that are smaller than
-        // the CRC size.  Well, we do, and I can't for the life of me figure out why.
+        // the CRC size.  Well, we did, and I can't for the life of me figure out why.
         // So, we have to protect ourselves from this kind of thing happening, and for
         // now I think the thing to do is to disconnect the other end, because obviously
         // their AX.25 CL implementation sucks ;-) or there's a problem somewhere else
@@ -884,11 +884,7 @@
 		}
 	}
 	
-	
-
-
     return true;
-
 }

diff -r d332fcbbff8f -r 4b9781c07cca servlib/conv_layers/AX25CMConvergenceLayer.h
--- a/servlib/conv_layers/AX25CMConvergenceLayer.h	Wed Jul 21 02:10:19 2010 +0100
+++ b/servlib/conv_layers/AX25CMConvergenceLayer.h	Sat Sep 04 14:39:53 2010 +0100
@@ -153,7 +153,7 @@
         virtual void handle_poll_activity();
         /// @}
 
-        /// @{ virtual from StreamConvergenceLayer::Connection
+        /// @{ virtual from SeqpacketConvergenceLayer::Connection
         void send_data();
         void process_data();
         
diff -r d332fcbbff8f -r 4b9781c07cca servlib/conv_layers/SeqpacketConvergenceLayer.cc
--- a/servlib/conv_layers/SeqpacketConvergenceLayer.cc	Wed Jul 21 02:10:19 2010 +0100
+++ b/servlib/conv_layers/SeqpacketConvergenceLayer.cc	Sat Sep 04 14:39:53 2010 +0100
@@ -1,4 +1,5 @@
 /*
+ *    Copyright 2009-2010 Darren Long, [email-masked]
  *    Copyright 2006 Intel Corporation
  * 
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -461,19 +462,24 @@
 
     size_t encoding_len, totol_ack_len=0;
     
-    
+    // DML TODO: the bitmask stuff incoming->ack_data_
+    // seems nugatory, so perhaps it can go.  I've definitely broken it, but
+    // it doesn't stop the this working anyway.
+    // If it does go, then perhaps the while loop can go too, as data segments
+    // should always be received in order and without scope gaps.
+ 
     // when data segment headers are received, the last bit of the
     // segment is marked in ack_data, thus if there's nothing in
     // there, we don't need to send out an ack.
     if (iter == incoming->ack_data_.end() || incoming->rcvd_data_.empty()) {
         goto check_done;
     }
-      
-
+    
     // however, we have to be careful to check the recv_data as well
     // to make sure we've actually gotten the segment, since the bit
     // in ack_data is marked when the segment is begun, not when it's
     // completed
+    
     while (1) {
         size_t rcvd_bytes  = incoming->rcvd_data_.num_contiguous();
         size_t ack_len     = rcvd_bytes; // DML hack // *iter + 1; 
@@ -486,8 +492,9 @@
         // otherwise, we want to see if we have a whole window's worth to ack,
         // and if we have, ack that.  If not, we'll deal with it later.
         
-        // so, if we don't have a full bundle or we have haven't reached the
-        // ack window yet, bail        
+        // DML -If we don't have a full bundle or we have haven't reached the
+        // ack window yet, bail. The ack_window_todo attribute is decremented 
+        // or set to zero in handle_data_segment().
         if(0 != ack_window_todo_) {
             log_debug("send_pending_acks: "
                       "waiting to send ack for window %zu segments "
@@ -496,11 +503,8 @@
             break;
         }
         else {
-            // we might have a full bundle, or we might have reached an ack window
-            // but either way, ack all we have.
-            
-            
-            // we may need to set the ack_window_todo_
+                        
+            // we need to reinitialise the ack_window_todo_
             ack_window_todo_ = params->ack_window_;
         }
 
diff -r d332fcbbff8f -r 4b9781c07cca servlib/conv_layers/SeqpacketConvergenceLayer.h
--- a/servlib/conv_layers/SeqpacketConvergenceLayer.h	Wed Jul 21 02:10:19 2010 +0100
+++ b/servlib/conv_layers/SeqpacketConvergenceLayer.h	Sat Sep 04 14:39:53 2010 +0100
@@ -1,17 +1,18 @@
 /*
- *    Copyright 2006 Intel Corporation
+ *    Copyright 2009-2010 Darren Long, [email-masked]
+ *	  Copyright 2006 Intel Corporation
  * 
- *    Licensed under the Apache License, Version 2.0 (the "License");
- *    you may not use this file except in compliance with the License.
- *    You may obtain a copy of the License at
+ *	  Licensed under the Apache License, Version 2.0 (the "License");
+ *	  you may not use this file except in compliance with the License.
+ *	  You may obtain a copy of the License at
  * 
- *        http://www.apache.org/licenses/LICENSE-2.0
+ *		  http://www.apache.org/licenses/LICENSE-2.0
  * 
- *    Unless required by applicable law or agreed to in writing, software
- *    distributed under the License is distributed on an "AS IS" BASIS,
- *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *    See the License for the specific language governing permissions and
- *    limitations under the License.
+ *	  Unless required by applicable law or agreed to in writing, software
+ *	  distributed under the License is distributed on an "AS IS" BASIS,
+ *	  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *	  See the License for the specific language governing permissions and
+ *	  limitations under the License.
  */
 
 #ifndef _SEQPACKET_CONVERGENCE_LAYER_H_
@@ -24,7 +25,7 @@
 
 /**
  * Another shared-implementation convergence layer class for use with
- * reliable, in-order SEQ_PACLET protocols,i.e. Connected Mode AX.25.
+ * reliable, in-order SEQ_PACKET protocols, i.e. Connected Mode AX.25.
  * The goal is to share as much functionality as
  * possible between protocols that have in-order, reliable, delivery
  * semantics, but require fixed sized payloads rather than conforming to 
@@ -71,6 +72,7 @@
  * The IncomingBundle is used to record state about bundle reception.
  * The rcvd_data_ bitmap is extended contiguously with the amount of
  * data that has been received, including partially received segments.
+ *
  * To track segments that we have received but haven't yet acked, we
  * set a single bit for the offset of the end of the segment in the
  * ack_data_ bitmap. We also separately record the total range of acks
@@ -79,206 +81,206 @@
  */
 class SeqpacketConvergenceLayer : public ConnectionConvergenceLayer {
 public:
-    /**
-     * Constructor
-     */
-    SeqpacketConvergenceLayer(const char* logpath, const char* cl_name,
-                           u_int8_t cl_version);
+	/**
+	 * Constructor
+	 */
+	SeqpacketConvergenceLayer(const char* logpath, const char* cl_name,
+						   u_int8_t cl_version);
 
 protected:
-    /**
-     * Values for ContactHeader flags.
-     */
-    typedef enum {
-        SEGMENT_ACK_ENABLED   = 1 << 0,	///< segment acks requested
-        REACTIVE_FRAG_ENABLED = 1 << 1,	///< reactive fragmentation enabled
-        NEGATIVE_ACK_ENABLED  = 1 << 2,	///< refuse bundle enabled
-    } contact_header_flags_t;
+	/**
+	 * Values for ContactHeader flags.
+	 */
+	typedef enum {
+		SEGMENT_ACK_ENABLED	  = 1 << 0, ///< segment acks requested
+		REACTIVE_FRAG_ENABLED = 1 << 1, ///< reactive fragmentation enabled
+		NEGATIVE_ACK_ENABLED  = 1 << 2, ///< refuse bundle enabled
+	} contact_header_flags_t;
 
-    /**
-     * Contact initiation header. Sent at the beginning of a contact. 
-     */
-    struct ContactHeader {
-        u_int32_t magic;		///< magic word (MAGIC: "dtn!")
-        u_int8_t  version;		///< cl protocol version
-        u_int8_t  flags;		///< connection flags (see above)
-        u_int16_t keepalive_interval;	///< seconds between keepalive packets
-        // SDNV   local_eid_length           local eid length
-        // byte[] local_eid                  local eid data
-    } __attribute__((packed));
+	/**
+	 * Contact initiation header. Sent at the beginning of a contact. 
+	 */
+	struct ContactHeader {
+		u_int32_t magic;		///< magic word (MAGIC: "dtn!")
+		u_int8_t  version;		///< cl protocol version
+		u_int8_t  flags;		///< connection flags (see above)
+		u_int16_t keepalive_interval;	///< seconds between keepalive packets
+		// SDNV	  local_eid_length			 local eid length
+		// byte[] local_eid					 local eid data
+	} __attribute__((packed));
 
-    /**
-     * Valid type codes for the protocol messages, shifted into the
-     * high-order four bits of the byte. The lower four bits are used
-     * for per-message flags, defined below.
-     */
-    typedef enum {
-        DATA_SEGMENT	= 0x1 << 4,	///< a segment of bundle data
-                                        ///< (followed by a SDNV segment length)
-        ACK_SEGMENT	= 0x2 << 4,	///< acknowledgement of a segment
-                                        ///< (followed by a SDNV ack length)
-        REFUSE_BUNDLE	= 0x3 << 4,	///< reject reception of current bundle
-        KEEPALIVE	= 0x4 << 4,	///< keepalive packet
-        SHUTDOWN	= 0x5 << 4,	///< about to shutdown
-    } msg_type_t;
+	/**
+	 * Valid type codes for the protocol messages, shifted into the
+	 * high-order four bits of the byte. The lower four bits are used
+	 * for per-message flags, defined below.
+	 */
+	typedef enum {
+		DATA_SEGMENT	= 0x1 << 4, ///< a segment of bundle data
+									///< (followed by a SDNV segment length)
+		ACK_SEGMENT		= 0x2 << 4, ///< acknowledgement of a segment
+									///< (followed by a SDNV ack length)
+		REFUSE_BUNDLE	= 0x3 << 4, ///< reject reception of current bundle
+		KEEPALIVE		= 0x4 << 4, ///< keepalive packet
+		SHUTDOWN		= 0x5 << 4, ///< about to shutdown
+	} msg_type_t;
 
-    /**
-     * Valid flags for the DATA_SEGMENT message.
-     */
-    typedef enum {
-        BUNDLE_START	= 0x1 << 1,	///< First segment of a bundle
-        BUNDLE_END	= 0x1 << 0,	///< Last segment of a bundle
-    } data_segment_flags_t;
-    
-    /**
-     * Valid flags for the SHUTDOWN message.
-     */
-    typedef enum {
-        SHUTDOWN_HAS_REASON = 0x1 << 1,	///< Has reason code
-        SHUTDOWN_HAS_DELAY  = 0x1 << 0,	///< Has reconnect delay
-    } shutdown_flags_t;
-    
-    /**
-     * Values for the SHUTDOWN reason codes
-     */
-    typedef enum {
-        SHUTDOWN_NO_REASON	  = 0xff, ///< no reason code (never sent)
-        SHUTDOWN_IDLE_TIMEOUT 	  = 0x0,  ///< idle connection
-        SHUTDOWN_VERSION_MISMATCH = 0x1,  ///< version mismatch
-        SHUTDOWN_BUSY  		  = 0x2,  ///< node is busy
-    } shutdown_reason_t;
+	/**
+	 * Valid flags for the DATA_SEGMENT message.
+	 */
+	typedef enum {
+		BUNDLE_START	= 0x1 << 1, ///< First segment of a bundle
+		BUNDLE_END		= 0x1 << 0, ///< Last segment of a bundle
+	} data_segment_flags_t;
+	
+	/**
+	 * Valid flags for the SHUTDOWN message.
+	 */
+	typedef enum {
+		SHUTDOWN_HAS_REASON = 0x1 << 1, ///< Has reason code
+		SHUTDOWN_HAS_DELAY	= 0x1 << 0, ///< Has reconnect delay
+	} shutdown_flags_t;
+	
+	/**
+	 * Values for the SHUTDOWN reason codes
+	 */
+	typedef enum {
+		SHUTDOWN_NO_REASON			= 0xff, ///< no reason code (never sent)
+		SHUTDOWN_IDLE_TIMEOUT		= 0x0,	///< idle connection
+		SHUTDOWN_VERSION_MISMATCH	= 0x1,	///< version mismatch
+		SHUTDOWN_BUSY				= 0x2,	///< node is busy
+	} shutdown_reason_t;
 
-    /**
-     * Convert a reason code to a string.
-     */
-    static const char* shutdown_reason_to_str(shutdown_reason_t reason)
-    {
-        switch (reason) {
-        case SHUTDOWN_NO_REASON: 	return "no reason";
-        case SHUTDOWN_IDLE_TIMEOUT: 	return "idle connection";
-        case SHUTDOWN_VERSION_MISMATCH: return "version mismatch";
-        case SHUTDOWN_BUSY: 		return "node is busy";
-        }
-        NOTREACHED;
-    }
-    
-    /**
-     * Link parameters shared among all Seqpacket based convergence layers.
-     */
-    class SeqpacketLinkParams : public ConnectionConvergenceLayer::LinkParams {
-    public:
-        bool  segment_ack_enabled_;	///< Use per-segment acks
-        bool  negative_ack_enabled_;	///< Enable negative acks
-        u_int keepalive_interval_;	///< Seconds between keepalive packets
-        u_int segment_length_;		///< Maximum size of transmitted segments
-        u_int ack_window_;          ///< Number of segments before acking
+	/**
+	 * Convert a reason code to a string.
+	 */
+	static const char* shutdown_reason_to_str(shutdown_reason_t reason)
+	{
+		switch (reason) {
+		case SHUTDOWN_NO_REASON:	return "no reason";
+		case SHUTDOWN_IDLE_TIMEOUT:		return "idle connection";
+		case SHUTDOWN_VERSION_MISMATCH: return "version mismatch";
+		case SHUTDOWN_BUSY:			return "node is busy";
+		}
+		NOTREACHED;
+	}
+	
+	/**
+	 * Link parameters shared among all Seqpacket based convergence layers.
+	 */
+	class SeqpacketLinkParams : public ConnectionConvergenceLayer::LinkParams {
+	public:
+		bool  segment_ack_enabled_; ///< Use per-segment acks
+		bool  negative_ack_enabled_;///< Enable negative acks
+		u_int keepalive_interval_;	///< Seconds between keepalive packets
+		u_int segment_length_;		///< Maximum size of transmitted segments
+		u_int ack_window_;			///< Number of segments before acking
 
-    protected:
-        // See comment in LinkParams for why this should be protected
-        SeqpacketLinkParams(bool init_defaults);
-    };
-    
-    /**
-     * Version of the actual CL protocol.
-     */
-    u_int8_t cl_version_;
+	protected:
+		// See comment in LinkParams for why this should be protected
+		SeqpacketLinkParams(bool init_defaults);
+	};
+	
+	/**
+	 * Version of the actual CL protocol.
+	 */
+	u_int8_t cl_version_;
 
-    /**
-     * Seqpacket connection class.
-     */
-    class Connection : public CLConnection {
-    public:
-        /**
-         * Constructor.
-         */
-        Connection(const char* classname,
-                   const char* logpath,
-                   SeqpacketConvergenceLayer* cl,
-                   SeqpacketLinkParams* params,
-                   bool active_connector);
+	/**
+	 * Seqpacket connection class.
+	 */
+	class Connection : public CLConnection {
+	public:
+		/**
+		 * Constructor.
+		 */
+		Connection(const char* classname,
+				   const char* logpath,
+				   SeqpacketConvergenceLayer* cl,
+				   SeqpacketLinkParams* params,
+				   bool active_connector);
 
-        /// @{ virtual from CLConnection
-        bool send_pending_data();
-        void handle_bundles_queued();
-        void handle_cancel_bundle(Bundle* bundle);
-        void handle_poll_timeout();
-        void break_contact(ContactEvent::reason_t reason);
-        /// @}
+		/// @{ virtual from CLConnection
+		bool send_pending_data();
+		void handle_bundles_queued();
+		void handle_cancel_bundle(Bundle* bundle);
+		void handle_poll_timeout();
+		void break_contact(ContactEvent::reason_t reason);
+		/// @}
 
-    protected:
-        /**
-         * Hook used to tell the derived CL class to drain data out of
-         * the send buffer.
-         */
-        virtual void send_data() = 0;
+	protected:
+		/**
+		 * Hook used to tell the derived CL class to drain data out of
+		 * the send buffer.
+		 */
+		virtual void send_data() = 0;
 
-        /// @{ utility functions used by derived classes
-        void initiate_contact();
-        void process_data();
-        void check_keepalive();
-        /// @}
+		/// @{ utility functions used by derived classes
+		void initiate_contact();
+		void process_data();
+		void check_keepalive();
+		/// @}
 
-    private:
-        /// @{ utility functions used internally in this class
-        void note_data_rcvd();
-        void note_data_sent();
-        bool send_pending_acks();
-        bool start_next_bundle();
-        bool send_next_segment(InFlightBundle* inflight);
-        bool send_data_todo(InFlightBundle* inflight);
-        bool finish_bundle(InFlightBundle* inflight);
-        void check_completed(InFlightBundle* inflight);
-        void send_keepalive();
-        
-        void handle_contact_initiation();
-        bool handle_data_segment(u_int8_t flags);
-        bool handle_data_todo();
-        bool handle_ack_segment(u_int8_t flags);
-        bool handle_refuse_bundle(u_int8_t flags);
-        bool handle_keepalive(u_int8_t flags);
-        bool handle_shutdown(u_int8_t flags);
-        void check_completed(IncomingBundle* incoming);
-        /// @}
+	private:
+		/// @{ utility functions used internally in this class
+		void note_data_rcvd();
+		void note_data_sent();
+		bool send_pending_acks();
+		bool start_next_bundle();
+		bool send_next_segment(InFlightBundle* inflight);
+		bool send_data_todo(InFlightBundle* inflight);
+		bool finish_bundle(InFlightBundle* inflight);
+		void check_completed(InFlightBundle* inflight);
+		void send_keepalive();
+		
+		void handle_contact_initiation();
+		bool handle_data_segment(u_int8_t flags);
+		bool handle_data_todo();
+		bool handle_ack_segment(u_int8_t flags);
+		bool handle_refuse_bundle(u_int8_t flags);
+		bool handle_keepalive(u_int8_t flags);
+		bool handle_shutdown(u_int8_t flags);
+		void check_completed(IncomingBundle* incoming);
+		/// @}
 
-        /**
-         * Utility function to downcast the params_ pointer that's
-         * stored in the CLConnection parent class.
-         */
-        SeqpacketLinkParams* seqpacket_lparams()
-        {
-            SeqpacketLinkParams* ret = dynamic_cast<SeqpacketLinkParams*>(params_);
-            ASSERT(ret != NULL);
-            return ret;
-        }
-        
-    protected:
-        InFlightBundle* current_inflight_; ///< Current bundle that's in flight 
-        size_t send_segment_todo_; 	///< Bytes left to send of current segment
+		/**
+		 * Utility function to downcast the params_ pointer that's
+		 * stored in the CLConnection parent class.
+		 */
+		SeqpacketLinkParams* seqpacket_lparams()
+		{
+			SeqpacketLinkParams* ret = dynamic_cast<SeqpacketLinkParams*>(params_);
+			ASSERT(ret != NULL);
+			return ret;
+		}
+		
+	protected:
+		InFlightBundle* current_inflight_; ///< Current bundle that's in flight 
+		size_t send_segment_todo_;		   ///< Bytes left to send of current segment
 		std::queue<u_int> sendbuf_sequence_delimiters_; ///< sendbuf_ may hold many segments 
-        size_t recv_segment_todo_; 	///< Bytes left to recv of current segment
-        struct timeval data_rcvd_;	///< Timestamp for idle/keepalive timer
-        struct timeval data_sent_;	///< Timestamp for idle timer
-        struct timeval keepalive_sent_;	///< Timestamp for keepalive timer
-        bool breaking_contact_;		///< Bit to catch multiple calls to
-                                        ///< break_contact 
-        bool contact_initiated_; //< bit to prevent certain actions before
-    	                             //< contact is initiated
-    	u_int ack_window_todo_; //< number of segments heard so far in window
-    };
+		size_t recv_segment_todo_;	///< Bytes left to recv of current segment
+		struct timeval data_rcvd_;	///< Timestamp for idle/keepalive timer
+		struct timeval data_sent_;	///< Timestamp for idle timer
+		struct timeval keepalive_sent_; ///< Timestamp for keepalive timer
+		bool breaking_contact_;		///< Bit to catch multiple calls to
+									///< break_contact 
+		bool contact_initiated_;	///< bit to prevent certain actions before
+									///< contact is initiated
+		u_int ack_window_todo_; ///< number of segments left in ack_window
+	};
 
-    /// For some gcc variants, this typedef seems to be needed
-    typedef ConnectionConvergenceLayer::LinkParams LinkParams;
+	/// For some gcc variants, this typedef seems to be needed
+	typedef ConnectionConvergenceLayer::LinkParams LinkParams;
 
-    /// @{ Virtual from ConvergenceLayer
-    void dump_link(const LinkRef& link, oasys::StringBuffer* buf);
-    /// @}
-    
-    /// @{ Virtual from ConnectionConvergenceLayer
-    bool parse_link_params(LinkParams* params,
-                           int argc, const char** argv,
-                           const char** invalidp);
-    bool finish_init_link(const LinkRef& link, LinkParams* params);
-    /// @}
+	/// @{ Virtual from ConvergenceLayer
+	void dump_link(const LinkRef& link, oasys::StringBuffer* buf);
+	/// @}
+	
+	/// @{ Virtual from ConnectionConvergenceLayer
+	bool parse_link_params(LinkParams* params,
+						   int argc, const char** argv,
+						   const char** invalidp);
+	bool finish_init_link(const LinkRef& link, LinkParams* params);
+	/// @}
 
 };

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: application/octet-stream; x-unix-mode=0644; name=DTN2.3496.export
Content-transfer-encoding: 7bit
Content-disposition: attachment; filename=DTN2.3496.export

# HG changeset patch
# User Darren Long <[email-masked]>
# Date 1286627278 -3600
# Node ID a803b511df6004f85d782a89575805d84e926f4d
# Parent  4b9781c07cca90b9aa55b4d4cbd370d0f2748f45
Fixed some tab/space issues.

diff -r 4b9781c07cca -r a803b511df60 servlib/conv_layers/AX25CMConvergenceLayer.cc
--- a/servlib/conv_layers/AX25CMConvergenceLayer.cc	Sat Sep 04 14:39:53 2010 +0100
+++ b/servlib/conv_layers/AX25CMConvergenceLayer.cc	Sat Oct 09 13:27:58 2010 +0100
@@ -316,7 +316,7 @@
     ss<<params->local_call_<<":"<<params->remote_call_;
     if(params->digipeater_ != "NO_CALL")
     {
-    	ss<<","<<params->digipeater_;
+        ss<<","<<params->digipeater_;
     }
     ss<<":"<<params->axport_<<std::ends;
     oasys::StringBuffer nexthop("%s", ss.str().c_str());
@@ -376,7 +376,7 @@
 //----------------------------------------------------------------------
 AX25CMConvergenceLayer::Connection::~Connection()
 {
-	sock_->shutdown(SHUT_RDWR);
+    sock_->shutdown(SHUT_RDWR);
     delete sock_;
 }
 
@@ -459,9 +459,9 @@
     std::string rc = sock_->remote_call();
     if(params->digipeater_ != "NO_CALL")
     {
-    	rr.push_back(params->digipeater_);
-	}
-	
+        rr.push_back(params->digipeater_);
+    }
+    
     int ret = sock_->oasys::AX25Socket::connect(rp, rc, rr);
 
     if (ret == 0) {
@@ -647,12 +647,12 @@
     memcpy(temp.end(), reinterpret_cast<char*>(&crc_generated), sizeof(crc_generated));
     temp.fill(sizeof(crc_generated));
 
-	if (ax25cm_lparams()->hexdump_) {
-		log_always("send_data sending %i bytes as below...",towrite);
-		oasys::HexDumpBuffer hex;
-		hex.append((u_char*)temp.start(), towrite);
-		log_multiline(oasys::LOG_ALWAYS, hex.hexify().c_str());
-	}
+    if (ax25cm_lparams()->hexdump_) {
+        log_always("send_data sending %i bytes as below...",towrite);
+        oasys::HexDumpBuffer hex;
+        hex.append((u_char*)temp.start(), towrite);
+        log_multiline(oasys::LOG_ALWAYS, hex.hexify().c_str());
+    }
 
     int cc = sock_->write(temp.start(), towrite);
 
@@ -667,39 +667,39 @@
             ASSERT(sendbuf_sequence_delimiters_.front() + sizeof(crc_generated) == static_cast<u_int>(cc));
             // well, the assert kicked in too often.   so I'm just gonna
             // declare a protocl error and ditch the link
-			if(sendbuf_sequence_delimiters_.front() + sizeof(crc_generated) != static_cast<u_int>(cc))
-			{
-				std::stringstream ss;
-				ss<<"CL attempted to send a "<<sendbuf_sequence_delimiters_.front()+ sizeof(crc_generated);
-				ss<<" byte packet, but only "<<cc<<" bytes were sent"<<std::ends;
-				log_err(ss.str().c_str());            
-				log_err("CL Protocol error: send_buf underrun breaks SOCK_SEQPACKET SEMANTICS");
-				break_contact(ContactEvent::CL_ERROR);
-				return;
-			}
-			else
-			{
+            if(sendbuf_sequence_delimiters_.front() + sizeof(crc_generated) != static_cast<u_int>(cc))
+            {
+                std::stringstream ss;
+                ss<<"CL attempted to send a "<<sendbuf_sequence_delimiters_.front()+ sizeof(crc_generated);
+                ss<<" byte packet, but only "<<cc<<" bytes were sent"<<std::ends;
+                log_err(ss.str().c_str());            
+                log_err("CL Protocol error: send_buf underrun breaks SOCK_SEQPACKET SEMANTICS");
+                break_contact(ContactEvent::CL_ERROR);
+                return;
+            }
+            else
+            {
 
-	            log_info("removing pending sequence: %u from sequence delimiters queue, queue depth now: %u",
-					sendbuf_sequence_delimiters_.front(),	sendbuf_sequence_delimiters_.size()-1); 
-	            sendbuf_sequence_delimiters_.pop();					
-	        }
+                log_info("removing pending sequence: %u from sequence delimiters queue, queue depth now: %u",
+                    sendbuf_sequence_delimiters_.front(),   sendbuf_sequence_delimiters_.size()-1); 
+                sendbuf_sequence_delimiters_.pop();                 
+            }
 
         }
 
-        if (sendbuf_.fullbytes() != 0) {    		
+        if (sendbuf_.fullbytes() != 0) {            
             log_info("send_data: incomplete write (%u bytes remain in %u segments), setting POLLOUT bit",
-            			sendbuf_.fullbytes(), sendbuf_sequence_delimiters_.size());
+                        sendbuf_.fullbytes(), sendbuf_sequence_delimiters_.size());
             sock_pollfd_->events |= POLLOUT;
 
-    		ASSERT(!sendbuf_sequence_delimiters_.empty() );        
-    		ASSERT(sendbuf_sequence_delimiters_.front() <= sendbuf_.fullbytes());        
+            ASSERT(!sendbuf_sequence_delimiters_.empty() );        
+            ASSERT(sendbuf_sequence_delimiters_.front() <= sendbuf_.fullbytes());        
 
         } 
         else 
         {
             if (sock_pollfd_->events & POLLOUT) {
-          		ASSERT(!sendbuf_sequence_delimiters_.empty() );        
+                ASSERT(!sendbuf_sequence_delimiters_.empty() );        
                 log_debug("send_data: drained buffer, clearing POLLOUT bit");
                 sock_pollfd_->events &= ~POLLOUT;
                 // if we get here, the queue of delimiters should be empty ...
@@ -708,11 +708,11 @@
         }
     } 
     else if (errno == EWOULDBLOCK) {
-		ASSERT(cc < 0 );
+        ASSERT(cc < 0 );
 
-   		ASSERT(!sendbuf_sequence_delimiters_.empty() );            
+        ASSERT(!sendbuf_sequence_delimiters_.empty() );            
         log_info("send_data: write returned EWOULDBLOCK with %u bytes queued, in %u segments - setting POLLOUT bit",
-        			sendbuf_.fullbytes(), sendbuf_sequence_delimiters_.size());
+                    sendbuf_.fullbytes(), sendbuf_sequence_delimiters_.size());
         sock_pollfd_->events |= POLLOUT;
         // so, we're gong to record the length of the send_buf contents
         // so we can extract the right ammount of data next time round to maintain SEQ_PACKET
@@ -721,9 +721,9 @@
     } 
     else {
         log_info("send_data: whilst sending %i bytes of data, with %i bytes buffered, remote connection unexpectedly closed: %s",
-        			towrite,
-        			sendbuf_.fullbytes(),
-                 	strerror(errno));
+                    towrite,
+                    sendbuf_.fullbytes(),
+                    strerror(errno));
         break_contact(ContactEvent::BROKEN);
     }
 }
@@ -815,7 +815,7 @@
 {
     *local_call = "NO_CALL";
     *remote_call = "NO_CALL";
-    *digipeater	= "NO_CALL";
+    *digipeater = "NO_CALL";
     *axport = "None";
     std::string temp = nexthop, temp2;
     //std::cout<<"Nexthop:"<<temp<<std::endl;
@@ -827,63 +827,63 @@
     
     if(comma != NULL)
     {
-    	// we have a digi to deal with, so we must be the link initiator
-    	// we need to parse out the remote_call, digipeater and axport
+        // we have a digi to deal with, so we must be the link initiator
+        // we need to parse out the remote_call, digipeater and axport
         remote_call->assign(nexthop, comma - nexthop);       
         temp2.assign(comma+1, ( temp.size()-remote_call->size() ) -1);
 
-		colon1 = strchr(temp2.c_str(),':');
+        colon1 = strchr(temp2.c_str(),':');
 
-		if(colon1 != NULL)
-		{
-			digipeater->assign(temp2.c_str(),colon1-temp2.c_str());			
-			axport->assign(colon1+1, ( temp2.size() -  digipeater->size() ) -1 );
-		}
-		
-		if ("None" == *axport  || "NO_CALL" == *remote_call || "NO_CALL" == *digipeater) {
-			log_warn_p(logpath, "invalid remote_call,digipeater:axport in next hop '%s'",
-					   nexthop);
-			return false;
-		}
+        if(colon1 != NULL)
+        {
+            digipeater->assign(temp2.c_str(),colon1-temp2.c_str());         
+            axport->assign(colon1+1, ( temp2.size() -  digipeater->size() ) -1 );
+        }
+        
+        if ("None" == *axport  || "NO_CALL" == *remote_call || "NO_CALL" == *digipeater) {
+            log_warn_p(logpath, "invalid remote_call,digipeater:axport in next hop '%s'",
+                       nexthop);
+            return false;
+        }
 
     }
-	else
-	{
-		//we don't have a digipeater, but we may be the link initiator meaning
-		// that we need remote_call and axport, or we're the listener, in which case
-		// we need the local_call, remote_call and axport.  if we have two colons,
-		// then we are the listener ...
-		
-		if( colon2 == NULL)
-		{
-			// we're the initiator	
-			//so look for the remote call and axport
-			remote_call->assign(nexthop,colon1-nexthop);
-       		axport->assign(colon1+1,temp.size()-remote_call->size() - 1);
-       		
-			if ("None" == *axport  || "NO_CALL" == *remote_call) {
-				log_warn_p(logpath, "invalid remote_call:axport in next hop '%s'",
-						   nexthop);
-				return false;
-			}
-       		
-		}
-		else if(colon1 != NULL)
-		{
-			// we're the listener
-			local_call->assign(nexthop,colon1-nexthop);			
-        	remote_call->assign(colon1+1,colon2-colon1);
-   	        axport->assign(colon2+1,temp.size()-remote_call->size() - local_call->size() -2);
-   	        
-			if ("None" == *axport  || "NO_CALL" == *remote_call || "NO_CALL" == *local_call) {
-				log_warn_p(logpath, "invalid local_call:remote_call:axport in next hop '%s'",
-						   nexthop);
-				return false;
-			}
- 			
-		}
-	}
-	
+    else
+    {
+        //we don't have a digipeater, but we may be the link initiator meaning
+        // that we need remote_call and axport, or we're the listener, in which case
+        // we need the local_call, remote_call and axport.  if we have two colons,
+        // then we are the listener ...
+        
+        if( colon2 == NULL)
+        {
+            // we're the initiator  
+            //so look for the remote call and axport
+            remote_call->assign(nexthop,colon1-nexthop);
+            axport->assign(colon1+1,temp.size()-remote_call->size() - 1);
+            
+            if ("None" == *axport  || "NO_CALL" == *remote_call) {
+                log_warn_p(logpath, "invalid remote_call:axport in next hop '%s'",
+                           nexthop);
+                return false;
+            }
+            
+        }
+        else if(colon1 != NULL)
+        {
+            // we're the listener
+            local_call->assign(nexthop,colon1-nexthop);         
+            remote_call->assign(colon1+1,colon2-colon1);
+            axport->assign(colon2+1,temp.size()-remote_call->size() - local_call->size() -2);
+            
+            if ("None" == *axport  || "NO_CALL" == *remote_call || "NO_CALL" == *local_call) {
+                log_warn_p(logpath, "invalid local_call:remote_call:axport in next hop '%s'",
+                           nexthop);
+                return false;
+            }
+            
+        }
+    }
+    
     return true;
 }
 
diff -r 4b9781c07cca -r a803b511df60 servlib/conv_layers/AX25CMConvergenceLayer.h
--- a/servlib/conv_layers/AX25CMConvergenceLayer.h	Sat Sep 04 14:39:53 2010 +0100
+++ b/servlib/conv_layers/AX25CMConvergenceLayer.h	Sat Oct 09 13:27:58 2010 +0100
@@ -1,5 +1,5 @@
 /*
- *    Copyright 2007-2008 Darren Long, [email-masked]
+ *    Copyright 2007-2010 Darren Long, [email-masked]
  *    Copyright 2004-2006 Intel Corporation
  * 
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -61,7 +61,7 @@
         bool        hexdump_;           ///< Log a hexdump of all traffic
         std::string local_call_;        ///< Local callsign to bind to
         std::string remote_call_;       ///< Peer callsign
-        std::string	digipeater_;
+        std::string digipeater_;
         std::string axport_;            ///< Local axport to bind or connect

diff -r 4b9781c07cca -r a803b511df60 servlib/conv_layers/SeqpacketConvergenceLayer.cc
--- a/servlib/conv_layers/SeqpacketConvergenceLayer.cc	Sat Sep 04 14:39:53 2010 +0100
+++ b/servlib/conv_layers/SeqpacketConvergenceLayer.cc	Sat Oct 09 13:27:58 2010 +0100
@@ -196,9 +196,9 @@
     sendbuf_.fill(local_eid_len);
     
     sendbuf_sequence_delimiters_.push(sizeof(ContactHeader) + sdnv_len + local_eid_len); 
-	log_info("adding pending sequence: %zu to sequence delimiters queue, queue depth: %zu",
-				sizeof(ContactHeader) + sdnv_len + local_eid_len, 
-				sendbuf_sequence_delimiters_.size());      
+    log_info("adding pending sequence: %zu to sequence delimiters queue, queue depth: %zu",
+                sizeof(ContactHeader) + sdnv_len + local_eid_len, 
+                sendbuf_sequence_delimiters_.size());      
 
     // drain the send buffer
     note_data_sent();
@@ -433,7 +433,7 @@
     // if the connection failed during ack transmission, stop
     if (contact_broken_)
     {
-    	return sent_ack;
+        return sent_ack;
     }
 
     // check if we need to start a new bundle. if we do, then
@@ -555,9 +555,9 @@
     }
     
     if (generated_ack) {
-	    sendbuf_sequence_delimiters_.push(totol_ack_len); // may hold many segments 
-		log_info("adding pending sequence: %zu to sequence delimiters queue, queue depth: %zu",
-					totol_ack_len, sendbuf_sequence_delimiters_.size());      
+        sendbuf_sequence_delimiters_.push(totol_ack_len); // may hold many segments 
+        log_info("adding pending sequence: %zu to sequence delimiters queue, queue depth: %zu",
+                    totol_ack_len, sendbuf_sequence_delimiters_.size());      
 
         send_data();
         note_data_sent();
@@ -689,11 +689,11 @@
     ASSERT(cc == (int)sdnv_len);
     bp += sdnv_len;
 
-	sendbuf_.reserve(1 + sdnv_len + segment_len);    
+    sendbuf_.reserve(1 + sdnv_len + segment_len);    
     sendbuf_.fill(1 + sdnv_len);
     sendbuf_sequence_delimiters_.push(1 + sdnv_len + segment_len); // may hold many segments 
-	log_info("adding pending sequence: %lu to sequence delimiters queue, queue depth: %zu",
-				1 + sdnv_len + segment_len, sendbuf_sequence_delimiters_.size());  
+    log_info("adding pending sequence: %lu to sequence delimiters queue, queue depth: %zu",
+                static_cast<unsigned long>(1 + sdnv_len + segment_len), sendbuf_sequence_delimiters_.size());  
 
     send_segment_todo_ = segment_len;
 
@@ -834,8 +834,8 @@
     // don't note_data_sent() here since keepalive messages shouldn't
     // be counted for keeping an idle link open
     sendbuf_sequence_delimiters_.push(1); // may hold many segments 
-	log_info("adding pending sequence: %u to sequence delimiters queue, queue depth: %zu",
-				1, sendbuf_sequence_delimiters_.size());     
+    log_info("adding pending sequence: %u to sequence delimiters queue, queue depth: %zu",
+                1, sendbuf_sequence_delimiters_.size());     
     send_data();
 }
 //----------------------------------------------------------------------
@@ -910,7 +910,7 @@
     // connections which have not been initiated yet
     if (!contact_initiated_)
     {
-    	return;
+        return;
     }
 
     struct timeval now;
@@ -1522,7 +1522,7 @@
             sendbuf_.fill(1);
             seqsize=2;
         }
-	    sendbuf_sequence_delimiters_.push(seqsize); // may hold many segments 
+        sendbuf_sequence_delimiters_.push(seqsize); // may hold many segments 
 
         send_data();
     }
diff -r 4b9781c07cca -r a803b511df60 servlib/conv_layers/SeqpacketConvergenceLayer.h
--- a/servlib/conv_layers/SeqpacketConvergenceLayer.h	Sat Sep 04 14:39:53 2010 +0100
+++ b/servlib/conv_layers/SeqpacketConvergenceLayer.h	Sat Oct 09 13:27:58 2010 +0100
@@ -1,18 +1,18 @@
 /*
  *    Copyright 2009-2010 Darren Long, [email-masked]
- *	  Copyright 2006 Intel Corporation
+ *    Copyright 2006 Intel Corporation
  * 
- *	  Licensed under the Apache License, Version 2.0 (the "License");
- *	  you may not use this file except in compliance with the License.
- *	  You may obtain a copy of the License at
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
  * 
- *		  http://www.apache.org/licenses/LICENSE-2.0
+ *        http://www.apache.org/licenses/LICENSE-2.0
  * 
- *	  Unless required by applicable law or agreed to in writing, software
- *	  distributed under the License is distributed on an "AS IS" BASIS,
- *	  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *	  See the License for the specific language governing permissions and
- *	  limitations under the License.
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
  */
 
 #ifndef _SEQPACKET_CONVERGENCE_LAYER_H_
@@ -81,206 +81,206 @@
  */
 class SeqpacketConvergenceLayer : public ConnectionConvergenceLayer {
 public:
-	/**
-	 * Constructor
-	 */
-	SeqpacketConvergenceLayer(const char* logpath, const char* cl_name,
-						   u_int8_t cl_version);
+    /**
+     * Constructor
+     */
+    SeqpacketConvergenceLayer(const char* logpath, const char* cl_name,
+                           u_int8_t cl_version);
 
 protected:
-	/**
-	 * Values for ContactHeader flags.
-	 */
-	typedef enum {
-		SEGMENT_ACK_ENABLED	  = 1 << 0, ///< segment acks requested
-		REACTIVE_FRAG_ENABLED = 1 << 1, ///< reactive fragmentation enabled
-		NEGATIVE_ACK_ENABLED  = 1 << 2, ///< refuse bundle enabled
-	} contact_header_flags_t;
+    /**
+     * Values for ContactHeader flags.
+     */
+    typedef enum {
+        SEGMENT_ACK_ENABLED   = 1 << 0, ///< segment acks requested
+        REACTIVE_FRAG_ENABLED = 1 << 1, ///< reactive fragmentation enabled
+        NEGATIVE_ACK_ENABLED  = 1 << 2, ///< refuse bundle enabled
+    } contact_header_flags_t;
 
-	/**
-	 * Contact initiation header. Sent at the beginning of a contact. 
-	 */
-	struct ContactHeader {
-		u_int32_t magic;		///< magic word (MAGIC: "dtn!")
-		u_int8_t  version;		///< cl protocol version
-		u_int8_t  flags;		///< connection flags (see above)
-		u_int16_t keepalive_interval;	///< seconds between keepalive packets
-		// SDNV	  local_eid_length			 local eid length
-		// byte[] local_eid					 local eid data
-	} __attribute__((packed));
+    /**
+     * Contact initiation header. Sent at the beginning of a contact. 
+     */
+    struct ContactHeader {
+        u_int32_t magic;        ///< magic word (MAGIC: "dtn!")
+        u_int8_t  version;      ///< cl protocol version
+        u_int8_t  flags;        ///< connection flags (see above)
+        u_int16_t keepalive_interval;   ///< seconds between keepalive packets
+        // SDNV   local_eid_length           local eid length
+        // byte[] local_eid                  local eid data
+    } __attribute__((packed));
 
-	/**
-	 * Valid type codes for the protocol messages, shifted into the
-	 * high-order four bits of the byte. The lower four bits are used
-	 * for per-message flags, defined below.
-	 */
-	typedef enum {
-		DATA_SEGMENT	= 0x1 << 4, ///< a segment of bundle data
-									///< (followed by a SDNV segment length)
-		ACK_SEGMENT		= 0x2 << 4, ///< acknowledgement of a segment
-									///< (followed by a SDNV ack length)
-		REFUSE_BUNDLE	= 0x3 << 4, ///< reject reception of current bundle
-		KEEPALIVE		= 0x4 << 4, ///< keepalive packet
-		SHUTDOWN		= 0x5 << 4, ///< about to shutdown
-	} msg_type_t;
+    /**
+     * Valid type codes for the protocol messages, shifted into the
+     * high-order four bits of the byte. The lower four bits are used
+     * for per-message flags, defined below.
+     */
+    typedef enum {
+        DATA_SEGMENT    = 0x1 << 4, ///< a segment of bundle data
+                                    ///< (followed by a SDNV segment length)
+        ACK_SEGMENT     = 0x2 << 4, ///< acknowledgement of a segment
+                                    ///< (followed by a SDNV ack length)
+        REFUSE_BUNDLE   = 0x3 << 4, ///< reject reception of current bundle
+        KEEPALIVE       = 0x4 << 4, ///< keepalive packet
+        SHUTDOWN        = 0x5 << 4, ///< about to shutdown
+    } msg_type_t;
 
-	/**
-	 * Valid flags for the DATA_SEGMENT message.
-	 */
-	typedef enum {
-		BUNDLE_START	= 0x1 << 1, ///< First segment of a bundle
-		BUNDLE_END		= 0x1 << 0, ///< Last segment of a bundle
-	} data_segment_flags_t;
-	
-	/**
-	 * Valid flags for the SHUTDOWN message.
-	 */
-	typedef enum {
-		SHUTDOWN_HAS_REASON = 0x1 << 1, ///< Has reason code
-		SHUTDOWN_HAS_DELAY	= 0x1 << 0, ///< Has reconnect delay
-	} shutdown_flags_t;
-	
-	/**
-	 * Values for the SHUTDOWN reason codes
-	 */
-	typedef enum {
-		SHUTDOWN_NO_REASON			= 0xff, ///< no reason code (never sent)
-		SHUTDOWN_IDLE_TIMEOUT		= 0x0,	///< idle connection
-		SHUTDOWN_VERSION_MISMATCH	= 0x1,	///< version mismatch
-		SHUTDOWN_BUSY				= 0x2,	///< node is busy
-	} shutdown_reason_t;
+    /**
+     * Valid flags for the DATA_SEGMENT message.
+     */
+    typedef enum {
+        BUNDLE_START    = 0x1 << 1, ///< First segment of a bundle
+        BUNDLE_END      = 0x1 << 0, ///< Last segment of a bundle
+    } data_segment_flags_t;
+    
+    /**
+     * Valid flags for the SHUTDOWN message.
+     */
+    typedef enum {
+        SHUTDOWN_HAS_REASON = 0x1 << 1, ///< Has reason code
+        SHUTDOWN_HAS_DELAY  = 0x1 << 0, ///< Has reconnect delay
+    } shutdown_flags_t;
+    
+    /**
+     * Values for the SHUTDOWN reason codes
+     */
+    typedef enum {
+        SHUTDOWN_NO_REASON          = 0xff, ///< no reason code (never sent)
+        SHUTDOWN_IDLE_TIMEOUT       = 0x0,  ///< idle connection
+        SHUTDOWN_VERSION_MISMATCH   = 0x1,  ///< version mismatch
+        SHUTDOWN_BUSY               = 0x2,  ///< node is busy
+    } shutdown_reason_t;
 
-	/**
-	 * Convert a reason code to a string.
-	 */
-	static const char* shutdown_reason_to_str(shutdown_reason_t reason)
-	{
-		switch (reason) {
-		case SHUTDOWN_NO_REASON:	return "no reason";
-		case SHUTDOWN_IDLE_TIMEOUT:		return "idle connection";
-		case SHUTDOWN_VERSION_MISMATCH: return "version mismatch";
-		case SHUTDOWN_BUSY:			return "node is busy";
-		}
-		NOTREACHED;
-	}
-	
-	/**
-	 * Link parameters shared among all Seqpacket based convergence layers.
-	 */
-	class SeqpacketLinkParams : public ConnectionConvergenceLayer::LinkParams {
-	public:
-		bool  segment_ack_enabled_; ///< Use per-segment acks
-		bool  negative_ack_enabled_;///< Enable negative acks
-		u_int keepalive_interval_;	///< Seconds between keepalive packets
-		u_int segment_length_;		///< Maximum size of transmitted segments
-		u_int ack_window_;			///< Number of segments before acking
+    /**
+     * Convert a reason code to a string.
+     */
+    static const char* shutdown_reason_to_str(shutdown_reason_t reason)
+    {
+        switch (reason) {
+        case SHUTDOWN_NO_REASON:    return "no reason";
+        case SHUTDOWN_IDLE_TIMEOUT:     return "idle connection";
+        case SHUTDOWN_VERSION_MISMATCH: return "version mismatch";
+        case SHUTDOWN_BUSY:         return "node is busy";
+        }
+        NOTREACHED;
+    }
+    
+    /**
+     * Link parameters shared among all Seqpacket based convergence layers.
+     */
+    class SeqpacketLinkParams : public ConnectionConvergenceLayer::LinkParams {
+    public:
+        bool  segment_ack_enabled_; ///< Use per-segment acks
+        bool  negative_ack_enabled_;///< Enable negative acks
+        u_int keepalive_interval_;  ///< Seconds between keepalive packets
+        u_int segment_length_;      ///< Maximum size of transmitted segments
+        u_int ack_window_;          ///< Number of segments before acking
 
-	protected:
-		// See comment in LinkParams for why this should be protected
-		SeqpacketLinkParams(bool init_defaults);
-	};
-	
-	/**
-	 * Version of the actual CL protocol.
-	 */
-	u_int8_t cl_version_;
+    protected:
+        // See comment in LinkParams for why this should be protected
+        SeqpacketLinkParams(bool init_defaults);
+    };
+    
+    /**
+     * Version of the actual CL protocol.
+     */
+    u_int8_t cl_version_;
 
-	/**
-	 * Seqpacket connection class.
-	 */
-	class Connection : public CLConnection {
-	public:
-		/**
-		 * Constructor.
-		 */
-		Connection(const char* classname,
-				   const char* logpath,
-				   SeqpacketConvergenceLayer* cl,
-				   SeqpacketLinkParams* params,
-				   bool active_connector);
+    /**
+     * Seqpacket connection class.
+     */
+    class Connection : public CLConnection {
+    public:
+        /**
+         * Constructor.
+         */
+        Connection(const char* classname,
+                   const char* logpath,
+                   SeqpacketConvergenceLayer* cl,
+                   SeqpacketLinkParams* params,
+                   bool active_connector);
 
-		/// @{ virtual from CLConnection
-		bool send_pending_data();
-		void handle_bundles_queued();
-		void handle_cancel_bundle(Bundle* bundle);
-		void handle_poll_timeout();
-		void break_contact(ContactEvent::reason_t reason);
-		/// @}
+        /// @{ virtual from CLConnection
+        bool send_pending_data();
+        void handle_bundles_queued();
+        void handle_cancel_bundle(Bundle* bundle);
+        void handle_poll_timeout();
+        void break_contact(ContactEvent::reason_t reason);
+        /// @}
 
-	protected:
-		/**
-		 * Hook used to tell the derived CL class to drain data out of
-		 * the send buffer.
-		 */
-		virtual void send_data() = 0;
+    protected:
+        /**
+         * Hook used to tell the derived CL class to drain data out of
+         * the send buffer.
+         */
+        virtual void send_data() = 0;
 
-		/// @{ utility functions used by derived classes
-		void initiate_contact();
-		void process_data();
-		void check_keepalive();
-		/// @}
+        /// @{ utility functions used by derived classes
+        void initiate_contact();
+        void process_data();
+        void check_keepalive();
+        /// @}
 
-	private:
-		/// @{ utility functions used internally in this class
-		void note_data_rcvd();
-		void note_data_sent();
-		bool send_pending_acks();
-		bool start_next_bundle();
-		bool send_next_segment(InFlightBundle* inflight);
-		bool send_data_todo(InFlightBundle* inflight);
-		bool finish_bundle(InFlightBundle* inflight);
-		void check_completed(InFlightBundle* inflight);
-		void send_keepalive();
-		
-		void handle_contact_initiation();
-		bool handle_data_segment(u_int8_t flags);
-		bool handle_data_todo();
-		bool handle_ack_segment(u_int8_t flags);
-		bool handle_refuse_bundle(u_int8_t flags);
-		bool handle_keepalive(u_int8_t flags);
-		bool handle_shutdown(u_int8_t flags);
-		void check_completed(IncomingBundle* incoming);
-		/// @}
+    private:
+        /// @{ utility functions used internally in this class
+        void note_data_rcvd();
+        void note_data_sent();
+        bool send_pending_acks();
+        bool start_next_bundle();
+        bool send_next_segment(InFlightBundle* inflight);
+        bool send_data_todo(InFlightBundle* inflight);
+        bool finish_bundle(InFlightBundle* inflight);
+        void check_completed(InFlightBundle* inflight);
+        void send_keepalive();
+        
+        void handle_contact_initiation();
+        bool handle_data_segment(u_int8_t flags);
+        bool handle_data_todo();
+        bool handle_ack_segment(u_int8_t flags);
+        bool handle_refuse_bundle(u_int8_t flags);
+        bool handle_keepalive(u_int8_t flags);
+        bool handle_shutdown(u_int8_t flags);
+        void check_completed(IncomingBundle* incoming);
+        /// @}
 
-		/**
-		 * Utility function to downcast the params_ pointer that's
-		 * stored in the CLConnection parent class.
-		 */
-		SeqpacketLinkParams* seqpacket_lparams()
-		{
-			SeqpacketLinkParams* ret = dynamic_cast<SeqpacketLinkParams*>(params_);
-			ASSERT(ret != NULL);
-			return ret;
-		}
-		
-	protected:
-		InFlightBundle* current_inflight_; ///< Current bundle that's in flight 
-		size_t send_segment_todo_;		   ///< Bytes left to send of current segment
-		std::queue<u_int> sendbuf_sequence_delimiters_; ///< sendbuf_ may hold many segments 
-		size_t recv_segment_todo_;	///< Bytes left to recv of current segment
-		struct timeval data_rcvd_;	///< Timestamp for idle/keepalive timer
-		struct timeval data_sent_;	///< Timestamp for idle timer
-		struct timeval keepalive_sent_; ///< Timestamp for keepalive timer
-		bool breaking_contact_;		///< Bit to catch multiple calls to
-									///< break_contact 
-		bool contact_initiated_;	///< bit to prevent certain actions before
-									///< contact is initiated
-		u_int ack_window_todo_; ///< number of segments left in ack_window
-	};
+        /**
+         * Utility function to downcast the params_ pointer that's
+         * stored in the CLConnection parent class.
+         */
+        SeqpacketLinkParams* seqpacket_lparams()
+        {
+            SeqpacketLinkParams* ret = dynamic_cast<SeqpacketLinkParams*>(params_);
+            ASSERT(ret != NULL);
+            return ret;
+        }
+        
+    protected:
+        InFlightBundle* current_inflight_; ///< Current bundle that's in flight 
+        size_t send_segment_todo_;         ///< Bytes left to send of current segment
+        std::queue<u_int> sendbuf_sequence_delimiters_; ///< sendbuf_ may hold many segments 
+        size_t recv_segment_todo_;  ///< Bytes left to recv of current segment
+        struct timeval data_rcvd_;  ///< Timestamp for idle/keepalive timer
+        struct timeval data_sent_;  ///< Timestamp for idle timer
+        struct timeval keepalive_sent_; ///< Timestamp for keepalive timer
+        bool breaking_contact_;     ///< Bit to catch multiple calls to
+                                    ///< break_contact 
+        bool contact_initiated_;    ///< bit to prevent certain actions before
+                                    ///< contact is initiated
+        u_int ack_window_todo_; ///< number of segments left in ack_window
+    };
 
-	/// For some gcc variants, this typedef seems to be needed
-	typedef ConnectionConvergenceLayer::LinkParams LinkParams;
+    /// For some gcc variants, this typedef seems to be needed
+    typedef ConnectionConvergenceLayer::LinkParams LinkParams;
 
-	/// @{ Virtual from ConvergenceLayer
-	void dump_link(const LinkRef& link, oasys::StringBuffer* buf);
-	/// @}
-	
-	/// @{ Virtual from ConnectionConvergenceLayer
-	bool parse_link_params(LinkParams* params,
-						   int argc, const char** argv,
-						   const char** invalidp);
-	bool finish_init_link(const LinkRef& link, LinkParams* params);
-	/// @}
+    /// @{ Virtual from ConvergenceLayer
+    void dump_link(const LinkRef& link, oasys::StringBuffer* buf);
+    /// @}
+    
+    /// @{ Virtual from ConnectionConvergenceLayer
+    bool parse_link_params(LinkParams* params,
+                           int argc, const char** argv,
+                           const char** invalidp);
+    bool finish_init_link(const LinkRef& link, LinkParams* params);
+    /// @}
 
 };

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: application/octet-stream; name=DTN2.3497.export
Content-transfer-encoding: 7bit
Content-disposition: attachment; filename=DTN2.3497.export

# HG changeset patch
# User Darren Long <[email-masked]>
# Date 1286628195 -3600
# Node ID 8f25e9cdc02b198bff5b729f9d18f376f86506c4
# Parent  a803b511df6004f85d782a89575805d84e926f4d
Updated copyright info.

diff -r a803b511df60 -r 8f25e9cdc02b servlib/conv_layers/AX25CMConvergenceLayer.cc
--- a/servlib/conv_layers/AX25CMConvergenceLayer.cc	Sat Oct 09 13:27:58 2010 +0100
+++ b/servlib/conv_layers/AX25CMConvergenceLayer.cc	Sat Oct 09 13:43:15 2010 +0100
@@ -1,5 +1,5 @@
 /*
- *    Copyright 2007-2008 Darren Long, [email-masked]
+ *    Copyright 2007-2010 Darren Long, [email-masked]
  *    Copyright 2004-2006 Intel Corporation
  * 
  *    Licensed under the Apache License, Version 2.0 (the "License");

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)
Content-type: application/octet-stream; name=DTN2.3498.export
Content-transfer-encoding: 7bit
Content-disposition: attachment; filename=DTN2.3498.export

# HG changeset patch
# User Darren Long <[email-masked]>
# Date 1286628992 -3600
# Node ID 75f0e0bf6d02d2e6107d7a1d51febf4c76772f73
# Parent  8f25e9cdc02b198bff5b729f9d18f376f86506c4
Added doc/ax25.txt

diff -r 8f25e9cdc02b -r 75f0e0bf6d02 doc/ax25.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/ax25.txt	Sat Oct 09 13:56:32 2010 +0100
@@ -0,0 +1,3 @@
+ax25.txt
+
+Please see the wiki page at: http://www.dtnrg.org/wiki/AX25ConnectedModeConvergenceLayer

--Boundary_(ID_rsJJMXJ0ZhQgUZoNTnuZdA)--

Date: Fri, 08 Oct 2010 21:42:08 +0100
From: Elwyn Davies <[email-masked]>
To: Victor lyamtsev <[email-masked]>
Cc: [email-masked]
Subject: Re: [dtn-users] issue with link availability

Hi.

You need to use souce and destination eids that have a demultiplexing 
component after the local eid.  (e,g, dtn://host1.dtn/xxx, 
dtn://host2.dtn/yyy).  The unqualified local eid should be reserved for 
administrative bundles - and they will be delivered to the internal 
adminitsrative application - primarily for custody receipts at present - 
check out the list of registrations and you'll see the admin one if I 
remember right.  Also dtn://host1.dtn doesn't match with the pattern you 
installed - there needs to be a non-empty demultiplexing strimg.

Regards,
Elwyn

Victor lyamtsev wrote:
> Hi,
> I am trying to forward test bundle from DTN2 (node1 ) to the another
> instance of DTN2 (node2) on the same host, bound to the 127.0.0.1:6666
> for the node1 (dtn://host1.dtn) , i have
>
> link add link_tcp 127.0.0.1:6666 ONDEMAND tcp
> route add dtn://host2.dtn/* link_tcp
>
> When i try to send bundle to node2, using node1 as "router"
> dtnsend -e 60 -s dtn://host1.dtn -d dtn://host2.dtn -t m -p "Hello from host1"
>
> the bundle is not delivered ( at least, not immediately)
> When i check the link status on host1, it seems as link is actually
> down most of the time:
> Links:
> link_tcp [127.0.0.1:6666 dtn:none ONDEMAND tcp state=UNAVAILABLE]
>
> and the route table as following:
> destination      source COS    next hop    fwd    route [custody timeout]
> endpoint id       eid   BNE    link/eid   action   prio [min   pct   max]
> -----------------------------------------------------------------------------------
> dtn://host2.dtn/* *:*    111 -> link_tcp   FORWARD     0 [1800   25     0]
>
> Any idea what the problem is ?
> Thank you,
> -V
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users
>   

From: Darren Long <[email-masked]>
Date: Fri, 08 Oct 2010 21:33:42 +0100
To: Victor lyamtsev <[email-masked]>, [email-masked]
Subject: Re: [dtn-users] issue with link availability

Hi Victor,

If you make the link ALWAYSON, it should come up immediately.  As I understand it, ONDEMAND links need to be brought up manually with "link open link_tcp" or similar.

Darren

On 8 Oct 2010, at 21:20, Victor lyamtsev wrote:

> Hi,
> I am trying to forward test bundle from DTN2 (node1 ) to the another
> instance of DTN2 (node2) on the same host, bound to the 127.0.0.1:6666
> for the node1 (dtn://host1.dtn) , i have
> 
> link add link_tcp 127.0.0.1:6666 ONDEMAND tcp
> route add dtn://host2.dtn/* link_tcp
> 
> When i try to send bundle to node2, using node1 as "router"
> dtnsend -e 60 -s dtn://host1.dtn -d dtn://host2.dtn -t m -p "Hello from host1"
> 
> the bundle is not delivered ( at least, not immediately)
> When i check the link status on host1, it seems as link is actually
> down most of the time:
> Links:
> link_tcp [127.0.0.1:6666 dtn:none ONDEMAND tcp state=UNAVAILABLE]
> 
> and the route table as following:
> destination      source COS    next hop    fwd    route [custody timeout]
> endpoint id       eid   BNE    link/eid   action   prio [min   pct   max]
> -----------------------------------------------------------------------------------
> dtn://host2.dtn/* *:*    111 -> link_tcp   FORWARD     0 [1800   25     0]
> 
> Any idea what the problem is ?
> Thank you,
> -V
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users

Date: Fri, 8 Oct 2010 16:20:40 -0400
From: Victor lyamtsev <[email-masked]>
To: [email-masked]
Subject: [dtn-users] issue with link availability

Hi,
I am trying to forward test bundle from DTN2 (node1 ) to the another
instance of DTN2 (node2) on the same host, bound to the 127.0.0.1:6666
for the node1 (dtn://host1.dtn) , i have

link add link_tcp 127.0.0.1:6666 ONDEMAND tcp
route add dtn://host2.dtn/* link_tcp

When i try to send bundle to node2, using node1 as "router"
dtnsend -e 60 -s dtn://host1.dtn -d dtn://host2.dtn -t m -p "Hello from host1"

the bundle is not delivered ( at least, not immediately)
When i check the link status on host1, it seems as link is actually
down most of the time:
Links:
link_tcp [127.0.0.1:6666 dtn:none ONDEMAND tcp state=UNAVAILABLE]

and the route table as following:
destination      source COS    next hop    fwd    route [custody timeout]
endpoint id       eid   BNE    link/eid   action   prio [min   pct   max]
-----------------------------------------------------------------------------------
dtn://host2.dtn/* *:*    111 -> link_tcp   FORWARD     0 [1800   25     0]

Any idea what the problem is ?
Thank you,
-V

From: <[email-masked]>
To: [email-masked]
Date: Fri,  8 Oct 2010 15:28:31 -0400 (EDT)
Subject: [dtn-users] dtnsend working!!!

Hi,

Thanks everyone for solving my problem.

Neha Paranjape
Graduate Student(Telecommunications)
University of Maryland,College Park

From: Dirk Van Bruggen <[email-masked]>
Date: Fri, 8 Oct 2010 15:06:59 -0400
To: [email-masked]
Subject: Re: [dtn-users] Problem using dtnsend command

--0016e659f49c39cf0b04921fb894
Content-Type: text/plain; charset=ISO-8859-1

You would need to open a new terminal window to issue the dtn-send command.
The % prompt is an interactive tcl shell for the daemon itself.

Dirk Van Bruggen
Graduate Student
University of Notre Dame

On Fri, Oct 8, 2010 at 3:02 PM, <[email-masked]> wrote:

> When I try entering the initialize command without --init-db,I
> get a % prompt.How do I enter dtnsend command with this prompt?
> The DTN2 manual says I have to have a $ prompt to enter this
> command.
>
>
> Neha Paranjape
> Graduate Student(Telecommunications)
> University of Maryland,College Park
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users
>

--0016e659f49c39cf0b04921fb894
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

You would need to open a new terminal window to issue the dtn-send command.=
=A0 The % prompt is an interactive tcl shell for the daemon itself.<br><br>=
Dirk Van Bruggen<br>Graduate Student<br>University of Notre Dame<br><br><di=
v class=3D"gmail_quote">

On Fri, Oct 8, 2010 at 3:02 PM,  <span dir=3D"ltr">&lt;<a href=3D"mailto:pa=
[email-masked]">[email-masked]</a>&gt;</span> wrote:<br><blockquote class=
=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin=
: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

When I try entering the initialize command without --init-db,I<br>
get a % prompt.How do I enter dtnsend command with this prompt?<br>
The DTN2 manual says I have to have a $ prompt to enter this<br>
command.<br>
<br>
<br>
Neha Paranjape<br>
Graduate Student(Telecommunications)<br>
University of Maryland,College Park<br>
_______________________________________________<br>
dtn-users mailing list<br>
<a href=3D"mailto:[email-masked]">dtn-users@maillis=
ts.intel-research.net</a><br>
<a href=3D"http://maillists.intel-research.net/mailman/listinfo/dtn-users" =
target=3D"_blank">http://maillists.intel-research.net/mailman/listinfo/dtn-=
users</a><br>
</blockquote></div><br>

--0016e659f49c39cf0b04921fb894--

From: Darren Long <[email-masked]>
Date: Fri, 08 Oct 2010 20:06:35 +0100
To: [email-masked]
Cc: [email-masked]
Subject: Re: [dtn-users] Problem using dtnsend command

Do it from another terminal?

If you run dtnd with the -d option it will run in the background as a daemon (you have to use -o to provide the log file location in that case).  As you are evidently learning your way round things here, I'd keep the daemon running in the foreground so  you can easily interact with it, hence the suggestion to do it (run dtnsend, dtnping, whatever) from a different xterm or similar.

The % prompt shows that you are in the dtnd console.  if you run dtnd as a daemon (with -d), then you can get to its console using "telnet localhost 5050".

hope this helps.

Darren

On 8 Oct 2010, at 19:48, [email-masked] wrote:

> When I do that I get a % prompt.How do I enter dtnsend command?
> The DTN2 manual says I have to have a $ prompt to enter this 
> command.
> 
> Neha Paranjape
> Graduate Student(Telecommunications)
> University of Maryland,College Park

From: <[email-masked]>
To: [email-masked]
Date: Fri,  8 Oct 2010 15:02:30 -0400 (EDT)
Subject: [dtn-users] Problem using dtnsend command

When I try entering the initialize command without --init-db,I 
get a % prompt.How do I enter dtnsend command with this prompt?
The DTN2 manual says I have to have a $ prompt to enter this 
command.

Neha Paranjape
Graduate Student(Telecommunications)
University of Maryland,College Park

From: Darren Long <[email-masked]>
Date: Fri, 08 Oct 2010 19:44:50 +0100
To: [email-masked]
Subject: Re: [dtn-users] Problem using dtnsend command

try again without the --init-db part.

You have initialised the database but not run the daemon.

Darrem
On 8 Oct 2010, at 19:40, [email-masked] wrote:

> I have used the /daemon/dtnd -c /home/user/dtn/dtn.conf --init-
> db command before doing dtnsend.
> 
> Neha Paranjape
> Graduate Student(Telecommunications)
> University of Maryland,College Park
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users

From: <[email-masked]>
To: [email-masked]
Date: Fri,  8 Oct 2010 14:43:30 -0400 (EDT)
Subject: [dtn-users] Problem using dtnsend command

I have used the daemon/dtnd -c /home/user/dtn/dtn.conf --init-
db command before doing dtnsend.

Neha Paranjape
Graduate Student(Telecommunications)
University of Maryland,College Park

From: <[email-masked]>
To: "Akshay S.N" <[email-masked]>, "Andresen, Jason R." <[email-masked]>, [email-masked]
Date: Fri,  8 Oct 2010 14:40:35 -0400 (EDT)
Subject: Re: [dtn-users] Problem using dtnsend command

I have used the /daemon/dtnd -c /home/user/dtn/dtn.conf --init-
db command before doing dtnsend.

Neha Paranjape
Graduate Student(Telecommunications)
University of Maryland,College Park

Date: Sat, 9 Oct 2010 00:06:38 +0530
From: "Akshay S.N" <[email-masked]>
To: "Andresen, Jason R." <[email-masked]>, [email-masked], [email-masked]
Subject: Re: [dtn-users] Problem using dtnsend command

--0016362843ae7bd87104921f4ad8
Content-Type: text/plain; charset=ISO-8859-1

I believe your DTND is not running. Run DTND command first and then try
DTNSEND

Akshay

On Sat, Oct 9, 2010 at 12:04 AM, Andresen, Jason R. <[email-masked]>wrote:

> Is dtnd running?
>
> >-----Original Message-----
> >From: [email-masked] [mailto:dtn-users-
> >[email-masked]] On Behalf Of [email-masked]
> >Sent: Friday, October 08, 2010 2:32 PM
> >To: [email-masked]
> >Subject: [dtn-users] Problem using dtnsend command
> >
> >Hi,
> >
> >I am trying to run the dtnsend command.I get an error saying
> >'fatal error opening dtn handle:error in ipc communication'.
> >
> >I don't know how to work through this.Please help.
> >
> >Thanks
> >
> >Neha Paranjape
> >Graduate Research Assistant
> >University of Maryland,College Park
> >_______________________________________________
> >dtn-users mailing list
> >[email-masked]
> >http://maillists.intel-research.net/mailman/listinfo/dtn-users
>
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users
>

-- 
Regards,
Akshay

--0016362843ae7bd87104921f4ad8
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

I believe your DTND is not running. Run DTND command first and then try DTN=
SEND<br><br>Akshay<br><br><div class=3D"gmail_quote">On Sat, Oct 9, 2010 at=
 12:04 AM, Andresen, Jason R. <span dir=3D"ltr">&lt;<a href=3D"mailto:jandr=
[email-masked]">[email-masked]</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Is dtnd running?<=
br>
<div><div></div><div class=3D"h5"><br>
&gt;-----Original Message-----<br>
&gt;From: <a href=3D"mailto:[email-masked]"=
>[email-masked]</a> [mailto:<a href=3D"mail=
to:dtn-users-">dtn-users-</a><br>
&gt;<a href=3D"mailto:[email-masked]">bounces@maillis=
ts.intel-research.net</a>] On Behalf Of <a href=3D"mailto:[email-masked]">=
[email-masked]</a><br>
&gt;Sent: Friday, October 08, 2010 2:32 PM<br>
&gt;To: <a href=3D"mailto:[email-masked]">dtn-users=
@maillists.intel-research.net</a><br>
&gt;Subject: [dtn-users] Problem using dtnsend command<br>
&gt;<br>
&gt;Hi,<br>
&gt;<br>
&gt;I am trying to run the dtnsend command.I get an error saying<br>
&gt;&#39;fatal error opening dtn handle:error in ipc communication&#39;.<br=
>
&gt;<br>
&gt;I don&#39;t know how to work through this.Please help.<br>
&gt;<br>
&gt;Thanks<br>
&gt;<br>
&gt;Neha Paranjape<br>
&gt;Graduate Research Assistant<br>
&gt;University of Maryland,College Park<br>
&gt;_______________________________________________<br>
&gt;dtn-users mailing list<br>
&gt;<a href=3D"mailto:[email-masked]">dtn-users@mai=
llists.intel-research.net</a><br>
&gt;<a href=3D"http://maillists.intel-research.net/mailman/listinfo/dtn-use=
rs" target=3D"_blank">http://maillists.intel-research.net/mailman/listinfo/=
dtn-users</a><br>
<br>
_______________________________________________<br>
dtn-users mailing list<br>
<a href=3D"mailto:[email-masked]">dtn-users@maillis=
ts.intel-research.net</a><br>
<a href=3D"http://maillists.intel-research.net/mailman/listinfo/dtn-users" =
target=3D"_blank">http://maillists.intel-research.net/mailman/listinfo/dtn-=
users</a><br>
</div></div></blockquote></div><br><br clear=3D"all"><br>-- <br>Regards,<br=
>Akshay<br>

--0016362843ae7bd87104921f4ad8--

From: Darren Long <[email-masked]>
Date: Fri, 08 Oct 2010 19:35:12 +0100
To: [email-masked]
Cc: [email-masked]
Subject: Re: [dtn-users] Problem using dtnsend command

Hi Neha,

That would typically suggest that dtnd isn't actually running.

Darren

On 8 Oct 2010, at 19:32, [email-masked] wrote:

> Hi,
> 
> I am trying to run the dtnsend command.I get an error saying 
> 'fatal error opening dtn handle:error in ipc communication'.
> 
> I don't know how to work through this.Please help.
> 
> Thanks
> 
> Neha Paranjape
> Graduate Research Assistant
> University of Maryland,College Park
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users

From: "Andresen, Jason R." <[email-masked]>
To: "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>
Date: Fri, 8 Oct 2010 14:34:25 -0400
Accept-Language: en-US
acceptlanguage: en-US
Subject: Re: [dtn-users] Problem using dtnsend command

Is dtnd running? 

>-----Original Message-----
>From: [email-masked] [mailto:dtn-users-
>[email-masked]] On Behalf Of [email-masked]
>Sent: Friday, October 08, 2010 2:32 PM
>To: [email-masked]
>Subject: [dtn-users] Problem using dtnsend command
>
>Hi,
>
>I am trying to run the dtnsend command.I get an error saying
>'fatal error opening dtn handle:error in ipc communication'.
>
>I don't know how to work through this.Please help.
>
>Thanks
>
>Neha Paranjape
>Graduate Research Assistant
>University of Maryland,College Park
>_______________________________________________
>dtn-users mailing list
>[email-masked]
>http://maillists.intel-research.net/mailman/listinfo/dtn-users

From: <[email-masked]>
To: [email-masked]
Date: Fri,  8 Oct 2010 14:32:19 -0400 (EDT)
Subject: [dtn-users] Problem using dtnsend command

Hi,

I am trying to run the dtnsend command.I get an error saying 
'fatal error opening dtn handle:error in ipc communication'.

I don't know how to work through this.Please help.

Thanks

Neha Paranjape
Graduate Research Assistant
University of Maryland,College Park

From: Darren Long <[email-masked]>
Date: Sat, 02 Oct 2010 09:52:04 +0100
To: Victor lyamtsev <[email-masked]>
Cc: [email-masked]
Subject: Re: [dtn-users] strange values in Connection::initiate_contact

Hi,

This is a contact header sent using TCP-CL Protocol but over AX.25 and not TCP.  Additionally, it has a CRC32 appended.

0000  64 74 6E 21 03 03 00 F0 11 64 74 6E 3A 2F 2F 67  | dtn!...铮�.dtn://g
0010  30 68 77 77 2D 37 2E 64 74 6E 38 23 8C 01        | 0hww-7.dtn8#..

Bytes 6 and 7 are the keepalive_interval in network byte order, which in this case  is 240 seconds.

When the contact headers are exchanged, method StreamConvergenceLayer::Connection::handle_contact_initiation() chooses the minimum of the proposed keepalive_interval from the received contact header and the default initial value (which is set to 10 seconds).

In my case shown above, the AX.25 CL works slightly differently, as it chooses the maximum of the two values, not the minimum.  When I do a 'link dump' for this link in the dtnd shell, it shows 

	keepalive_interval: 240

as I expect.

I apologise if I confuse the issue by talking of AX.25 :)

Cheers,

Darren

On 2 Oct 2010, at 05:17, Victor lyamtsev wrote:

> Hello,
> I am trying to debug TCP CL session initiation exchange between DTN
> node A and DTN2 in node B..
> After node B is received fist contact header, I see
> SEGMENT_ACK_ENABLED and REACTIVE_FLAG_ENABLED in DTN2
> ( StreamConvergenceLayer::Connection::initiate_contact). Byte 6 ( next
> after DTN version ) in contact header is 0x0. The value of
> keepalive_interval
> is also set to 2560, no matter what the values in bytes 6, 7 of header
> are... All other values are correct. Is this a 'feature' of DTN2 ?
> 
> Also, is node B supposed to send ack. contact header to the port 4556
> of node A ? The draft doesn't specify that...
> Thank you,
> -V
> _______________________________________________
> dtn-users mailing list
> [email-masked]
> http://maillists.intel-research.net/mailman/listinfo/dtn-users

Date: Sat, 2 Oct 2010 00:17:50 -0400
From: Victor lyamtsev <[email-masked]>
To: [email-masked]
Subject: [dtn-users] strange values in Connection::initiate_contact

Hello,
I am trying to debug TCP CL session initiation exchange between DTN
node A and DTN2 in node B..
After node B is received fist contact header, I see
SEGMENT_ACK_ENABLED and REACTIVE_FLAG_ENABLED in DTN2
( StreamConvergenceLayer::Connection::initiate_contact). Byte 6 ( next
after DTN version ) in contact header is 0x0. The value of
keepalive_interval
is also set to 2560, no matter what the values in bytes 6, 7 of header
are... All other values are correct. Is this a 'feature' of DTN2 ?

Also, is node B supposed to send ack. contact header to the port 4556
of node A ? The draft doesn't specify that...
Thank you,
-V