arisawa | 4 Jul 07:30 2015

ipv6 and ndb/csquery


I am currently trying ipv6 of Plan9.

with a line
	ip= ipv6=fe80::6a05:caff:fe00:fc34 ether=6805ca00fc34	sys=maia
in /lib/ndb/local, and executing
I tried dnsquery and csquery.

ii seems dnsquery is OK

term% ndb/dnsquery
> maia
maia.local ip
> maia ipv6
maia.local ipv6	fe80::6a05:caff:fe00:fc34
> ip ip ip ip ip
> ipv6 ipv6	2404:6800:4004:80c::1014

however I don’t understand the behavior of csquery

term% ndb/csquery
(Continue reading)

Charles Forsyth | 2 Jul 15:14 2015

Re: replace p9sk1 with something better(9front)

I hadn't looked at the "bounties" page recently. It includes

"improve the tls(3) device $10 - The TLS device implements the record layer protocols of Transport Layer Security version 1.0 and Secure Sockets Layer version 3.0. It does not implement the handshake protocols, which are responsible for mutual authentication and key exchange. Wanted: more ciphers, support for user certificates, support for certificate verification. ECDSA! ECDHE!"

I think that I'd avoid putting the negotiation and certificate stuff (as such) in the kernel device.

On 2 July 2015 at 13:57, Charles Forsyth <charles.forsyth <at>> wrote:

On 2 July 2015 at 13:30, Anthony Sorace <a <at>> wrote:
The p9sk1 *model* is great, and it'd be a real shame to drop it.

