<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>linux.gen.nz</title>
	<atom:link href="http://blog.linux.gen.nz/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.linux.gen.nz</link>
	<description></description>
	<lastBuildDate>Thu, 08 Jul 2010 22:26:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Stalking Blizzard employees for fun and profit</title>
		<link>http://blog.linux.gen.nz/2010/07/stalking-blizzard-employees-for-fun-and-profit/</link>
		<comments>http://blog.linux.gen.nz/2010/07/stalking-blizzard-employees-for-fun-and-profit/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 22:25:52 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[battle.net]]></category>
		<category><![CDATA[blizzard]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[realid]]></category>
		<category><![CDATA[wow]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=114</guid>
		<description><![CDATA[Hopefully this will convince Blizzard that revealing all of their customers&#8217; real names on their forums is a bad, bad idea&#8230; 
]]></description>
			<content:encoded><![CDATA[<p>Hopefully <a href="http://asnowstormbyanyothername.blogspot.com/">this</a> will convince Blizzard that <a href="http://forums.battle.net/thread.html?topicId=25626109041">revealing all of their customers&#8217; real names</a> on their forums is a bad, bad idea&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2010/07/stalking-blizzard-employees-for-fun-and-profit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Product renaming at its best</title>
		<link>http://blog.linux.gen.nz/2010/06/product-renaming-at-its-best/</link>
		<comments>http://blog.linux.gen.nz/2010/06/product-renaming-at-its-best/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 12:41:00 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/2010/06/product-renaming-at-its-best/</guid>
		<description><![CDATA[It seems that Oracle have renamed Sun Studio Express to Oracle Solaris Studio Express.
If you want the Linux version, it&#8217;s Oracle Solaris Studio Express, for Linux.  Nope, that&#8217;s not confusing at all.
]]></description>
			<content:encoded><![CDATA[<p>It seems that Oracle have renamed <a href="http://en.wikipedia.org/wiki/Sun_Studio_%28software%29">Sun Studio</a> Express to <a href="http://developers.sun.com/sunstudio/downloads/express/index.jsp">Oracle Solaris Studio Express</a>.</p>
<p>If you want the Linux version, it&#8217;s Oracle Solaris Studio Express, for Linux.  Nope, that&#8217;s not confusing at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2010/06/product-renaming-at-its-best/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using IPSec to authenticate IPv6 OSPF under Linux</title>
		<link>http://blog.linux.gen.nz/2010/04/using-ipsec-to-authenticate-ipv6-ospf-under-linux/</link>
		<comments>http://blog.linux.gen.nz/2010/04/using-ipsec-to-authenticate-ipv6-ospf-under-linux/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 03:41:43 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=92</guid>
		<description><![CDATA[The IPv4 version of the OSPF routing protocol can use a shared secret to authenticate routers before forming an adjacency, in order to prevent rogue routers from affecting the routing table.  Because the IPv6 specification mandates that IPSec be included in any implementation of an IPv6 network stack, the internal authentication feature of OSPF [...]]]></description>
			<content:encoded><![CDATA[<p>The IPv4 version of the OSPF routing protocol can use a shared secret to authenticate routers before forming an adjacency, in order to prevent rogue routers from affecting the routing table.  Because the IPv6 specification mandates that IPSec be included in any implementation of an IPv6 network stack, the internal authentication feature of OSPF is no longer required, and has been removed from OSPFv3 (the IPv6 version of the protocol).</p>
<p>So if we want to authenticate neighbour routers in OSPFv3, IPSec AH needs to be set up.  Cisco makes this fairly easy, however it&#8217;s a little harder under Linux because the routing service doesn&#8217;t handle the encryption internally.<br />
<span id="more-92"></span><br />
Let&#8217;s start with a working OSPFv3 configuration without any authentication.  Here are two Linux machines with a few network interfaces set up.  Eth1 is the interface connecting the two routers over which we&#8217;ll be talking OSPF, and eth2 is an interface with a global unicast IPv6 /64 behind it &#8211; this is the subnet for which we&#8217;ll be exchanging routes across OSPF:</p>
<pre>root@router1:~# ip addr
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:9a:df:25 brd ff:ff:ff:ff:ff:ff
    inet 172.31.250.41/24 brd 172.31.250.255 scope global eth0
    inet6 fe80::a00:27ff:fe9a:df25/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:7e:8d:0f brd ff:ff:ff:ff:ff:ff
    inet 172.31.251.11/24 brd 172.31.251.255 scope global eth1
    inet6 fe80::a00:27ff:fe7e:8d0f/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:96:4d:f6 brd ff:ff:ff:ff:ff:ff
    inet6 2002:f0f0:f0f0:1001::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe96:4df6/64 scope link
       valid_lft forever preferred_lft forever
root@router1:~# 

root@router2:~# ip addr
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:6b:2f:c3 brd ff:ff:ff:ff:ff:ff
    inet 172.31.250.61/24 brd 172.31.250.255 scope global eth0
    inet6 fe80::a00:27ff:fe6b:2fc3/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b4:ce:0d brd ff:ff:ff:ff:ff:ff
    inet 172.31.251.12/24 brd 172.31.251.255 scope global eth1
    inet6 fe80::a00:27ff:feb4:ce0d/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:0e:99:57 brd ff:ff:ff:ff:ff:ff
    inet6 2002:f0f0:f0f0:1002::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe0e:9957/64 scope link
       valid_lft forever preferred_lft forever
root@router2:~# 

root@router1:~# ip -6 route
2002:f0f0:f0f0:1001::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router1:~# 

root@router2:~# ip -6 route
2002:f0f0:f0f0:1002::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router2:~# </pre>
<p>I&#8217;m using <a href="http://www.quagga.net/" target="_blank">quagga</a> as the OSPF implementation in these examples, however <a href="http://bird.network.cz/?index">BIRD</a> or <a href="http://www.xorp.org/">XORP</a> would also work.  Here&#8217;s the OSPF configuration for each of the routers:</p>
<pre>root@router1:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router1# show run
Building configuration...
Current configuration:
!
end
!
debug ospf6 lsa unknown
!
interface eth0
 ipv6 nd suppress-ra
!
interface eth1
 ipv6 nd suppress-ra
 ipv6 ospf6 cost 1
 ipv6 ospf6 dead-interval 40
 ipv6 ospf6 hello-interval 10
 ipv6 ospf6 instance-id 0
 ipv6 ospf6 priority 1
 ipv6 ospf6 retransmit-interval 5
 ipv6 ospf6 transmit-delay 1
!
interface eth2
 ipv6 nd suppress-ra
!
interface lo
!
router ospf6
 router-id 172.31.250.41
 redistribute kernel
 redistribute connected
 redistribute static
 interface eth1 area 172.31.250.0
!
line vty
!
router1# 

root@router2:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router2# show run
Building configuration...
Current configuration:
!
end
!
debug ospf6 lsa unknown
!
interface eth0
 ipv6 nd suppress-ra
!
interface eth1
 ipv6 nd suppress-ra
 ipv6 ospf6 cost 1
 ipv6 ospf6 dead-interval 40
 ipv6 ospf6 hello-interval 10
 ipv6 ospf6 instance-id 0
 ipv6 ospf6 priority 1
 ipv6 ospf6 retransmit-interval 5
 ipv6 ospf6 transmit-delay 1
!
interface eth2
 ipv6 nd suppress-ra
!
interface lo
!
router ospf6
 router-id 172.31.250.61
 redistribute kernel
 redistribute connected
 redistribute static
 interface eth1 area 172.31.250.0
!
line vty
!
router2# </pre>
<p>After starting quagga on both sides, the vtysh command &#8217;show ipv6 ospf neighbor&#8217; will list the other routers the OSPF process has discovered.  After a minute or so, the &#8217;state&#8217; column in the command&#8217;s output will change to &#8216;Full&#8217;, and the routers will begin exchanging routes:</p>
<pre>root@router1:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router1:~#

root@router2:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router2:~#

root@router1:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:32   Init/DROther         00:00:08 eth1[Waiting]
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:37   Full/DR              00:00:03 eth1[BDR]
router1# show ipv6 ospf6 route
*N E1 2002:f0f0:f0f0:1002::/64       fe80::a00:27ff:feb4:ce0d    eth1 00:00:06
router1# exit
root@router1:~#

root@router2:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router2# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.41     1    00:00:32   Full/BDR             00:00:26 eth1[DR]
router2# show ipv6 ospf6 route
*N E1 2002:f0f0:f0f0:1001::/64       fe80::a00:27ff:fe7e:8d0f    eth1 00:00:29
router2# exit
root@router2:~#</pre>
<p>These routes can also be viewed in the kernel&#8217;s route table:</p>
<pre>root@router1:~# ip -6 route
2002:f0f0:f0f0:1001::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
2002:f0f0:f0f0:1002::/64 via fe80::a00:27ff:feb4:ce0d dev eth1  proto zebra  metric 1  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router1:~#

root@router2:~# ip -6 route
2002:f0f0:f0f0:1001::/64 via fe80::a00:27ff:fe7e:8d0f dev eth1  proto zebra  metric 1  mtu 1500 advmss 1440 hoplimit 0
2002:f0f0:f0f0:1002::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router2:~#
</pre>
<p>The output of tcpdump while this process is happening looks like this:</p>
<pre>
root@router1:~# tcpdump -ni eth1 ip6 protochain ospf
Warning: Kernel filter failed: Invalid argument
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:11:19.802890 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, Hello, length 36
11:11:20.971742 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: OSPFv3, Hello, length 36
11:11:29.803137 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, Hello, length 40
11:11:30.969685 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: OSPFv3, Hello, length 40
11:11:39.812934 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, Hello, length 40
11:11:40.969455 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: OSPFv3, Hello, length 40
11:11:49.824862 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, Hello, length 40
11:11:50.974595 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: OSPFv3, Hello, length 40
11:11:59.813984 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: OSPFv3, Database Description, length 28
11:11:59.829019 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, Hello, length 40
11:12:00.972114 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: OSPFv3, Database Description, length 28
11:12:00.972334 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: OSPFv3, Database Description, length 68
11:12:00.972925 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: OSPFv3, LS-Request, length 40
11:12:00.972937 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: OSPFv3, Database Description, length 68
11:12:00.973037 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: OSPFv3, LS-Update, length 100
11:12:00.973157 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: OSPFv3, LS-Request, length 40
11:12:00.973263 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: OSPFv3, Database Description, length 28
11:12:00.974227 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: OSPFv3, Hello, length 40
11:12:00.974241 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: OSPFv3, LS-Update, length 100
11:12:00.974245 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: OSPFv3, LS-Update, length 92
11:12:00.975881 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, LS-Update, length 60
11:12:03.978931 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, LS-Ack, length 96
11:12:03.980485 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: OSPFv3, LS-Ack, length 76
11:12:09.833885 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: OSPFv3, Hello, length 40
^C
24 packets captured
36 packets received by filter
0 packets dropped by kernel
root@router1:~#
</pre>
<p>So that&#8217;s OSPF running &#8211; now we need to wrap some authentication around it.  In order to make the configuration simpler, I&#8217;m setting up manually keyed AH using setkey, which is part of <a href="http://ipsec-tools.sourceforge.net/" target="_blank">IPsec-Tools</a>.  Manual keying means the ISAKMP step can be skipped entirely, and using AH rather than ESP the OSPF packets will be visible on the wire with the AH header attached.</p>
<p>The setkey script being run at each side is identical:</p>
<pre>root@router1:~# cat linux-linux.setkey
#!/usr/sbin/setkey -f

# Router1 is fe80::a00:27ff:fe7e:8d0f
# Router2 is fe80::a00:27ff:feb4:ce0d

flush;
spdflush;

add -6 fe80::a00:27ff:fe7e:8d0f ff02::5 ah 0x10001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:feb4:ce0d ff02::5 ah 0x10002 -A hmac-sha1 "ospfv3 shared secret";

add -6 fe80::a00:27ff:feb4:ce0d fe80::a00:27ff:fe7e:8d0f ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:fe7e:8d0f fe80::a00:27ff:feb4:ce0d ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";

spdadd ::/0 ::/0 ospf -P out ipsec ah/transport//require;
spdadd ::/0 ::/0 ospf -P in ipsec ah/transport//require;
root@router1:~# 

root@router2:~# cat linux-linux.setkey
#!/usr/sbin/setkey -f

# Router1 is fe80::a00:27ff:fe7e:8d0f
# Router2 is fe80::a00:27ff:feb4:ce0d

flush;
spdflush;

add -6 fe80::a00:27ff:fe7e:8d0f ff02::5 ah 0x10001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:feb4:ce0d ff02::5 ah 0x10002 -A hmac-sha1 "ospfv3 shared secret";

add -6 fe80::a00:27ff:feb4:ce0d fe80::a00:27ff:fe7e:8d0f ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";
add -6 fe80::a00:27ff:fe7e:8d0f fe80::a00:27ff:feb4:ce0d ah 0x20001 -A hmac-sha1 "ospfv3 shared secret";

spdadd ::/0 ::/0 ospf -P out ipsec ah/transport//require;
spdadd ::/0 ::/0 ospf -P in ipsec ah/transport//require;
root@router2:~# </pre>
<p>The four &#8216;add&#8217; lines create the four security associations.  The first two allow for packets sent from eth1&#8217;s link-locak address on each router to ff02::5, which is the &#8220;All OSPFv3 Routers&#8221; link-local reserved multicast address.  The second pair allow for AH-protected direct communication between the two routers.  The &#8217;spdadd&#8217; lines configure the network stack to require AH authentication for all inbound and outbound OSPF traffic.</p>
<p>After loading the setkey script, the security association database can be viewed by running &#8217;setkey -D&#8217;:</p>
<pre>root@router1:~# ./linux-linux.setkey
root@router1:~# setkey -D
fe80::a00:27ff:fe7e:8d0f fe80::a00:27ff:feb4:ce0d
        ah mode=transport spi=131073(0x00020001) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=1 pid=2511 refcnt=0
fe80::a00:27ff:feb4:ce0d fe80::a00:27ff:fe7e:8d0f
        ah mode=transport spi=131073(0x00020001) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=2 pid=2511 refcnt=0
fe80::a00:27ff:feb4:ce0d ff02::5
        ah mode=transport spi=65538(0x00010002) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=3 pid=2511 refcnt=0
fe80::a00:27ff:fe7e:8d0f ff02::5
        ah mode=transport spi=65537(0x00010001) reqid=0(0x00000000)
        A: hmac-sha1  6f737066 76332073 68617265 64207365 63726574
        seq=0x00000000 replay=0 flags=0x00000000 state=mature
        created: Apr 16 11:04:56 2010   current: Apr 16 11:04:58 2010
        diff: 2(s)      hard: 0(s)      soft: 0(s)
        last:                           hard: 0(s)      soft: 0(s)
        current: 0(bytes)       hard: 0(bytes)  soft: 0(bytes)
        allocated: 0    hard: 0 soft: 0
        sadb_seq=0 pid=2511 refcnt=0
root@router1:~# </pre>
<p>Restart Quagga (assuming it&#8217;s not already running), and the adjacency will appear in the list as before:</p>
<pre>root@router1:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router1:~#

root@router2:~# /etc/init.d/quagga start
Loading capability module if not yet done.
Starting Quagga daemons (prio:10): zebra ospf6d.
root@router2:~#

root@router1:~# VTYSH_PAGER=cat vtysh
Hello, this is Quagga (version 0.99.13).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:30   Init/DROther         00:00:09 eth1[Waiting]
router1# show ipv6 ospf6 neighbor
Neighbor ID     Pri    DeadTime  State/IfState         Duration I/F[State]
172.31.250.61     1    00:00:36   Full/DR              00:00:04 eth1[BDR]
router1# exit
root@router1:~#

root@router1:~# ip -6 route
2002:f0f0:f0f0:1001::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
2002:f0f0:f0f0:1002::/64 via fe80::a00:27ff:feb4:ce0d dev eth1  proto zebra  metric 1  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
root@router1:~#</pre>
<p>This time, however, tcpdump shows that the traffic between the routers has the AH header attached, with a cryptographic signature verifying the identity of the neighbour router:</p>
<pre>root@router1:~# tcpdump -ni eth1 ip6 protochain ospf
Warning: Kernel filter failed: Invalid argument
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:15:02.997348 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x1): OSPFv3, Hello, length 36
11:15:04.701022 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x1): OSPFv3, Hello, length 36
11:15:13.001028 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x2): OSPFv3, Hello, length 40
11:15:14.706083 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x2): OSPFv3, Hello, length 40
11:15:23.011476 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x3): OSPFv3, Hello, length 40
11:15:24.711929 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x3): OSPFv3, Hello, length 40
11:15:33.021316 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x4): OSPFv3, Hello, length 40
11:15:34.716145 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x4): OSPFv3, Hello, length 40
11:15:43.012602 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x1): OSPFv3, Database Description, length 28
11:15:43.025608 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x5): OSPFv3, Hello, length 40
11:15:44.704244 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x1): OSPFv3, Database Description, length 28
11:15:44.704499 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x2): OSPFv3, Database Description, length 68
11:15:44.705260 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x2): OSPFv3, LS-Request, length 40
11:15:44.705281 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x3): OSPFv3, Database Description, length 68
11:15:44.705406 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x3): OSPFv3, LS-Update, length 100
11:15:44.705472 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x4): OSPFv3, LS-Request, length 40
11:15:44.705510 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x5): OSPFv3, Database Description, length 28
11:15:44.706691 IP6 fe80::a00:27ff:feb4:ce0d &gt; fe80::a00:27ff:fe7e:8d0f: AH(spi=0x00020001,seq=0x4): OSPFv3, LS-Update, length 100
11:15:44.706716 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x5): OSPFv3, LS-Update, length 92
11:15:44.716271 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x6): OSPFv3, Hello, length 40
11:15:47.712150 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x6): OSPFv3, LS-Ack, length 96
11:15:47.712389 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x7): OSPFv3, LS-Ack, length 56
11:15:49.711795 IP6 fe80::a00:27ff:fe7e:8d0f &gt; fe80::a00:27ff:feb4:ce0d: AH(spi=0x00020001,seq=0x6): OSPFv3, LS-Update, length 60
11:15:52.716154 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x8): OSPFv3, LS-Ack, length 36
11:15:53.025925 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x7): OSPFv3, Hello, length 40
11:15:54.722931 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0x9): OSPFv3, Hello, length 40
11:16:03.032684 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x8): OSPFv3, Hello, length 40
11:16:04.726516 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0xa): OSPFv3, Hello, length 40
11:16:13.041695 IP6 fe80::a00:27ff:fe7e:8d0f &gt; ff02::5: AH(spi=0x00010001,seq=0x9): OSPFv3, Hello, length 40
11:16:14.732027 IP6 fe80::a00:27ff:feb4:ce0d &gt; ff02::5: AH(spi=0x00010002,seq=0xb): OSPFv3, Hello, length 40
^C
30 packets captured
42 packets received by filter
0 packets dropped by kernel
root@router1:~# </pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2010/04/using-ipsec-to-authenticate-ipv6-ospf-under-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sunday ride</title>
		<link>http://blog.linux.gen.nz/2009/10/sunday-ride/</link>
		<comments>http://blog.linux.gen.nz/2009/10/sunday-ride/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 01:44:38 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cycling]]></category>
		<category><![CDATA[makara]]></category>
		<category><![CDATA[red rocks]]></category>
		<category><![CDATA[wellington]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=83</guid>
		<description><![CDATA[25/10/2009 Route &#8211; Red Rocks-&#62;MakaraFind more Mtn Bikings in Wellington, New Zealand
]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://js.mapmyfitness.com/embed/blogview.html?r=6b30f69fb36f5748550df20010d1ca6a&#038;u=m&#038;t=ride" height="700px" width="100%" frameborder="0"><a href="http://www.mapmyride.com/route/new-zealand/wellington/817125645952344172">25/10/2009 Route &#8211; Red Rocks-&gt;Makara</a><br/><a href="http://www.mapmyride.com/find-route/new-zealand/wellington">Find more Mtn Bikings in Wellington, New Zealand</a></iframe><!-- MMF PARTNER TOOL --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2009/10/sunday-ride/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yep</title>
		<link>http://blog.linux.gen.nz/2009/05/yep/</link>
		<comments>http://blog.linux.gen.nz/2009/05/yep/#comments</comments>
		<pubDate>Thu, 28 May 2009 22:52:18 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=76</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.linux.gen.nz/wp-content/uploads/2009/05/adobereader1.png" alt="adobereader" title="adobereader" width="538" height="201" class="alignnone size-full wp-image-78" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2009/05/yep/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Peter Baker Transport will destroy your stuff</title>
		<link>http://blog.linux.gen.nz/2009/04/peter-baker-transport-will-destroy-your-stuff/</link>
		<comments>http://blog.linux.gen.nz/2009/04/peter-baker-transport-will-destroy-your-stuff/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 02:18:11 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=67</guid>
		<description><![CDATA[Over the last few months I&#8217;ve been trawling Trademe for bits of Cisco kit to build a CCNA practice network &#8211; most recently, a 2600 router, 3640 router and external DC power supply.  Unfortunately the package was too heavy for NZ Post to carry, so the seller shipped it with Peter Baker Transport.
The box with [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last few months I&#8217;ve been trawling <a href="http://www.trademe.co.nz/" target="_blank">Trademe</a> for bits of Cisco kit to build a CCNA practice network &#8211; most recently, a 2600 router, 3640 router and external DC power supply.  Unfortunately the package was too heavy for NZ Post to carry, so the seller shipped it with <a href="http://www.pbt.co.nz/">Peter Baker Transport</a>.</p>
<p>The box with the gear in it arrived a couple of days later.  Despite several layers of bubble wrap and bunched up newspaper, PBT had done their best to cause as much damage as possible.  The photos tell it better than I can:</p>
<p><span id="more-67"></span></p>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://linux.gen.nz/pictures/pbt/2621_front_1.jpg"><img src="http://linux.gen.nz/pictures/pbt/thumbnails/2621_front_1.jpg" alt="The 2600 came out best - minor damage to the bezel and a dent in the chassis which I didnt manage to take a decent photo of" width="600" height="400" /></a><p class="wp-caption-text">The 2600 came out best - minor damage to the front panel and a dent in the right rear corner of the chassis.</p></div>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://linux.gen.nz/pictures/pbt/3650_front_1.jpg"><img src="http://linux.gen.nz/pictures/pbt/thumbnails/3640_front_1.jpg" alt="The 3640s bezel was completely destroyed" width="600" height="400" /></a><p class="wp-caption-text">The 3640&#39;s front panel was completely destroyed...</p></div>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://linux.gen.nz/pictures/pbt/3640_front_2.jpg"><img src="http://linux.gen.nz/pictures/pbt/thumbnails/3640_front_2.jpg" alt="...with enough force to drive plastic between the lid and case." width="600" height="400" /></a><p class="wp-caption-text">...with enough force to drive plastic between the lid and case.</p></div>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://linux.gen.nz/pictures/pbt/3640_rear_2.jpg"><img src="http://linux.gen.nz/pictures/pbt/thumbnails/3640_rear_2.jpg" alt="The handles for those removable modules are supposed to be horizontal" width="600" height="400" /></a><p class="wp-caption-text">The handles for those removable modules are supposed to be horizontal</p></div>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://linux.gen.nz/pictures/pbt/rps600_rear_3.jpg"><img src="http://linux.gen.nz/pictures/pbt/thumbnails/rps600_rear_3.jpg" alt="One corner of the rear panel of the power supply was bashed in a bit.  That metal is close to 1mm thick." width="600" height="400" /></a><p class="wp-caption-text">One corner of the rear panel of the power supply was bashed in a bit.  That metal is close to 1mm thick.</p></div>
<div class="wp-caption alignnone" style="width: 610px"><a href="http://linux.gen.nz/pictures/pbt/bezels_1.jpg"><img src="http://linux.gen.nz/pictures/pbt/thumbnails/bezels_1.jpg" alt="Assorted pieces of the front panels.  The mainly whole one was from the RPS power supply, but the clips that hold it onto the chassis are long gone." width="600" height="400" /></a><p class="wp-caption-text">Assorted pieces of the front panels.  The mainly whole one was from the RPS power supply, but the clips that hold it onto the chassis are long gone.</p></div>
<p>Given that there&#8217;s significant damage to both the front and back of the gear, I suspect it&#8217;s been dropped (or had stuff dropped onto it) more than once.  Needless to say I&#8217;ll be doing my best to avoid PBT from now on.</p>
<p>The good news is that the damage seems to be all cosmetic &#8211; all the equipment powers on and seems to function as it should.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2009/04/peter-baker-transport-will-destroy-your-stuff/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Getting the Telecom T-Stick working under OpenSolaris</title>
		<link>http://blog.linux.gen.nz/2009/01/getting-the-telecom-t-stick-working-under-opensolaris/</link>
		<comments>http://blog.linux.gen.nz/2009/01/getting-the-telecom-t-stick-working-under-opensolaris/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 03:09:56 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=65</guid>
		<description><![CDATA[About 6 months ago, I replaced my Vodafone 3G PCMCIA card with a Sierra Wireless 597 USB EVDO modem (branded by Telecom New Zealand as &#8216;T-Stick&#8217;).  Unfortunately there&#8217;s a bit more inside it than just a USB modem &#8211; the manufacturers also decided to cram in a Micro-SD reader and a pretend CD Rom drive [...]]]></description>
			<content:encoded><![CDATA[<p>About 6 months ago, I replaced my Vodafone 3G PCMCIA card with a Sierra Wireless 597 USB EVDO modem (branded by Telecom New Zealand as &#8216;T-Stick&#8217;).  Unfortunately there&#8217;s a bit more inside it than just a USB modem &#8211; the manufacturers also decided to cram in a Micro-SD reader and a pretend CD Rom drive with the software for the device on it.  The first time you plug it into a Windows PC, the cdrom appears, its autorun fires off the software installer and the driver gets installed.  Then, when you remove and reattach it to your PC, the modem gets detected and you&#8217;re able to get online.</p>
<p>Plugging it into the laptop running OpenSolaris, the MicroSD reader and CDRom device were detected by the kernel and appeared in Gnome&#8217;s file manager without any issues, however there was no sign of the serial device:</p>
<blockquote><p><code>Jan 28 14:09:13 pkunk usba: [ID 912658 kern.info] USB 1.10 device (usb1199,fff) operating at full speed (USB 1.x) on USB 1.10 root hub: storage@2, scsa2usb2 at bus address 3<br />
Jan 28 14:09:13 pkunk usba: [ID 349649 kern.info] 	Sierra Wireless USB MMC Storage SWOC22905731<br />
Jan 28 14:09:13 pkunk genunix: [ID 936769 kern.info] scsa2usb2 is /pci@0,0/pci1028,188@1d,3/storage@2<br />
Jan 28 14:09:13 pkunk genunix: [ID 408114 kern.info] /pci@0,0/pci1028,188@1d,3/storage@2 (scsa2usb2) online<br />
Jan 28 14:09:14 pkunk scsi: [ID 193665 kern.info] sd4 at scsa2usb2: target 0 lun 0<br />
Jan 28 14:09:14 pkunk genunix: [ID 936769 kern.info] sd4 is /pci@0,0/pci1028,188@1d,3/storage@2/disk@0,0<br />
Jan 28 14:09:14 pkunk genunix: [ID 408114 kern.info] /pci@0,0/pci1028,188@1d,3/storage@2/disk@0,0 (sd4) online<br />
Jan 28 14:09:14 pkunk scsi: [ID 193665 kern.info] sd5 at scsa2usb2: target 0 lun 1<br />
Jan 28 14:09:14 pkunk genunix: [ID 936769 kern.info] sd5 is /pci@0,0/pci1028,188@1d,3/storage@2/disk@0,1<br />
Jan 28 14:09:14 pkunk genunix: [ID 408114 kern.info] /pci@0,0/pci1028,188@1d,3/storage@2/disk@0,1 (sd5) online<br />
Jan 28 14:09:14 pkunk genunix: [ID 314293 kern.info] device pciclass,030000@0(display#0) keeps up device sd@0,0(disk#4), but the latter is not power managed<br />
Jan 28 14:09:14 pkunk genunix: [ID 314293 kern.info] device pciclass,030000@0(display#0) keeps up device sd@0,1(disk#5), but the latter is not power managed</code></p></blockquote>
<p><span id="more-65"></span>The device can operate in two different modes &#8211; by default it&#8217;ll put itself in &#8216;Tru Install&#8217; mode, which hides the modem device and exposes the virtual CDRom drive containing the drivers.  The other mode hides the CDRom device and allows the modem to be used to dial out, and it&#8217;s up to the driver to perform the switch.</p>
<p>Obviously the Windows driver that comes with the device won&#8217;t work under OpenSolaris, but a gent called Patrick Arnoux has written a utility to enable the modem.  I found it attached to <a href="http://markmail.org/message/btp7n2sqydukvxup" target="_blank">this mailing list post</a>, but I&#8217;ve put up a copy <a href="http://stranglethorn.linux.gen.nz/switch2modem.tar" target="_blank">here</a> in case the mailing list archives ever go away.</p>
<p>As the comments at the top of the source file describe, some other configuration needs to be in place before it&#8217;ll work.  Specifically, you need to tell OpenSolaris which driver to use for the USB devices:</p>
<blockquote><p><code>pkunk:~ # update_drv -a -i 'usb1199,fff' ugen<br />
devfsadm: driver failed to attach: ugen<br />
Warning: Driver (ugen) successfully added to system but failed to attach<br />
pkunk:~ # update_drv -a -i 'usb1199,23' usbsacm<br />
devfsadm: driver failed to attach: usbsacm<br />
Warning: Driver (usbsacm) successfully added to system but failed to attach<br />
pkunk:~ # </code></p></blockquote>
<p>The first command tells the OS to use the generic USB character device driver for the initial device that gets detected (vendor id 1199, device id 0fff).  I&#8217;m not entirely sure whether or not this is necessary, but haven&#8217;t experimented.  It does have the effect of preventing the Micro SD and CDRom devices appearing.  The second command ties the USB ACM driver to the modem device (vendor id 1199, device id 0023).  This device ID is different from the one in the source code comments, but it will vary from modem to modem.  0023 is the correct value for the Sierra Wireless 597.</p>
<p>After running those two commands, the following lines will appear in /etc/driver_aliases:</p>
<blockquote><p><code>pkunk:~ $ grep usb1199 /etc/driver_aliases<br />
ugen "usb1199,fff"<br />
usbsacm "usb1199,23"<br />
pkunk:~ $</code></p></blockquote>
<p>At this point I needed to reboot; I imagine because the other driver had already attached itself to the USB device.  After rebooting, when the modem is attached dmesg isn&#8217;t quite as noisy, and the storage devices will no longer appear in gnome file manager:</p>
<blockquote><p><code>Jan 28 14:36:12 pkunk usba: [ID 912658 kern.info] USB 1.10 device (usb1199,fff) operating at full speed (USB 1.x) on USB 1.10 root hub: storage@2, ugen1 at bus address 3<br />
Jan 28 14:36:12 pkunk usba: [ID 349649 kern.info] 	Sierra Wireless USB MMC Storage SWOC22905731<br />
Jan 28 14:36:12 pkunk genunix: [ID 936769 kern.info] ugen1 is /pci@0,0/pci1028,188@1d,3/storage@2<br />
Jan 28 14:36:12 pkunk genunix: [ID 408114 kern.info] /pci@0,0/pci1028,188@1d,3/storage@2 (ugen1) online</code></p></blockquote>
<p>The next step is to build the source.  It needs the SUNWusbu (libUSB headers) package installed, and obviously a C compiler.  I also found I was missing /usr/sfw/include/usb.h (as described <a href="http://blogs.sun.com/paulie/entry/apc_ups_on_opensolaris_apcupsd">here</a>).  The file can be <a href="http://src.opensolaris.org/source/raw/sfw/usr/src/lib/libusb/inc/usb.h " target="_blank">found on src.opensolaris.org</a>; once I&#8217;d downloaded it and put it into /usr/sfw/include/ I could run make fine, and build myself a switch2modem binary.  Running it looks something like this:</p>
<blockquote><p><code>pkunk:~ $ ./switch2modem/switch2modem<br />
Switching Sierra device to Modem mode - Successful !<br />
There should be nothing to release<br />
This is an expected error<br />
pkunk:~ $</code></p></blockquote>
<p>And lo, some serial devices appear:</p>
<blockquote><p><code>pkunk:~ $ ls -l /dev/cua/<br />
total 2<br />
lrwxrwxrwx 1 root root 52 2009-01-28 14:37 0 -&gt; ../../devices/pci@0,0/pci1028,188@1d,3/device@2:0,cu<br />
lrwxrwxrwx 1 root root 52 2009-01-28 14:37 1 -&gt; ../../devices/pci@0,0/pci1028,188@1d,3/device@2:1,cu<br />
lrwxrwxrwx 1 root root 52 2009-01-28 14:37 2 -&gt; ../../devices/pci@0,0/pci1028,188@1d,3/device@2:2,cu<br />
lrwxrwxrwx 1 root root 52 2009-01-28 14:37 3 -&gt; ../../devices/pci@0,0/pci1028,188@1d,3/device@2:3,cu<br />
pkunk:~ $ </code></p></blockquote>
<p>It turns out /dev/cua/0 is the modem device in my case; after installing SUNWbnu and adding entries for the four devices to /etc/uucp/Devices, I was able to use cu to talk to it:</p>
<blockquote><p><code>sam@pkunk:~$ cu -lcua/0<br />
Connected<br />
AT<br />
OK<br />
ATI<br />
Manufacturer: Sierra Wireless, Inc.<br />
Model: C597 Rev 1.0 (2)<br />
Revision: p2314500,4012 [Mar 06 2008 17:19:08]<br />
[...]</code></p></blockquote>
<p>All that remains is to set up PPP!  I symlinked /dev/term/0 to /dev/evdo, then copied bits of <a href="http://andrew.mcmillan.net.nz/node/58" target="_blank">Andrew McMillan&#8217;s</a> configuration and created /etc/ppp/peers/Telecom3G:</p>
<blockquote><p><code>nodetach<br />
evdo<br />
230400<br />
noauth<br />
passive<br />
defaultroute<br />
usepeerdns<br />
noccp<br />
novj<br />
user "mobile@jamamobile"<br />
show-password<br />
crtscts<br />
connect '/usr/bin/chat -V -t15 -f /etc/ppp/Telecom3G-chat'</code></p></blockquote>
<p>And /etc/ppp/Telecom3G-chat:</p>
<blockquote><p><code>'' 'ATZ'<br />
'OK' 'ATE0V1&amp;F&amp;D2&amp;C1&amp;C2S0=0'<br />
'OK' 'ATE0V1'<br />
'OK' 'ATS7=60'<br />
'OK' 'ATDT#777'<br />
CONNECT ''</code></p></blockquote>
<p>And added a line to /etc/ppp/pap-secrets:</p>
<blockquote><p><code>mobile@jamamobile * telecom</code></p></blockquote>
<p>Once that&#8217;s done, pppd dials out happily:</p>
<blockquote><p><code>pkunk:~ $ sudo pppd call Telecom3G<br />
ATZ<br />
OK<br />
ATE0V1&amp;F&amp;D2&amp;C1&amp;C2S0=0<br />
OK<br />
ATE0V1<br />
OK</p>
<p>OK</p>
<p>CONNECTSerial connection established.<br />
Using interface sppp0<br />
Connect: sppp0 &lt;--&gt; /dev/evdo<br />
local  IP address 166.179.151.107<br />
remote IP address 166.179.144.1<br />
primary   DNS address 202.27.158.40<br />
secondary DNS address 202.27.156.72</code></p></blockquote>
<p>And I have a new network interface:</p>
<blockquote><p><code>pkunk:~ $ /sbin/ifconfig sppp0<br />
sppp0: flags=10010008d1&lt;UP,POINTOPOINT,RUNNING,NOARP,MULTICAST,IPv4,FIXEDMTU&gt; mtu 1500 index 3<br />
inet 166.179.151.107 --&gt; 166.179.144.1 netmask ffff0000<br />
pkunk:~ $</code></p></blockquote>
<p>Unfortunately pppd seems to be writing its nameservers to /etc/ppp/resolv.conf rather than /etc/resolv.conf; I haven&#8217;t looked into how to change this behaviour yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2009/01/getting-the-telecom-t-stick-working-under-opensolaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing with OpenSolaris</title>
		<link>http://blog.linux.gen.nz/2009/01/playing-with-opensolaris/</link>
		<comments>http://blog.linux.gen.nz/2009/01/playing-with-opensolaris/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 00:48:20 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=64</guid>
		<description><![CDATA[I got a little bored last night and decided to drop OpenSolaris onto my old laptop (Dell Inspiron 6000).  I&#8217;ve messed around with OpenSolaris before from time to time, but only in a VM &#8212; never as the main OS on a machine.
So far it&#8217;s been pretty good &#8211; the live CD and installer are [...]]]></description>
			<content:encoded><![CDATA[<p>I got a little bored last night and decided to drop OpenSolaris onto my old laptop (Dell Inspiron 6000).  I&#8217;ve messed around with OpenSolaris before from time to time, but only in a VM &#8212; never as the main OS on a machine.</p>
<p>So far it&#8217;s been pretty good &#8211; the live CD and installer are really slick.  The wireless in my laptop Just Worked (though amusingly enough the wired network didn&#8217;t &#8211; there doesn&#8217;t seem to be a Broadcom 4401 driver in the default install).  When I installed to the hard disk it even carried across the wireless SSID and WPA key I&#8217;d configured while booted into the livecd.  Getting the wired network going shouldn&#8217;t be a huge hassle &#8211; it looks like there&#8217;s a <a title="Free NIC drivers for Solaris" href="http://homepage2.nifty.com/mrym3/taiyodo/eng/" target="_blank">third party driver</a> available for it, so I&#8217;ll try that out tonight.</p>
<p>X worked without much trouble, and came up antialiased by default.  Unfortunately it doesn&#8217;t feel like I&#8217;ve got hardware graphics acceleration (I&#8217;m using a Radeon Mobility X300), so Xorg uses 50%+ CPU whenever there&#8217;s a lot of graphical updates.  Fixing that may just be a matter of changing the driver X is selecting though; I haven&#8217;t spent much time looking into it.</p>
<p>There&#8217;s now a graphical package manager (closely modeled on <a title="Synaptic Package Manager" href="http://www.nongnu.org/synaptic/action.html" target="_blank">Synaptic</a>) with retrieval from Internet package repositories &#8211; a lot easier than downloading stuff by hand and installing it with pkgadd.  The package manager is also used to notify users about available updates, much the same as Ubuntu.</p>
<p>I even managed to get my USB EVDO modem working, but I&#8217;ll go into that in detail later.</p>
<p>In fact, there&#8217;s been remarkably little that <strong>hasn&#8217;t</strong> worked.  The only issue I&#8217;ve got currently (aside from what I&#8217;ve mentioned above) is that edge scrolling on the Synaptics trackpad doesn&#8217;t work at the moment.  And again, this may just be a matter of messing around with xorg.conf.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2009/01/playing-with-opensolaris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heh heh heh</title>
		<link>http://blog.linux.gen.nz/2009/01/heh-heh-heh/</link>
		<comments>http://blog.linux.gen.nz/2009/01/heh-heh-heh/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 21:53:01 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=63</guid>
		<description><![CDATA[Looks like someone at IRD forgot to renew a certificate&#8230;

]]></description>
			<content:encoded><![CDATA[<p>Looks like someone at IRD forgot to renew a certificate&#8230;</p>
<p><a href="http://blog.linux.gen.nz/wp-content/uploads/2009/01/irdcert.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="554" alt="irdcert" src="http://blog.linux.gen.nz/wp-content/uploads/2009/01/irdcert-thumb.jpg" width="730" border="0"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2009/01/heh-heh-heh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dear Mozilla Foundation</title>
		<link>http://blog.linux.gen.nz/2008/11/dear-mozilla-foundation/</link>
		<comments>http://blog.linux.gen.nz/2008/11/dear-mozilla-foundation/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 02:32:25 +0000</pubDate>
		<dc:creator>sam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.linux.gen.nz/?p=60</guid>
		<description><![CDATA[Why do you make it so fucking hard to keep the &#8216;Silently download and execute binary code on my computer without asking permission&#8217; option in Firefox turned off?&#160; I have a traffic-metered connection that I use during the day, I don&#8217;t want to download fucking web browser updates over it.
Would it really be that hard [...]]]></description>
			<content:encoded><![CDATA[<p>Why do you make it so fucking hard to keep the &#8216;Silently download and execute binary code on my computer without asking permission&#8217; option in Firefox turned off?&#160; I have a traffic-metered connection that I use during the day, I don&#8217;t want to download fucking web browser updates over it.</p>
<p>Would it really be that hard to make the setting stick between major revision updates?&#160; I had it turned off in Firefox 2, why is it back on again in Firefox 3?&#160; Most of my other settings managed to transfer over ok.</p>
<p>I want to know when I&#8217;m installing software on my computer.&#160; I don&#8217;t want it to be done without my permission.</p>
<p>Also, fuck you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.linux.gen.nz/2008/11/dear-mozilla-foundation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
