mirror of
https://github.com/toreanderson/clatd
synced 2026-08-17 04:55:17 +00:00
Add support for new ipxlat kernel driver (WIP)
Needs the kernel module from https://codeberg.org/IPv6-Monostack/ipxlat-net-next. This can be built and loaded out-of-tree like so (assuming you've got all the necessary kernel development packages (make, gcc, kernel-headers etc.) installed: ``` git clone --depth 1 https://codeberg.org/IPv6-Monostack/ipxlat-net-next cd ipxlat-net-next/drivers/net/ipxlat make -f /lib/modules/$(uname -r)/build/Makefile M=$PWD CONFIG_IPXLAT=m CFLAGS_MODULE=-I$PWD/../../../include modules sudo make -f /lib/modules/$(uname -r)/build/Makefile M=$PWD CONFIG_IPXLAT=m CFLAGS_MODULE=-I$PWD/../../../include modules_install sudo modprobe ipxlat ``` You'll also need to install the 'ipxlat-ctl' utility from https://codeberg.org/IPv6-Monostack/ipxlat somewhere in your $PATH (or point clatd's 'cmd-ipxlat-ctl' config option at its location). (Note: I was not able to make the above 'ipxlat-ctl' utility work, so I have made an alternative 'ipxlat-ctl' script located in the root of the clatd repo. You probably need to edit that script so that it can find the pyynl cli utility included in the kernel sources.) For now, only /96 RFC6052 prefixes are supported. Support for the other prefix lengths will be added later.
This commit is contained in:
18
ipxlat-ctl
Executable file
18
ipxlat-ctl
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# This is a wrapper around the python ynl cli included with the kernel that
|
||||
# mimics the documented behaviour of the ipxlat-ctl tool available at
|
||||
# https://codeberg.org/IPv6-Monostack/ipxlat, but which I haven't been able to
|
||||
# make work. You'll need to ensure the tool is somewhere in $PATH.
|
||||
|
||||
PATH=/usr/src/kernels/ipxlat-net-next/tools/net/ynl/pyynl:$PATH
|
||||
|
||||
dev="$1"
|
||||
prefix="$3"
|
||||
|
||||
IID=$(< /sys/class/net/$dev/ifindex)
|
||||
ADDR_HEX=$(python3 -c 'import ipaddress,sys; print(ipaddress.IPv6Address(sys.argv[1]).packed.hex())' ${prefix%/*})
|
||||
PREFIXLEN=${prefix#*/}
|
||||
JSON='{"ifindex": '"$IID"', "config": {"xlat-prefix6": { "prefix": "'$ADDR_HEX'", "prefix-len": '$PREFIXLEN'}}}'
|
||||
|
||||
cli.py --family ipxlat --do dev-set --json "$JSON"
|
||||
Reference in New Issue
Block a user