wg-userspace.sh revision 1.1
11.1Sriastrad#!/bin/sh
21.1Sriastrad
31.1SriastradRUMPLIBS="-lrumpnet -lrumpnet_net -lrumpnet_netinet \
41.1Sriastrad    -lrumpdev -lrumpvfs -lrumpdev_opencrypto -lrumpkern_z \
51.1Sriastrad    -lrumpkern_crypto -lrumpnet_wireguard -lrumpnet_netinet6"
61.1SriastradHIJACKING="env LD_PRELOAD=/usr/lib/librumphijack.so \
71.1Sriastrad    RUMPHIJACK=path=/rump,socket=all:nolocal,sysctl=yes"
81.1Sriastrad
91.1Sriastradif [ $(whoami) != root ]; then
101.1Sriastrad	echo run as root
111.1Sriastrad	exit 1
121.1Sriastradfi
131.1Sriastrad
141.1Sriastradusage()
151.1Sriastrad{
161.1Sriastrad	local prog=$(basename $0)
171.1Sriastrad
181.1Sriastrad	echo "Usage:"
191.1Sriastrad	echo -e "\t$prog <id> create"
201.1Sriastrad	echo -e "\t$prog <id> destroy"
211.1Sriastrad	echo -e "\t$prog <id> ifconfig [args...]"
221.1Sriastrad	echo -e "\t$prog <id> wgconfig [args...]"
231.1Sriastrad	echo
241.1Sriastrad	echo "<id>: must be a numeric number as it's used as an interface ID"
251.1Sriastrad	exit 1
261.1Sriastrad}
271.1Sriastrad
281.1Sriastradif [ $# -lt 2 ]; then
291.1Sriastrad	usage
301.1Sriastradfi
311.1Sriastrad
321.1Sriastradifid=$1
331.1Sriastradcmd=$2
341.1Sriastradshift;shift
351.1Sriastradargs="$*"
361.1Sriastrad
371.1Sriastradtun=tun$ifid
381.1Sriastradwg=wg$ifid
391.1Sriastrad
401.1Sriastradsock=/var/run/wg_rump.${ifid}.sock
411.1Sriastradexport RUMP_SERVER=unix://$sock
421.1Sriastrad
431.1Sriastradcase $cmd in
441.1Sriastradcreate)
451.1Sriastrad	rump_server $RUMPLIBS unix://$sock
461.1Sriastrad	rump.ifconfig $wg create
471.1Sriastrad	rump.ifconfig $wg linkstr $tun
481.1Sriastrad	;;
491.1Sriastraddestroy)
501.1Sriastrad	rump.halt
511.1Sriastrad	;;
521.1Sriastradifconfig)
531.1Sriastrad	rump.ifconfig $args
541.1Sriastrad	;;
551.1Sriastradwgconfig)
561.1Sriastrad	$HIJACKING wgconfig $args
571.1Sriastrad	;;
581.1Sriastraddebug)
591.1Sriastrad	$HIJACKING $args
601.1Sriastrad	;;
611.1Sriastrad*)
621.1Sriastrad	usage
631.1Sriastradesac
64