Aus der Reihe "ein Mann muss tun, was ein Mann tun muss", oder so.
Weihnachten ist seit Jahren eine gute Gelegenheit, endlich mal wieder so richtig zu Coden - mehrere Tage konzentriert mit dem selben Stück gammeligen Source-Code zu verbringen, bis das Teil endlich das tut, was es soll, statt - wie sonst - eher "ein bisschen dies, ein bisschen das, dann wieder ein Kunde am Telefon" event-driven zu arbeiten.
Dieses Jahr war das Opfer OpenVPN.
Nützliche Software, leider nur sehr rudimentär IPv6-fähig - und das ist sehr lästig, wenn man per OpenVPN versucht, auf Webserver in der Firma zuzugreifen, der Browser aber lieber aussen rum geht ("intra.space.net hat IPv6, ich hab' IPv6, also mach ich das mal" - aber mangels IPv6-Fähigkeit von OpenVPN im server-tun-Mode eben nicht
durchs VPN...)
Der Source ist streckenweise wirklich elegant (grad der Routingtable-Kram in multi.c/mroute.c ist erstaunlich), und streckenweise ziemlich grottig (tonnenweise Code-Duplizierung für die eigentlich ähnlichen aber dann doch subtil unterschiedlichen 50 unterstützen BSD-Varianten, siehe tun.c/route.c), und streckenweise darf man dann auch erstmal Kernel-Code lesen, um rauszufinden, warum's nicht tut (OpenVPN-tun gegen NetBSD).
Kurz: es hat eigentlich grossen Spass gemacht
Der Patch ist ca. 2000 Zeilen lang (diff -u), und liegt
hier (Patch + ChangeLog + Anleitung).
PS: Neko war nicht wirklich glücklich... zunehmend wachsende Nach-Weihnachts-Chaos-Berge im Haus, und vollkommen unzurechnungsfähiger Mann im Coding-Wahn
PS2: Solaris geht noch nicht, das steht für morgen auf dem Programm. Wenn sie mich lässt...