There always seems to be trouble setting it up, which suggests that the documentation people typically first see might need revising
(or better pointers if it exists but people don't find it).

gracc | 2 Jul 13:37 2015

replace p9sk1 with something better(9front)

as per
>>replace p9sk1 with something better

I'm looking to start on this, does anyone have thoughts on improvements?
At the moment I am intending to just replace the DES keys with AES but
is there any call for more structural changes?

I was thinking that an overhaul using public keys might be appropriate
so that the auth server would still be a trusted key holder but without
secret keys having to leave the user's machine.

(9front mailing list was down so im sending to 9fans instead, sorry if
that's a bother)

Nils M Holm | 2 Jul 10:11 2015

Scheme 9 ported to Plan 9

Scheme 9 from Empty Space (pun intended and originally a reference
to the movie, not to the OS) is an interpreter for R4RS Scheme.

In 2008 Bakul Shah pointed out that an interpreter with that name
should run on the Plan 9 OS and helped me port it. Ever since the
Plan 9 port has been in varying stages of bit rot.

After all the years I finally came around to straighten out some
rough edges of the Plan 9 port:

- the DEL key gets you back to the prompt instead of exiting the

- there is a target for system-wide installation in the mkfile
  (but S9 also runs in its source directory without installation)

- the HELP function works properly

So, if you are looking for a Scheme interpreter for Plan 9, look
no further! :)



Nils M Holm  < n m h  <at>  t 3 x . o r g >

Steve Simon | 30 Jun 22:54 2015

two ethernet in a raspberry pi.

I need a small computer to bridge two networks.

I thought of a raspberry pi with a usb ethernet dongle.

Anyone tried this? Any suggestions of known working usb
ethernet dongles?


Nils M Holm | 27 Jun 22:30 2015

Help with interrupting fgetc()

I'm trying to get the DEL key to cause an error in an interpreter I'm
writing. On Unix, I just catch SIGINT and set an error flag that causes
the interpreter to return to the REPL. On Plan9, fgetc() seems to return
EOF after catching an "interrupted" note.

To make a long story short, I expected the following code to echo
characters typed and print "oopsie" when DEL is pressed. It should
keep echoing after printing "oopsie", but it just exits instead.
What am I missing?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include <u.h>
#include <libc.h>
#include <stdio.h>

void n(void *x, char *s) {
	if (!strcmp(s, "interrupt")) {
	else {

main() {
	int	c;

	c = fgetc(stdin);
	while (c != EOF) {
		fputc(c, stdout);
		c = fgetc(stdin);
	return 0;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Nils M Holm  < n m h  <at>  t 3 x . o r g >

Roswell Grey | 27 Jun 06:58 2015

Basic limbo programming help

Hello fellow 9fans! I'm currently trying to learn limbo programming for fun and profit. I'm experienced in java and other languages, but I'd like to learn limbo because I want to (wait for it, drumroll please!) build a distributed agent-based system. The agents themselves aren't anything complicated; I've already written a prototype in java. However, limbo offers a vastly superior communications system than java (and windows for that matter), so I believe inferno is going to be a great choice in the desired platform. However, first thing's first, is learning the language. So, I'm reading "A descent into Limbo." And the first program example runs fine. However, the second, the graphical hello world, does not. I'm having a problem with the line:

t := tk->toplevel(ctxt.screen "");

The compiler is telling me that screen isn't a reference of ctxt, and it expected display instead. But if I change the reference from context to display, well... It will compile and run, but I don't get a button. The example pictures show a different inferno button than what is in the current version, so maybe it's an outdated example? Or is ctxt really the author telling me "don't copy and paste, think about what goes here!" Because I'm finding those hinted in other example codes as well. So, if there are any limbo programmers out there, would you mind giving me a hand? Thanks!

a.regenfuss | 26 Jun 21:25 2015

thank you

I just wanted to say thank you to Richard Miller (if he is reading this) for porting plan 9 to the raspberry pi. Having put so much work into a dead os (uh oh, am i going to get bashed for this?) is simply great. I am so happy having a good platform for running it and experimenting with it.
Thank you so much.
Anthony Sorace | 26 Jun 02:21 2015

p9p's stats

Two things on stats:

1) The load figures on OS X seem to be mostly useless: they indicate the machine is pretty much constantly
pegged, when it’s really mostly idle (as per ’top’ and Activity Monitor). Are other people seeing
this, as well?
(Results on FreeBSD and Linux match my expectations.)

2) I’m interested in backporting p9p’s auxstats to plan9, so I can monitor my cpu server in the same
stats window as I’m monitoring a FreeBSD host. Before I get started, has anyone attempted this?


Nils M Holm | 25 Jun 19:25 2015

ftpfs shows empty /n/ftp after login

Hello everybody!

Came back to Plan 9 recently, and I'm running into some trouble.
I'm running Plan 9 on QEMU and wanted to use ftpfs to exchange
data with my FreeBSD system.

When logging in via ftpfs, though, I get an empty /n/ftp directory.

This is how far I got:

My FreeBSD machine runs inetd and logging in to my FTP account
via localhost works fine and shows my home directory.

I'm using QEMU 2.2.1 (i386 emulation, no kqemu). This is what I do:

$ qemu -hda Plan9.qcow 

[ network card is being detected ]
[ log in as glenda ]
[ rio starts up ]

term% ip/ipconfig
term% ndb/dns -r
term% ftpfs
220 ananda.local FTP server (Version 6.00LS) ready
!Adding key: proto=pass server= service=ftp
user[glenda]: nmh
password: <super-secret-password>
331 Password required for nmh.
230 User nmh logged in.
215 UNIX Type: L8 Version: BSD-199506
257 "/u/home/nmh" is current directory.

And then it gets weird, I think:

term% ls -l /n/ftp
[ there should be lots of files here ]

The logfile on my FreeBSD machine says:

| Jun 25 19:16:16 ananda ftpd[1316]: connection from localhost (
| Jun 25 19:17:35 ananda ftpd[1316]: FTP LOGIN FROM localhost as nmh

and nothing more.

"ns | grep ftp" says "mount -c '#|/data1' /n/ftp"

Does anyone have any idea about what's going on here or how to debug?
It's been a while and my Plan-9-fu is quite rusty.



Nils M Holm  < n m h  <at>  t 3 x . o r g >

ron minnich | 25 Jun 17:54 2015

Plan 9 BOF at Usenix with a slight difference

I'm giving a talk at Usenix in Santa Clara in 2 weeks on u-root, and I'll be setting up a Plan 9 BOF (assuming there is room) with a difference: we're going to demo the GPL'ed Plan 9 code base booting on a small amd64 cluster (assuming it's working by then!). The system is built with gcc, although some of us are advocating moving to clang. A full build of all libraries, binaries, and kernels takes about 2-3 minutes. It's now possible to debug the kernel, including setting breakpoints and examining structures, with gdb when you are running under qemu. If you're at Usenix drop on by and see what you think. 

If you want to know more you can contact me off-list.