mirror of
https://github.com/toreanderson/clatd
synced 2026-04-12 15:45:42 +00:00
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.
19 lines
736 B
Bash
Executable File
19 lines
736 B
Bash
Executable File
#!/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"
|