xref: /netbsd-src/usr.sbin/wg-userspace/wg-userspace.sh (revision 25154f5f0c9e0097a4759778b662a840acd95f6f)
161fd7d67Sriastradh#!/bin/sh
261fd7d67Sriastradh
361fd7d67SriastradhRUMPLIBS="-lrumpnet -lrumpnet_net -lrumpnet_netinet \
461fd7d67Sriastradh    -lrumpdev -lrumpvfs -lrumpdev_opencrypto -lrumpkern_z \
5*25154f5fSriastradh    -lrumpkern_crypto -lrumpnet_wg -lrumpnet_netinet6"
661fd7d67SriastradhHIJACKING="env LD_PRELOAD=/usr/lib/librumphijack.so \
761fd7d67Sriastradh    RUMPHIJACK=path=/rump,socket=all:nolocal,sysctl=yes"
861fd7d67Sriastradh
961fd7d67Sriastradhif [ $(whoami) != root ]; then
1061fd7d67Sriastradh	echo run as root
1161fd7d67Sriastradh	exit 1
1261fd7d67Sriastradhfi
1361fd7d67Sriastradh
1461fd7d67Sriastradhusage()
1561fd7d67Sriastradh{
1661fd7d67Sriastradh	local prog=$(basename $0)
1761fd7d67Sriastradh
1861fd7d67Sriastradh	echo "Usage:"
1961fd7d67Sriastradh	echo -e "\t$prog <id> create"
2061fd7d67Sriastradh	echo -e "\t$prog <id> destroy"
2161fd7d67Sriastradh	echo -e "\t$prog <id> ifconfig [args...]"
2261fd7d67Sriastradh	echo -e "\t$prog <id> wgconfig [args...]"
2361fd7d67Sriastradh	echo
2461fd7d67Sriastradh	echo "<id>: must be a numeric number as it's used as an interface ID"
2561fd7d67Sriastradh	exit 1
2661fd7d67Sriastradh}
2761fd7d67Sriastradh
2861fd7d67Sriastradhif [ $# -lt 2 ]; then
2961fd7d67Sriastradh	usage
3061fd7d67Sriastradhfi
3161fd7d67Sriastradh
3261fd7d67Sriastradhifid=$1
3361fd7d67Sriastradhcmd=$2
3461fd7d67Sriastradhshift;shift
3561fd7d67Sriastradhargs="$*"
3661fd7d67Sriastradh
3761fd7d67Sriastradhtun=tun$ifid
3861fd7d67Sriastradhwg=wg$ifid
3961fd7d67Sriastradh
4061fd7d67Sriastradhsock=/var/run/wg_rump.${ifid}.sock
4161fd7d67Sriastradhexport RUMP_SERVER=unix://$sock
4261fd7d67Sriastradh
4361fd7d67Sriastradhcase $cmd in
4461fd7d67Sriastradhcreate)
4561fd7d67Sriastradh	rump_server $RUMPLIBS unix://$sock
4661fd7d67Sriastradh	rump.ifconfig $wg create
4761fd7d67Sriastradh	rump.ifconfig $wg linkstr $tun
4861fd7d67Sriastradh	;;
4961fd7d67Sriastradhdestroy)
5061fd7d67Sriastradh	rump.halt
5161fd7d67Sriastradh	;;
5261fd7d67Sriastradhifconfig)
5361fd7d67Sriastradh	rump.ifconfig $args
5461fd7d67Sriastradh	;;
5561fd7d67Sriastradhwgconfig)
5661fd7d67Sriastradh	$HIJACKING wgconfig $args
5761fd7d67Sriastradh	;;
5861fd7d67Sriastradhdebug)
5961fd7d67Sriastradh	$HIJACKING $args
6061fd7d67Sriastradh	;;
6161fd7d67Sriastradh*)
6261fd7d67Sriastradh	usage
6361fd7d67Sriastradhesac
64