The Resurrection

Summer is almost upon us. The weather in Sweden has been amazing the last couple of weeks, sunny and warm. This has of course not prevented me from pursuing my favorite indoor activity; coding! This time around I’ve spent some time to resurrect the packet injection tool Nemesis.

[Read More]

Slow Down

Anyone who knows me knows I’m quite stubborn. Whenever I set my sights on something I finish it. The last couple of years I’ve been quite busy on GitHub, making at least one commit per day. I’ve had a lot of things I’ve wanted to do and complete, and this commit regimen has kept me on track to do just that. However, nothing comes for free, and although I’ve achieved my goals, I’ve also had to make a lot of sacrifices. [Read More]

Multicast routing with PIM-SM over GRE

GRE tunnels are useful in many ways. This blog post shows how to set up multicast routing with pimd over a GRE tunnel. To achieve this we will also set up OSPF over GRE with Quagga, because PIM, unlike DVMRP (mrouted), require unicast routing rules to be established.

       .----{ Intranet }----.
      /    \
     /                        \
.10 /                          \.20
.--'---. .1  GRE Tunnel  .2 .---`--.
|      |====================|      |
|  R1  |   |  R2  |
|      |                    |      |
'--.---'                    '------'
   | .1                        | .1 
   |            |
   | .2                        | .2 
.--'---.                    .--'---.
|      |                    |      |
|  C1  |                    |  C2  |
|      |                    |      |
'------'                    '------'

In this post we are using the home WiFi network,, to hook up the GRE tunnel. It is just as easy to extend this to a big corporate Intranet with more routers between R1 and R2. As long as that IT department takes care of the unicast routing between R1 and R2 so that the GRE tunnel can be established.

[Read More]

Threads vs Event Loop, Again ...

I still get asked this, from time to time. Maybe it’s because I only use event loops, maybe it’s because I’ve written libuEv, or maybe people still don’t understand:

Why an event loop, why not use threads?

So here’s my response, once more.

[Read More]

Boot Alpine Linux with GRUB

It’s fairly easy to replace the slightly unfriendly syslinux with grub (grub2) in Alpine Linux. I use v3.6 but YMMV.

[Read More]

GIT, Autoconf and Automake in OpenBSD

Reminder to self:

echo "https://ftp.eu.openbsd.org/pub/OpenBSD/" >/etc/installurl
pkg_add git autoconf automake libtool

Select the latest versions, then add the following to ~/.profile:


With your selected versions, of course.

HTTPS proxy for Merecat httpd

This is a HTTPS proxy HowTo for Merecat httpd using pound and OpenSSL. Pound is a reverse proxy, load balancer, and HTTPS front-end for Web servers. It is available in Debian/Ubuntu and is very simple to set up: First install the package, including OpenSSL, or LibreSSL: sudo apt install pound openssl Use OpenSSL to create a self-signed certificate: mkdir ~/certs cd ~/certs openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert. [Read More]