Anthony Sorace | 4 Mar 05:53 2015

Portable NAT-busting reverse-proxy

I have a web service that runs localhost-only on my laptop which I'd sometimes like to make available on the
public internet. The service listens on port 8000. The laptop moves around periodically, is usually
behind a NAT, and is sometimes offline. Here's how I do it.

1) In Inferno on my laptop, I export my local network stack:
	listen -Av 'tcp!*!5555' {export /net&}
(This whole setup would've been way simpler if drawterm exported the network stack like Inferno does. Does
it on any platform?)

2) On my Plan 9 cpu server, I have a service which looks something like this (at, say, /rc/bin/service/tcp1234):
	echo -n 0 > /srv/remotenet
There's a bit more going on in the real version of this, but this version works. Thanks to qrstuv on irc for a
reminder of the "echo -n 0 > /srv/foo" trick mentioned here:

3) Also on my cpu server, I have a service which looks like this (call it /rc/bin/service/tcp4321):

	mount /srv/remotenet /n/remnet

	aux/trampoline $netd^/tcp!^$host^!8000
Again, more logging & error checking in the real thing, but this should work as-is (I have a fallback for if
/srv/remotenet can't be mounted, when the laptop is offline).

4) Finally, on my laptop I run:
	trampoline -a 'tcp!localhost!5555' tcp!my-cpuserver!1234
Getting trampoline running under p9p was trivial: I just removed the mac checking bits. I'm not sure why p9p
(Continue reading)

Rudolf Sykora | 3 Mar 12:15 2015

vt and mouse


is it so that one can't use mouse when running 'vt'
(I tried to run ssh within it.)


Anthony Sorace | 3 Mar 02:08 2015

Plan 9 not selected for GSoC

