NetBSD and the World IPv6 Day
June 8th 2001 was announced as
World IPv6 Day,
where some major websites would increase adoption of the
"new" internet protocol by actually using it.

Interested NetBSD users have a
variety of options
to get NetBSD to talk IPv6, and Eric Haszlakiewicz has
posted about his experience: ``If anyone else has been putting off setting this up because it seemed like
it would be hard to do, I urge you to give it a shot.''

Catching up on source-changes (Feb 21st - Mar 1st)
Mark Kirby's CVS digest is still down. I'd love for someone to continue this service - please
contact Mark and/or me for details! (I don't really have time to do this,
but will try to do so. Help is definitely appreciated!!!)

Catching up on NetBSD's
source-changes mailing list from
Feb 21st 2008 to Mar 1st 2008, here's what people not following
things closely may find interesting:

Chris Gilbert made process on the chris-arm-intr-rework
branch, which aims at reworking the ARM interrupt code to provide
a shared set of interrupt routines that can be used across
all ARM based machines.

The PowerPC routines for bcopy, memcmp, memcpy and memmove were
updated to use tuned versions that were written by IBM and released
under a 3-clause BSD license as part of the perflib project, see
http://sourceforge.net/projects/ppcperflib/.

Keiichi Shima has imported the Mobile IPv6 code developed by
the SHISA project. The
work can be found on the "keiichi-mipv6" branch.

Matt fleming has started work on a device file system that supports
dynamic device nodes, which is of relevance when loading kernel
modules for device drivers, so you don't have to run /dev/MAKEDEV
manually. The work is on the "mjf-devfs2" branch.

Nick Hudson is currently working on syncing NetBSD's WiFi (net80211)
code with FreeBSD, so that these two operating systems (and possibly
others) can share a common codebase. The work currently affects
only the kernel, but this may extend to the userland eventually.

The glob(3) wildcard extension routines got a new options
GLOB_NO_DOTDIRS added, which hides . and .. even if the pattern
would otherwise include them.

Juan Romero Pardines has ported the mfi(4) driver from OpenBSD. The
driver supports disk controllers with PowerPC IOSs such as the LSI
SAS1078 and the Dell PERC6.

The boot-only ISOs built for releases included several kernels
(with ACPI, without ACPI) for some time now. Stephen Borrill has
added a menu to make kernel selection easier. Mmm, user friendliness!

The machine-independent versions of strcspn(3), strpbrk(3) and
strpspn(3) were improved from O(mn) to O(n+m) based on ideas from
DragonFlyBSD.

Power management hooks for suspend, shutdown and resume were
added to many device drivers, to support the new power management
framework by Jared McNeill.

A whole lot of changes were pulled up from NetBSD's development
branch into the release branches for NetBSD 3.x and 4.x.

So much for this round of updates. A lot of work was not done on the
main trunk but on some branches. People interested to learn what branches
exist in NetBSD's source tree can check out src/doc/BRANCHES to do so.
Enjoy!

The last interview with Itojun: The Man in the Machine
Recently passed-away Jun-ichiro "Itojun" Hagino did a lot of work on
IPv6, BSD in general and NetBSD in particular, and
SecurityFocus
is running
an inverview
that Federico 'Ed' Biancuzzi made a few weeks before
Itojun passed away.

RIP Jun-ichiro 'itojun' Itoh Hagino (Updated)
Rumours passed around early yesterday, and now there's an
official note on undeadly.org: It is my sad duty to note that
Jun-ichiro "itojun" Itoh Hagino has passed away on October 29, 2007,
at the age of 37.

Itojun used to work hard on the KAME IPv6 project and its
integration into various BSD projects, among them NetBSD,
into which he put a vast amount of time and energy.

On the state of IPv6 in computer science education
I've learned today that even though there's IPv6 infrastructure
available, IPv6 is disabled on all client workstations due to
the lack of firewall protection, which is due to a global lack
of interest^Wresources here. So much for our future
Bachelors of computer science getting a chance to get literate
in IPv6. :(

Book Review: IPv6 Network Programming, by Jun-ichiro itojun Hagino
Thanks to a kind donor of the
g4u
project, I found Jun-ichiro itojun Hagino's
book "IPv6 Network Programming" in the mail today.

The book consists of two parts: the first one talks about
IPv6 programming, and the second one lists a number of
relevant RFCs. The Programming part includes an overview
of the IPv6 APIs, puts emphasis on writing address-independent
programming and gives a fair number of guidelines in that area.
It then describes details for porting applications to support
IPv6, with details on what to look for in client and server
code, followed by a number of tips for IPv6 programming.
A practical example that shows how existing client and
server applications (nail and popa3d) can be changed to
support IPv6.

The second part of the book consists of 270 (of ~360!) pages
of printed RFCs, which is a bit over the top IMHO - if I'd wanted
to read them I would know where to find them. On the other hand I
have them all in one place, so I guess that can be excused.

Overall the book is rather technical and very much on the spot,
written for people with programming and Unix background to learn
on how to get the job done without much fluff. Minor nits are the
long appendix and that images appear a bit blurry, but that
shouldn't stop anyone from reading the book -
go for it!

TCPv6 Transmit Segment Offload (TSO) support in hardware
Work performed by TCP/IP networking stacks include many tasks, among them
are calculation of packet checksums and splitting of "big" packets that exceed the
hardware's maximum transport unit (MTU) into smaller, MTU-sized packets.
The latter process is called fragmentation, and re-assembly of the
fragmented packet on the receiving side has to be done as well, before
the original 'big' packet can be processed.

Modern network cards can do a lot of things in hardware today, and
-- depending on the card! -- some do support calculating checksums
for IP, TCP and UDP for both IPv4 and IPv6, and some even support
packet fragmentation. The latter is known as
TCP segmentation offloading (TSO),
as it reduces the load on the hosts's CPU by moving the
job to the network card.

NetBSD supports calculating of various checksums in hardware for
quite some time now (see the {ip,tcp,udp}{4,6}sum options in
ifconfig(8)), and support for TSO is available for TCP/IPv4
for some time, too, see the 'tso4' option of ifconfig(8).
In the past weeks, Matthias Scheler and Yamamoto Takashi have worked
on adding support for TCP/IPv6 TSO and the wm(4) driver, and the code
is now available in NetBSD-current, it can be enabled via the 'tso6' option
of ifconfig(8).

Ready for testing: Hardware accelerated IPsec with IPv6 (and IPv4)
As reported previously, Degroote Arnaud has worked on adding IPv6 support
for the
fast_ipsec(4)
IPsec implementation in NetBSD
as part of the ipsec6 Google SoC project,
see
his previous status report.
Before the project, the situation in NetBSD was that there
were two IPsec implementations: the KAME implementation which
worked for both IPv4 and IPv6 but didn't support crypto hardware,
and the fast_ipsec(4) implementation from FreeBSD that
did support crypto hardware but only IPv4, no IPv6.

With the success of the ipsec6 Google SoC project, the code
for hardware-accelerated IPsec with IPv6 (and IPv4) is now
ripe for testing, and the author has sent a second mail
asking for code review and testing:
``It would be nice too if some people can test the code in more real cases and
report success and failure.''
The pointer to the latest patch is
in his second mail.