I've been monkeying with radvd at both the office and at home. While at the office, I configured a couple of Solaris boxes, and found out that you can set the Host ID part statically using something they call a "token":
Quote
# ifconfig e1000g0 inet6 plumb
# ifconfig e1000g0 inet6 token ::cafe:2000/64
# ifconfig e1000g0 inet6 up
# /usr/lib/inet/in.ndpd
# ifconfig -a6
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
inet6 ::1/128
e1000g0: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 2
inet6 fe80::214:4fff:fe02:4194/10
ether 0:14:4f:2:41:94
e1000g0:1: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
inet6 2001:1938:80:81e2::cafe:2000/64
It's a nice feature, set up the token and you'll get the same Host ID, let SLAAC provide the prefix and routing information.
However, I haven't found how to do this on Linux or Windows. There's some document out there that talks about manual IID setting via ioctl, but I haven't found how to do this via ifconfig or anything like that...