hosts.lisp: Replacing IPv6 host routes with /112 networks.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 13 Jul 2013 15:34:40 +0000 (16:34 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 19 Apr 2014 12:51:52 +0000 (13:51 +0100)
Linux has a bug: it doesn't make route cache entries for remote hosts if
there's already a host route, and it only attaches path-MTU information
to cache entries.  The result is that it doesn't handle ICMPv6 `packet
too big' messages properly for destinations with host routes.

I'm bodging this by replacing all of the host routes with tiny /112
networks.  It's awful, but it seems to work.  The convention is that the
`host part' of the net is always zero.

hosts.lisp

index 881ad01..7c3383e 100644 (file)
 (defhost vampire.untrusted (untrusted 3))
 
 ;; Virtual private network.
-(defhost crybaby.vpn (vpn 1))
+(defhost crybaby.vpn ((:ipv4 vpn 1) (:ipv6 vpn "::1:0")))
 (defhost terror.vpn ((:ipv4 vpn 2)))
-(defhost orange.vpn (vpn 3))
+(defhost orange.vpn ((:ipv4 vpn 3) (:ipv6 vpn "::3:0")))
 
 ;; Iodine network.
 (defhost jazz.iodine (iodine 1))
 (defhost jazz.colo (colo 5))
 
 ;; Anycast addresses for services.
-(defhost dns0.any (any 0))
-(defhost dns1.any (any 1))
-(defhost ntp0.any (any 2))
-(defhost ntp1.any (any 3))
-(defhost www-cache.any (any 4))
-(defhost krb0.any (any 5))
-(defhost krb1.any (any 6))
+(defhost dns0.any ((:ipv4 any 0) (:ipv6 any "::0:0")))
+(defhost dns1.any ((:ipv4 any 1) (:ipv6 any "::1:0")))
+(defhost ntp0.any ((:ipv4 any 2) (:ipv6 any "::2:0")))
+(defhost ntp1.any ((:ipv4 any 3) (:ipv6 any "::3:0")))
+(defhost www-cache.any ((:ipv4 any 4) (:ipv6 any "::4:0")))
+(defhost krb0.any ((:ipv4 any 5) (:ipv6 any "::5:0")))
+(defhost krb1.any ((:ipv4 any 6) (:ipv6 any "::6:0")))
 
 ;;;--------------------------------------------------------------------------
 ;;; Host switch.