Subject: webpage for ipv6 programmers

From: Mikael Abrahamsson <[email-masked]>
Date: Tue, 3 Feb 2009 11:49:53 +0100 (CET)

Hello.

I wonder if anyone happen to know a good webpage or book for programmers 
and what they need to know about programming applications in different 
programming lanuages and script languages to make their programs IPv6 
capable. Something like "classical way in <language> is to use <API> but 
the new <API> is like this and should be used instead".

I think we know a lot about how to enable our networks for IPv6, but we 
need to educate a lot of programmers as well. There is plenty of 
references on how to program to avoid buffer overflows, (use snprintf 
instead of printf), I think we need equivalent for IPv6.

-- 
Mikael Abrahamsson    email: [email-masked]

---

From: Pekka Savola <[email-masked]>
Date: Tue, 3 Feb 2009 13:16:44 +0200 (EET)

On Tue, 3 Feb 2009, Mikael Abrahamsson wrote:
> I wonder if anyone happen to know a good webpage or book for programmers and 
> what they need to know about programming applications in different 
> capable. Something like "classical way in <language> is to use <API> but the 
> new <API> is like this and should be used instead".
>
> I think we know a lot about how to enable our networks for IPv6, but we need 
> to educate a lot of programmers as well. There is plenty of references on how 
> to program to avoid buffer overflows, (use snprintf instead of printf), I 
> think we need equivalent for IPv6.

I don' think one exists.  For general case and C in particular, there 
are among others:

RFC4038
http://www.kame.net/newsletter/19980604/
http://gsyc.escet.urjc.es/~eva/IPv6-web/ipv6.html

-- 
Pekka Savola                 "You each name yourselves king, yet the
Netcore Oy                    kingdom bleeds."
Systems. Networks. Security. -- George R.R. Martin: A Clash of Kings

---

From: Johansson Olle E <[email-masked]>
Date: Tue, 3 Feb 2009 12:23:31 +0100

3 feb 2009 kl. 11.49 skrev Mikael Abrahamsson:

>
> Hello.
>
> I wonder if anyone happen to know a good webpage or book for  
> programmers and what they need to know about programming  
> applications in different programming lanuages and script languages  
> to make their programs IPv6 capable. Something like "classical way  
> in <language> is to use <API> but the new <API> is like this and  
> should be used instead".
>
> I think we know a lot about how to enable our networks for IPv6, but  
> we need to educate a lot of programmers as well. There is plenty of  
> references on how to program to avoid buffer overflows, (use  
> snprintf instead of printf), I think we need equivalent for IPv6.

In my bookshelf there's a book published in 2005, so I don't know how  
accurate it is today:

IPv6 Network Programming
Jun-ichiro itojun Hagino
ISBN 1-55558-318-0

http://tinyurl.com/am8lep at Amazon.com

Read parts of it a while ago, don't remember what I thought about it.  
It's back on the pile of books to read. Thanks!
/O

---

From: Gabriella Paolini <[email-masked]>
Date: Tue, 03 Feb 2009 12:30:44 +0100

Hi,
we produced training material for Euchinagrid EU project:
http://www.euchinagrid.org/IPv6/slides.html
It's created  for GRID programmers.
Rino should be able to suggest other material.
Gabriella

Mikael Abrahamsson wrote, On 03/02/2009 11.49:
> programmers and what they need to know about programming applications 
> in different programming lanuages and script languages to make their 
> programs IPv6 capable. Something like "classical way in <language> is 
> to use <API> but the new <API> is like this and should be used instead".
>

-- 

Gabriella Paolini
_________________

GARR 
National Research and Education Network in Italy
Via dei Tizii, 6 - 00185 Rome
direct: +39 06 4962 2507
mobile: +39 334 6533 252
skype:gabriella.paolini

---

From: Antonio Querubin <[email-masked]>
Date: Tue, 3 Feb 2009 01:45:35 -1000 (HST)

> think we need equivalent for IPv6.

The basic socket API (RFC 3493) combined with Steven's "Unix Network 
Programming" gives a good basic foundation for many TCP or UDP based 
applications.  Most languages seem to implement some form of the socket 
API or overload equivalent older functions to provide IPv6 capability. The 
advanced sockets API (RFC 3542) would be useful for those who deal with 
raw sockets or multicast applications.

-- 
Antonio Querubin
whois:  AQ7-ARIN

---

From: Antonio Querubin <[email-masked]>
Date: Tue, 3 Feb 2009 01:53:54 -1000 (HST)

Another quick reference is the FreeBSD man page for getaddrinfo().  It has 
basic AF-independent code samples for a TCP client and a TCP server.

-- 
Antonio Querubin
whois:  AQ7-ARIN

---

From: Gert Doering <[email-masked]>
Date: Tue, 3 Feb 2009 13:49:23 +0100

Hi,

> basic AF-independent code samples for a TCP client and a TCP server.

Yes, but that's all very C oriented.  

If you do that in perl, for example, you don't really want to deal with
all the C API nastiness (you can, if you want) - but there's better ways,
like using IO::Socket::INET6 which will nicely handle all the details for 
you.

So indeed, having some sort of programmer's page for all frequently used
languages (C/C++, Perl, Ruby, Python, PHP, Java) would be a plus.

Gert Doering
        -- NetMaster
