Having VLAN at home is quite reasonable, having DNS may be excusable, but to run OSPF one must be a real nerd. Normally, I am not, but at a certain point I made a decision to use routed VM networking, rather than bridged, and things pretty much snowballed from there. The last straw was a weird regression in Fedora 15, which does not accept IPv6 statics which Fedora 14 did.
KVM host, zebra.conf:
! zebra.conf hostname simbelmyne.zaitcev.lan password grumble interface eth0 interface virbr0 ! we have to run radvd because of virsh, so don't interfere into virbr0 ipv6 nd suppress-ra log file /var/log/quagga/zebra.log
KVM host, ospfd.conf:
password grumble ! router ospf router-id 192.168.128.10 network 192.168.0.0/16 area 0 redistribute connected ! log file /var/log/quagga/ospfd.log
KVM host, ospf6d.conf:
password grumble router ospf6 redistribute connected route-map TBD interface eth0 area 0.0.0.0 interface virbr0 area 0.0.0.0 !! network fd2d:acfb:74cc::/48 area 0 !ipv6 prefix-list test-prefix seq 1000 deny any ipv6 prefix-list TBD-prefix permit fd2d:acfb:74cc:3::/64 ipv6 prefix-list TBD-prefix permit 2001:470:86b3:3::/64 route-map TBD permit 10 match ipv6 address prefix-list TBD-prefix log file /var/log/quagga/ospf6d.log
! zebra.conf hostname elanor.zaitcev.lan password grumble !ipv6 route ::/0 sit1 interface ethmain.5 ipv6 nd suppress-ra interface wlanhome ipv6 nd suppress-ra interface ethmain.3 ipv6 nd suppress-ra log file /var/log/quagga/zebra.log
password grumble router ospf router-id 192.168.128.1 network 192.168.0.0/16 area 0 redistribute connected default-information originate log file /var/log/quagga/ospfd.log
! ospf6d.conf password grumble router ospf6 router-id 192.168.128.1 !! redistribute kernel because it's the only way to fetch the default !! neither static nor connected work on it for some reason redistribute kernel route-map TBD ! redistribute static redistribute connected interface ethmain.5 area 0.0.0.0 interface wlanhome area 0.0.0.0 interface ethmain.3 area 0.0.0.0 ipv6 prefix-list TBD-prefix permit ::/0 !ipv6 prefix-list TBD-prefix permit fd2d:acfb:74cc::/48 !ipv6 prefix-list TBD-prefix permit 2001:470:1f05:51::/64 !ipv6 prefix-list TBD-prefix permit 2001:470:86b3::/48 !! route-map TBD permit 10 match ipv6 address prefix-list TBD-prefix log file /var/log/quagga/ospf6d.log
The biggest sticking point was the v6 default route. Defining it in zebra.conf and "redistribute static" plainly had no effect. The v4 side has "default-information originate" for that, but it's not documented for v6. Therefore, the weird workarounds with route map.