From b1c0dca45d25efc6688e675249c9201f6cfd8e75 Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Sat, 9 Nov 2019 15:48:40 +0100 Subject: community/jool-tools: add init scripts for jool and jool_siit --- community/jool-tools/APKBUILD | 19 +++++-- community/jool-tools/jool.conf | 37 ++++++++++++++ community/jool-tools/jool.initd | 99 +++++++++++++++++++++++++++++++++++++ community/jool-tools/jool_siit.conf | 22 +++++++++ 4 files changed, 173 insertions(+), 4 deletions(-) create mode 100644 community/jool-tools/jool.conf create mode 100644 community/jool-tools/jool.initd create mode 100644 community/jool-tools/jool_siit.conf (limited to 'community/jool-tools') diff --git a/community/jool-tools/APKBUILD b/community/jool-tools/APKBUILD index c598d0ce32..a0cf77545d 100644 --- a/community/jool-tools/APKBUILD +++ b/community/jool-tools/APKBUILD @@ -4,7 +4,7 @@ _projname=jool pkgname=jool-tools # Keep in sync with _ver in community/jool-modules-vanilla! pkgver=4.0.6 -pkgrel=0 +pkgrel=1 pkgdesc="Userspace control tools for SIIT / NAT64 Jool" url="https://www.jool.mx" arch="all" @@ -18,8 +18,11 @@ subpackages=" $pkgname-bash-completion:bashcomp:noarch " source="https://github.com/NICMx/Jool/releases/download/v$pkgver/$_projname-$pkgver.tar.gz - joold.initd + jool.conf + jool_siit.conf joold-socket.json + jool.initd + joold.initd " builddir="$srcdir/$_projname-$pkgver" @@ -41,6 +44,11 @@ build() { package() { make install DESTDIR="$pkgdir" + install -D -m 644 "$srcdir"/jool.conf "$pkgdir"/etc/jool/jool.conf + install -D -m 644 "$srcdir"/jool_siit.conf "$pkgdir"/etc/jool/jool_siit.conf + + install -D -m 755 "$srcdir"/jool.initd "$pkgdir"/etc/init.d/jool + ln -s jool "$pkgdir"/etc/init.d/jool_siit } joold() { @@ -64,5 +72,8 @@ bashcomp() { } sha512sums="8648cc876d801b34c4bc9616da642727d1e49ed2937daa7fdca58c0fd80dbd1c432018af410c44c1d24224aba5289f726f43adc259cdf8193832d39a86d0f6a6 jool-4.0.6.tar.gz -c53ac4e0bf44c80596244396f3a56965be1ef279806c47601f0ce1ce803dc21a6a8e5d020fb0f3abae1c9a106c7eef8e1bb2fe7a47d6c8a346351397ed0608ec joold.initd -15758922ba83219f7edf34d93d825fcafb354b551a79f9b70e486faebcb154f55a52806aca6f7b9ec0d8277caa64a06a2525829be41c538cb3c678a78112b5e9 joold-socket.json" +4ae4c20fde75a0fdaed1c7c46ab5078297846b0734d31c7053575ff549984617a5486727c98f442125c6abfe8b170cde23ae4c24a4d6ff14b2ce31490bd46633 jool.conf +a48c84c49c24dd6639b86393fa7870b91fa700ba1e561e2440db1f4a94f3393171407a3cc683f4fc7a26a591578ec732dd3f708c1b4c45787a6e7ec038576357 jool_siit.conf +15758922ba83219f7edf34d93d825fcafb354b551a79f9b70e486faebcb154f55a52806aca6f7b9ec0d8277caa64a06a2525829be41c538cb3c678a78112b5e9 joold-socket.json +2eefae657e75d264838b435be38178cb3fe98f429f2367cf7cd08646c637f4a8ad3e226b4d7f7d460b28b81b8def9a5f5fd2617e2dd1c0c11889775e25951b21 jool.initd +c53ac4e0bf44c80596244396f3a56965be1ef279806c47601f0ce1ce803dc21a6a8e5d020fb0f3abae1c9a106c7eef8e1bb2fe7a47d6c8a346351397ed0608ec joold.initd" diff --git a/community/jool-tools/jool.conf b/community/jool-tools/jool.conf new file mode 100644 index 0000000000..cedef7340a --- /dev/null +++ b/community/jool-tools/jool.conf @@ -0,0 +1,37 @@ +{ + "comment": "Sample configuration for the NAT64 Jool service.", + + "instance": "default", + "framework": "netfilter", + + "global": { + "comment": "Sample pool6 prefix", + "pool6": "64:ff9b::/96" + }, + + "comment": "Sample pool4 table", + "pool4": [ + { + "protocol": "TCP", + "prefix": "192.0.2.1", + "port range": "61001-65535" + }, { + "protocol": "UDP", + "prefix": "192.0.2.1", + "port range": "61001-65535" + } + ], + + "comment": "Sample BIB table", + "bib": [ + { + "protocol": "TCP", + "ipv6 address": "2001:db8::1#80", + "ipv4 address": "192.0.2.1#61080" + }, { + "protocol": "UDP", + "ipv6 address": "2001:db8::2#10000", + "ipv4 address": "192.0.2.1#65535" + } + ] +} diff --git a/community/jool-tools/jool.initd b/community/jool-tools/jool.initd new file mode 100644 index 0000000000..e666c45729 --- /dev/null +++ b/community/jool-tools/jool.initd @@ -0,0 +1,99 @@ +#!/sbin/openrc-run + +case "${RC_SVCNAME#*[.-]}" in + jool[_-]siit) + name="SIIT" + description="Stateless IP/ICMP Translator" + command="/usr/bin/jool_siit" + kmod_name="jool_siit" + ;; + *) + name="NAT64" + description="Stateful NAT64" + kmod_name="jool" + command="/usr/bin/jool" + ;; +esac + +: ${cfgfile:="/etc/jool/$RC_SVCNAME.conf"} + +required_files="$cfgfile" + +depends() { + need net +} + +start_pre() { + resolve_instance_name + + # Don't load module if it's already loaded. + if modprobe -qn "$kmod_name" && ! modprobe -qn --first-time "$kmod_name"; then + return 0 + fi + + ebegin "Loading $kmod_name kernel module" + modprobe -q $kmod_name + eend $? +} + +start() { + ebegin "Loading $name instance $instance_name" + $command -i "$instance_name" file handle "$cfgfile" + eend $? +} + +stop_pre() { + resolve_instance_name +} + +stop() { + case $(instance_status) in + Running) + ebegin "Unloading $name instance $instance_name" + $command instance remove "$instance_name" + eend $? + ;; + *) + ewarn "WARNING: $name instance $instance_name is not running" + return 0 + ;; + esac +} + +status() { + resolve_instance_name + + case "$(instance_status)" in + Running) + einfo "status: running" + return 0 + ;; + Dead) + if service_started || service_crashed; then + eerror "status: crashed" + return 32 + else + einfo "status: stopped" + return 3 + fi + ;; + *) + eerror "status: error" + $command -i "$instance_name" instance status >&2 + return 32 + ;; + esac +} + +instance_status() { + $command -i "$instance_name" instance status 2>/dev/null | head -1 +} + +resolve_instance_name() { + instance_name=$(sed -En 's/.*"instance":\s*"([^"]+)".*/\1/p' "$cfgfile") + + if [ -z "$instance_name" ] && [ "${RC_SVCNAME#*[.-]}" != "$RC_SVCNAME" ]; then + instance_name="${RC_SVCNAME#*[.-]}" + fi + : ${instance_name:="default"} +} diff --git a/community/jool-tools/jool_siit.conf b/community/jool-tools/jool_siit.conf new file mode 100644 index 0000000000..627827781f --- /dev/null +++ b/community/jool-tools/jool_siit.conf @@ -0,0 +1,22 @@ +{ + "comment": "Sample configuration for the SIIT Jool service.", + + "instance": "default", + "framework": "netfilter", + + "global": { + "comment": "Sample pool6 prefix", + "pool6": "2001:db8:aaaa::/96" + }, + + "comment": "Sample EAM table", + "eamt": [ + { + "ipv6 prefix": "2001:db8:bbbb::", + "ipv4 prefix": "192.0.2.0" + }, { + "ipv6 prefix": "2001:db8:cccc::/120", + "ipv4 prefix": "203.0.113.0/24" + } + ] +} -- cgit v1.2.3