-- 
Total number of prefixes smaller than registry allocations:  128645

SpaceNet AG                        Vorstand: Sebastian v. Bomhard
Joseph-Dollinger-Bogen 14          Aufsichtsratsvors.: A. Grundner-Culemann
D-80807 Muenchen                   HRB: 136055 (AG Muenchen)
Tel: +49 (89) 32356-444            USt-IdNr.: DE813185279

---

From: "William F. Maton Sotomayor" <[email-masked]>
Date: Tue, 3 Feb 2009 08:13:23 -0500 (EST)

> Yes, but that's all very C oriented.

Most of it.  Back in the old days (oh...6-7 years ago) .....

> languages (C/C++, Perl, Ruby, Python, PHP, Java) would be a plus.

..... I did recall someone had put together a web page showing different 
examples of IPv6 programming using most of the languages above... I 
think the dot bust may have claimed that website as one of its victoms.

I know there are such sites out there that touch on the subject 
specifically to their own language or OS, at for Linux there seems to be:

http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/chapter-programming.html

So maybe the best one can do is assemble (no pun intended) a list of URLs 
point to IPv6 programming resources instead.

wfms

---

From: Mohacsi Janos <[email-masked]>
Date: Tue, 3 Feb 2009 14:16:04 +0100 (CET)

> languages (C/C++, Perl, Ruby, Python, PHP, Java) would be a plus.

Have a look at this slide set:
http://www.6deploy.org/tutorials/210-6deploy_devel_v0_2.pdf

This will be updated to python soon.
 	Best Regards,
 		Janos

---

From: Niall O'Reilly <[email-masked]>
Date: Wed, 04 Feb 2009 09:24:32 +0000

On Tue, 2009-02-03 at 13:49 +0100, Gert Doering wrote:
> but there's better ways,

	IIRC (and it's been a while), that module indeed gives your
	Perl application access to the IPv6 network but doesn't 
	allow the app to be IP-version-agnostic.  Is there an 
	abstraction layer which allows the app not to care about
	what network layer is in use?

	/Niall

---

From: Gert Doering <[email-masked]>
Date: Wed, 4 Feb 2009 10:27:16 +0100

Hi,

> 	what network layer is in use?

Current versions of IP::Socket::INET6 are actually version-agnostic - 
there's an argument to ->new() that tells the API whether you want
v4, v6, or "give me what works".

The name is a bit misleading, though...

Gert Doering
        -- NetMaster

---

From: Niall O'Reilly <[email-masked]>
Date: Wed, 04 Feb 2009 09:55:09 +0000

On Wed, 2009-02-04 at 10:27 +0100, Gert Doering wrote:
> Current versions 

	Aha!

> of IP::Socket::INET6 are actually version-agnostic

	Thanks, Gert.
	This is both what I needed to know and what I wanted to hear!

	/Niall

---

From: Mohacsi Janos <[email-masked]>
Date: Wed, 4 Feb 2009 11:19:30 +0100 (CET)

> 	what network layer is in use?

Using Socket6 module already gives you ability to write IP-ersion agnostic 
application. You have access to getaddrinfo(), getnameinfo() and 
gai_strerror which allows you to write ip version agnostic code.

IO::Socket::INET6 is a generalisation of IO::Socket::INET to be IP version 
indepenedent. (Of course it allows accessing IPv6 specific elements like 
scope or flow).

e.g.:
$sock= IO::Socket::INET6->new (PeerAddr => 'www.6deploy.org',
                                PeerPort => 'http(80)',
                                Multihomed => 1,
                                Proto => 'tcp');

This should not care about the IP version.....

Best Regards,

 		Janos

---

From: Ed Jankiewicz <[email-masked]>
Date: Thu, 05 Feb 2009 14:59:24 -0500

also of interest is the book "IPv6 Network Programming" by Jun-ichiro 
Itojun Hagino, Elsevier Digital Press, ISBN 1-5558-318-0

-- 
Ed Jankiewicz - SRI International
Fort Monmouth Branch Office - IPv6 Research 
Supporting DISA Standards Engineering Branch
732-389-1003 or  [email-masked]

---

From: "Junichiro Hamaguchi" <[email-masked]>
Date: Thu, 5 Feb 2009 13:26:38 -0800

RFC3493, 3542, 5414 and RFC4584 if you deal with Mobile IPv6.

Also, I'd recommend to have these 2 books on your bookshelf.  These
books give you great detail of how IPv6 works, and they will be valuable
for you even you may not write code on KAME derived IPv6 stack. 

IPv6 Core Protocols Implementation
By Qing Li, Tatuya Jinmei, Keiichi Shima
ISBN: 978-0-12-447751-3
http://www.elsevierdirect.com/product.jsp?isbn=9780124477513

IPv6 Advanced Protocols Implementation
By Qing Li, Tatuya Jinmei, Keiichi Shima
ISBN: 978-0-12-370479-5
http://www.elsevierdirect.com/product.jsp?isbn=9780123704795 

HTH,
Junichiro Hamaguchi

-----Original Message-----
From: [email-masked] [mailto:[email-masked]] On
Behalf Of Ed Jankiewicz
Sent: Thursday, February 05, 2009 11:59 AM
To: [email-masked]
Cc: Mikael Abrahamsson
Subject: Re: webpage for ipv6 programmers