include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=jool
-PKG_VERSION:=4.1.5
-PKG_RELEASE:=1
+PKG_VERSION:=4.1.6
+PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/NICMx/Jool/releases/download/v$(PKG_VERSION)
-PKG_HASH:=ec130a3659acff5450e74924d5f9da52540539fc213b5842fb3a8fd7d919ccf9
+PKG_HASH:=dccfde88e3b97a7d1c44c53b6541b74873a04f50bb8cfd187eb399d5ae8d2c81
PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0-only
$(call Build/Compile/Default)
endef
+
define Package/jool/Default
SECTION:=net
CATEGORY:=Network
Jool is an Open Source SIIT and NAT64 for Linux.
endef
-define Package/jool
- $(call Package/jool/Default)
- TITLE:=Jool meta-package
- DEPENDS:=+kmod-jool +jool-tools
- BUILDONLY:=1
-endef
-
-define Package/jool/description
- $(call Package/jool/Default/description)
-endef
define KernelPackage/jool
SECTION:=kernel
$(PKG_BUILD_DIR)/src/mod/common/jool_common.$(LINUX_KMOD_SUFFIX) \
$(PKG_BUILD_DIR)/src/mod/nat64/jool.$(LINUX_KMOD_SUFFIX) \
$(PKG_BUILD_DIR)/src/mod/siit/jool_siit.$(LINUX_KMOD_SUFFIX)
+ JOOL_AUTOLOAD:= \
+ jool \
+ jool_siit
+ AUTOLOAD:=$(call AutoLoad,46,jool_common)
+ AUTOLOAD:=$(call AutoLoad,48,$(JOOL_AUTOLOAD))
endef
define KernelPackage/jool/description
This package provides the kernel module for Jool.
endef
+
define Package/jool-tools
$(call Package/jool/Default)
TITLE:=Jool userspace control programs
- DEPENDS:=+libnl +libxtables
+ DEPENDS:=+kmod-jool +libnl +libxtables
endef
define Package/jool-tools/description
This package provides the userspace control programs for Jool.
endef
+
CONFIGURE_ARGS += \
--disable-shared \
--without-bash-completion-dir
ac_cv_func_memset=yes \
ac_cv_func_strcasecmp=yes
+JOOL_AUTOLOAD:= \
+ jool_common \
+ jool \
+ jool_siit
+
define Package/jool-tools/install
$(INSTALL_DIR) $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/jool $(1)/usr/bin/
$(1)/usr/lib/iptables
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/iptables/libxt_JOOL.so \
$(1)/usr/lib/iptables
+
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) ./files/jool.config $(1)/etc/config/jool
+
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/jool.init $(1)/etc/init.d/jool
+
+ $(INSTALL_DIR) $(1)/etc/jool
+ $(INSTALL_DATA) ./files/jool-nat64.conf.json $(1)/etc/jool/jool-nat64.conf.json.default
+ $(INSTALL_DATA) ./files/jool-siit.conf.json $(1)/etc/jool/jool-siit.conf.json.default
+ $(INSTALL_DATA) ./files/readme.md $(1)/etc/jool/readme.md
endef
-$(eval $(call BuildPackage,jool))
$(eval $(call KernelPackage,jool))
$(eval $(call BuildPackage,jool-tools))
--- /dev/null
+{
+ "comment": "Sample full NAT64 configuration.",
+ "comment": "Configuration details at https://jool.mx/en/usr-flags-global.html",
+
+ "instance": "default",
+ "framework": "netfilter",
+
+ "global": {
+ "pool6": "64:ff9b::/96",
+
+ "manually-enabled": false,
+
+ "zeroize-traffic-class": false,
+ "override-tos": false,
+ "tos": 0,
+ "mtu-plateaus": [65535, 32000, 17914, 8166, 4352, 2002, 1492, 1006, 508, 296, 68],
+ "maximum-simultaneous-opens": 10,
+ "source-icmpv6-errors-better": true,
+ "handle-rst-during-fin-rcv": false,
+ "f-args": 11,
+
+ "logging-bib": false,
+ "logging-session": false,
+
+ "address-dependent-filtering": false,
+ "drop-icmpv6-info": false,
+ "drop-externally-initiated-tcp": false,
+
+ "udp-timeout": "5:00",
+ "tcp-est-timeout": "2:00:00",
+ "tcp-trans-timeout": "4:00",
+ "icmp-timeout": "1:00",
+
+ "ss-enabled": false,
+ "ss-flush-asap": true,
+ "ss-flush-deadline": 2000,
+ "ss-capacity": 512,
+ "ss-max-payload": 1452
+ },
+
+ "pool4": [
+ {
+ "mark": 1,
+ "protocol": "UDP",
+ "prefix": "192.0.2.1",
+ "port range": "61001-62000",
+ "max-iterations": 1500
+ }, {
+ "comment": "mark, port range and max-iterations are optional.",
+ "protocol": "TCP",
+ "prefix": "192.0.2.2/31"
+ }, {
+ "mark": 1,
+ "protocol": "ICMP",
+ "prefix": "192.0.2.1/32",
+ "port range": "1000-2000"
+ }
+ ],
+
+ "bib": [
+ {
+ "protocol": "TCP",
+ "ipv6 address": "2001:db8::1#80",
+ "ipv4 address": "192.0.2.2#80"
+ }, {
+ "protocol": "UDP",
+ "ipv6 address": "2001:db8::2#10000",
+ "ipv4 address": "192.0.2.1#61500"
+ }, {
+ "protocol": "ICMP",
+ "ipv6 address": "2001:db8:AAAA::1#44",
+ "ipv4 address": "192.0.2.1#1044"
+ }
+ ]
+}
--- /dev/null
+{
+ "comment": "Sample full SIIT configuration.",
+ "comment": "Configuration details at https://jool.mx/en/usr-flags-global.html",
+
+ "instance": "instance name",
+ "framework": "netfilter",
+
+ "global": {
+ "comment": "pool6 and the RFC6791v4 pool belong here, ever since Jool 4.",
+ "pool6": "64:ff9b::/96",
+ "manually-enabled": true,
+ "zeroize-traffic-class": false,
+ "override-tos": false,
+ "tos": 0,
+ "mtu-plateaus": [65535, 32000, 17914, 8166, 4352, 2002, 1492, 1006, 508, 296, 68],
+ "amend-udp-checksum-zero": false,
+ "eam-hairpin-mode": "intrinsic",
+ "randomize-rfc6791-addresses": true,
+ "rfc6791v6-prefix": null,
+ "rfc6791v4-prefix": null
+ },
+
+ "eamt": [
+ {
+ "comment": {
+ "text": "Here's a compound comment.",
+ "more": "Its type is not checked, after all.",
+ "date": "2019-01-06",
+ "whatever": 1234
+ },
+ "ipv6 prefix": "2001:db8:1::/128",
+ "ipv4 prefix": "192.0.2.0"
+ }, {
+ "ipv6 prefix": "2001:db8:2::",
+ "ipv4 prefix": "192.0.2.1/32"
+ }, {
+ "ipv6 prefix": "2001:db8:3::/124",
+ "ipv4 prefix": "192.0.2.16/28"
+ }
+ ],
+
+ "comment": "This comment is relevant to blacklist4 maybe.",
+ "blacklist4": [
+ "198.51.100.0",
+ "198.51.100.2/32",
+ "198.51.100.32/27"
+ ]
+}
--- /dev/null
+config jool 'general'
+ option enabled '0'
+
+config jool 'nat64'
+ option enabled '0'
+
+config jool 'siit'
+ option enabled '0'
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=54
+STOP=54
+
+PROG_NAT64="/usr/bin/jool"
+PROG_SIIT="/usr/bin/jool_siit"
+
+CONFIGFILE_NAT64="/etc/jool/jool-nat64.conf.json"
+CONFIGFILE_SIIT="/etc/jool/jool-siit.conf.json"
+
+config_parser(){
+ enabled=0
+ enabled_nat64=0
+ enabled_siit=0
+
+ config_load "jool"
+
+ #verify if the services are enabled in the configuration and populate it's variables
+ config_get_bool enabled general enabled 0
+ config_get_bool enabled_nat64 nat64 enabled 0
+ config_get_bool enabled_siit siit enabled 0
+
+ #If the main service is not enabled exit
+ [ "$enabled" -eq 0 ] && return 1
+
+ #if nat64 is enabled continue
+ if [ "$enabled_nat64" -gt 0 ]; then
+ #check if the orer is to start or stop
+ if [ "$1" -gt 0 ]; then
+ #start jool
+ $PROG_NAT64 file handle $CONFIGFILE_NAT64
+ else
+ $PROG_NAT64 -f $CONFIGFILE_NAT64 instance remove
+ fi
+ fi
+
+ #if siit is enabled continue
+ if [ "$enabled_siit" -gt 0 ]; then
+ #check if the orer is to start or stop
+ if [ "$1" -gt 0 ]; then
+ #start jool
+ $PROG_SIIT file handle $CONFIGFILE_SIIT
+ else
+ $PROG_SIIT -f $CONFIGFILE_SIIT instance remove
+ fi
+ fi
+}
+
+start() {
+ config_parser 1
+}
+
+stop() {
+ config_parser 0
+
+}
--- /dev/null
+# [Jool](https://www.jool.mx)
+
+## Documentation
+
+[See here](https://www.jool.mx/en/documentation.html).
+
+You might also want to see [contact info](https://www.jool.mx/en/contact.html).
+
+## Usage
+
+### Start script
+
+This package includes a start script that will:
+ 1. Read the configuration file `/etc/config/jool`
+ 2. Determine what services are active
+ 3. Run jool with procd
+
+For now this means that:
+ * The services will be disabled by default in the uci config `(/etc/config/jool)`
+ * The only uci configuration support available for the package is to enable or disable each instance or the entire deamon
+ * There is no uci support and configuration will be saved at `/etc/jool/*
+ * Only one instance of jool(nat64) can run with the boot script
+ * Only one instance of jool(siit) can run with the boot script
+ * For now there is no way of overriding of the configuration file's paths
+
+The configuration files the startup script useses for each jool instance are:
+ * jool(nat64): `/etc/jool/jool-nat64.conf.json`
+ * jool(siit): `/etc/jool/jool-siit.conf.json`