Unfortunately, we were not selected as one of the
mentoring orgs in GSoC this year. I'm going to try
and make the meeting for rejected orgs on Friday
(I'll be traveling, but should be able to make it)
and will hopefully get some insight into why then.
I'll report back any interesting findings.

If you're a student who'd been hoping to work with
us in GSoC, I'd point out that there's no real reason
to wait on that program - we're always happy to
have new folks interested and contributing. Feel
free the reach out if you want pointers on getting
started. And if you're set on GSoC for the summer,
you should absolutely check out the other 137
participating orgs:

Thanks to everyone who contributed ideas or gave
feedback during the process.

Giacomo Tesio | 2 Mar 11:06 2015

drawterm sources

Hi, to ease my usage of drawterm from my hp chromebook I'm using
xbindkeys + xdotool to send mouse events on a few keyboard's events.

In particular
AltGr + Left = mouse 1
AltGr + Up = mouse 2
AltGr + Right = mouse 3

This way I can choord even without a 3 button mouse.
This works quite well, but I had to disable X autorepeat with `xset
-r` before starting drawterm but it's quite annoing out of drawterm.

So I'm going to use xdotool behaviours to disable autorepeat when the
mouse enter drawterm and enable it again when it leaves.

However a better approach (for my usecase) would be to have drawterm
ignoring autorepeated events just for these key combinations.

So I'm wondering how hard is to hack drawterm.  Here my questions:

- where I can find the most updated sources of drawterm? (links from seem to be broken)
- Is there any simpler solution? Buying a three-button mouse is quite
hard in Italy, and above all its usage is not viable on my couch...

Thanks for your help!


(Continue reading)

Mark van Atten | 28 Feb 00:02 2015

noob question: p9 nfs client

On an OSX 10.9.5 host I run Bell Labs Plan 9 in Virtualbox.

Both have fixed IP addresses:
Plan 9

On OSX I have this in /etc/exports:
/Users/mva -mapall=501:20 -alldirs

I'm trying to access /Users/mva from Plan 9 through NFS:

cpu% nfs -v -R -p 666 -s macmini
out: xid=0x0 prog 0x186a0 vers 0x2 proc 0x3 [none] [none]
	PortTGetport [100005 3 17 0]
send e67c8ecf 3443508661 3443509661
in: xid=0xe67c8ecf status 0x0 [none] low 0x0 high 0x0
in: xid=0xe67c8ecf status 0x0 [none] low 0x0 high 0x0
in:	PortRGetport 799
out: xid=0x0 prog 0x186a0 vers 0x2 proc 0x3 [none] [none]
	PortTGetport [100003 3 17 0]
send e67c8ed0 3443508930 3443509930
in: xid=0xe67c8ed0 status 0x0 [none] low 0x0 high 0x0
in: xid=0xe67c8ed0 status 0x0 [none] low 0x0 high 0x0
in:	PortRGetport 2049
nfs udp!!799!r udp!!2049!r
out: xid=0x0 prog 0x186a5 vers 0x3 proc 0x0 [none] [none]

send 76381d71 3443509217 3443510217
in: xid=0x76381d71 status 0x0 [none] low 0x0 high 0x0
(Continue reading)

Mark van Atten | 27 Feb 01:00 2015

once more: drawterm osx-x11 on x86-64

A while ago, I reported on a problem I had with flicker and broken window edges
in drawterm-cocoa CONF=osx-x11. See the email copied below. It led to a brief

With my present configuration, that problem remains:
OSX 10.9.5
drawterm-cocoa 2014-12-02

However, I just tried rsc's drawterm 2013-07-02,
and there the problem is absent.

I take it there are not many users of drawterm on OSX,
either jas' or rsc's distribution, who
use the x11 version -- are there? I'd be interested
to compare notes.

Best wishes,

From: Mark van Atten <vanattenmark <at> gma...>
Subject: drawterm osx-x11 on x86_64
Date: Thu, 21 Nov 2013 11:40:14 +0100

For the record---to compile drawterm
( with CONF=osx-x11 on x86_64 (in
my case running 10.8.5), just add the required substitution to the


(Continue reading)

Giacomo Tesio | 26 Feb 10:59 2015

rc: pwd in $prompt

Hi, I'm a bit dumb, but reading rc(1) I can't grasp how I can have the
current dir printed in prompt.

Is it possible at all?


mischief | 26 Feb 03:38 2015

pool curalloc bug

does anyone care to take a stab at figuring out why mainmem->curalloc underflows? here's a c program to reproduce.

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


8c curalloc.c
8l curalloc.8
p=`{8.out >[2=1] | awk '{ print $2 }' | tr -d : }
echo '*mainmem' | acid -lpool $p

-> curalloc	4294967016


domalloc(int n)
	int i;
	void **a;

	a = mallocz(n * sizeof(void*), 1);

	for(i = 0; i < n; i++){
		a[i] = malloc(1024*1024*5);

	for(i = 0; i < n; i++){
(Continue reading)

Steve Simon | 25 Feb 23:36 2015

announce radio HLS and drawterm question

If anyone else but me uses it I now have HLS (HTTP Live Streaming)
working in my internet radio app, I have a little more tweeking to do
before I release it but if anyone wants to play give me a shout.

The people most interested are likely to be in the UK where the BBC shut
down their Shoutcast streams in favour of HLS last week.

Drawterm: Has anyone written an audio driver for OSX so I can debug
my radio app on my mac?



Steven Stallion | 22 Feb 21:53 2015

Odd dirwstat behavior


Somewhat recently I've been doing some work to preserve older fs hierarchies. When running replica/pull I'm seeing something quite strange. Both the log and database are reporting the original (and correct) mtime for directories, however for some reason replica/applylog (or the filesystem) is setting the mtime to time(0). After digging through the applylog source, I found a couple of conditions that could cause this, however my modifications have been for naught. This is annoying as hell given the fact I'm going through this rigamarole to preserve permissions and dates.

FWIW, replica/applylog is running against a fossil filesystem served out of devmnt with the following configuration:

fsys main config
fsys main open -APVW

Any ideas?

Anthony Sorace | 20 Feb 01:13 2015

Google Summer of Code 2015

(Resending (with tweaks) to get around moderation.)

Things are underway for this summer. The org application period is open, closing tomorrow, and ours is in,
with a few tweaks pending. A few things to note, the first one could use lots of help:

• As always, the most important part of the application is the ideas page. This year's is at:

I've just started updating it, and there's plenty to do. If you have an idea you'd be possibly willing to
mentor or backup-mentor, *please* add it here. Provide enough detail that an interested student could
get a decent idea of the scope of the project and what's involved. The more relevant information you can
provide, the better. If the info for that project gets larger than a paragraph, it probably makes sense to
create a wiki page dedicated to the idea; see the idea "Replace language for wikifs" for a good example of
that. If the wiki is a challenge, email me what the entry should be and I'll take care of it.

In the GSoC feedback sessions every year, this page is always the main thing used to separate various
otherwise-promising orgs out. Take a look.

• If you travel in circles with students, start telling them about the program and why they should want to
work with us. You might point them at our Student Expectations, at
I'm reviewing those, but I don't expect significant changes.

• If you're an established community member, consider whether you'd be interested in mentoring. Take a
look at our Mentor's Expectations at
and feel free to ask me or anyone else who's participated in the past questions - I'm sure everyone would be
willing to talk.

• Prior-year mentors, it would be particularly helpful if you could take a look at those two previous
pages and let me know (via the plan9-gsoc group preferably, or off-list) if you think anything needs
changing. I think these expectations (which are more or less the same as the past 2-3 years, with small
refinements) have served us pretty well, but would obviously be interested in other opinions.

• Also, if you're not on them and would like to contribute actively, we have two relevant Google Groups
worth joining: plan9-gsoc and plan9-gsoc-mentors. The mentor's list is for mentors, backup mentors,
and similar folks helping out; the other list is for anyone interested in helping out or following along on
the GSoC-specific discussions more closely.

Let me know if you have any other questions. If you have real-time questions, I'm in #plan9 and #plan9-gsoc
most of the time.


You received this message because you are subscribed to the Google Groups "Plan 9 Google Summer of Code
Mentors list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to plan9-gsoc-mentors+unsubscribe <at>
To post to this group, send email to plan9-gsoc-mentors <at>
Visit this group at
For more options, visit