jool_siit(8)
π jool_siit β SIIT Jool's Userspace Client π
okay bestie, so jool_siit(8) is the manual page for the SIIT Jool userspace client, and honestly? she's iconic. let's get into it.
β¨ NAME β¨
jool_siit β interact with SIIT Jool (the kernel module). that's it, that's the girl. π
πΈ DESCRIPTION πΈ
She sends commands and requests to SIIT Jool. that's the whole job.
SIIT Jool is a kernel module you load into a Linux kernel. she implements RFC 7915. no cap. π
π¦ AVAILABILITY π¦
Linux is the only OS where this program makes sense. sorry to the BSD girlies, this one's not for you. π
Kernels 5.15 and up. periodt.
π SYNTAX π
read it slowly, it's giving very structured, very organized:
jool_siit [<argp1>] instance (
display
[--csv]
[--no-headers]
| add
[<Instance-Name>]
(--netfilter | --iptables)
[--pool6 <IPv6-prefix>]
| remove
[<Instance-Name>]
| flush
| <help>
)
jool_siit [<argp1>] stats (
display
[--csv]
[--no-headers]
[--all]
[--explain]
| <help>
)
jool_siit [<argp1>] global (
display
[--csv]
[--no-headers]
| update
<Key> <Value>
| <help>
)
jool_siit [<argp1>] eamt (
display
[--csv]
[--no-headers]
| add
<IPv4-prefix> <IPv6-prefix>
[--force]
| remove
<IPv4-prefix> <IPv6-prefix>
| flush
| <help>
)
jool_siit [<argp1>] address (
query [--verbose] <IP-Address>
)
jool_siit [<argp1>] denylist4 (
display
[--csv]
[--no-headers]
| add
<IPv4-prefix>
[--force]
| remove
<IPv4-prefix>
| flush
| <help>
)
jool_siit [<argp1>] file (
handle <JSON-File>
| <help>
)
<argp1> := (<help> | --instance <Name> | --file <File>)
<help> := (--help | --usage | --version)
π OPTIONS π
π Modes and Operations
these are the verbs, bestie. the main character energy moves.
instance displayβ Show all instances from all namespaces. all of them. every namespace. she's nosy and we love her for it. πinstance addβ Create a new instance. baby's first instance πinstance removeβ Drop an existing instance. bye bestie πinstance flushβ Drop all instances from the current namespace. nuclear option, fr fr.stats displayβ Show internal counters.global displayβ Show the current values of the instance's tweakable internal variables.global updateβ Tweak one of the instance's internal variables. glow-up time β¨eamt displayβ Show the EAM table.eamt addβ Upload an entry to the EAM table.eamt removeβ Drop an entry from the EAM table.eamt flushβ Empty the EAM table.address queryβ Print the translated version of the given address using the current configuration.denylist4 displayβ Show the denylist.denylist4 addβ Upload an entry to the denylist.denylist4 removeβ Drop an entry from the denylist.denylist4 flushβ Empty the denylist.file handleβ Parse all the configuration from a JSON file. Create instance if it doesn't exist, update if it does. she contains multitudes. π«Ά
π© Flags
--instance <Name>β Name of the instance you want to interact with. It's an ASCII string, 15 characters max. Defaults to'default'. keep it short, keep it cute.--file <File>β JSON file which contains the name of the instance you want to interact with. Same JSON structure as the one from atomic configuration.--csvβ Output in CSV table format.--no-headersβ Do not print table headers. (Nor footer, if applies.) minimalist. clean. love that for her.--netfilterβ Sit the instance on top of the Netfilter framework.--iptablesβ Sit the instance on top of the iptables framework.--pool6 <IPv6-prefix>β Contents of the new instance's IPv6 pool. The format is'PREFIX_ADDRESS[/PREFIX_LENGTH]'.--allβ Show all the counters. (Otherwise, only the nonzero ones are printed.) sometimes you want the zeros, no judgement.--explainβ Show a description of each counter. she explains herself π«Ά--verboseβ Print some details regarding the translation operation.--forceβ Apply operation even if certain validations fail. π³ chaotic. use with care bestie.
π§ Other Arguments
<Key> <Value>β Name of the variable you want to edit (see'Globals'section), and its new value.<IPv6-prefix>β The format isIPV6_ADDRESS[/PREFIX_LENGTH].PREFIX_LENGTHdefaults to 128.<IPv4-prefix>β The format isIPV4_ADDRESS[/PREFIX_LENGTH].PREFIX_LENGTHdefaults to 32.<Instance-Name>β Name of the instance you want to add or remove. If--instanceor--filewere included in<argp1>, then the instance names must match. π consistency is key.<JSON-file>β Path to a JSON file.
π Globals
these are the knobs you can turn with global update, bestie. the vibes you can adjust.
manually-enabled<Boolean>β Enable or disable the instance. on/off, live/laugh/love.pool6(<IPv6 Prefix> | null)β The IPv6 pool's prefix. The format is'PREFIX_ADDRESS[/PREFIX_LENGTH]'. Usenullto clear.lowest-ipv6-mtu<Unsigned 32-bit integer>β Smallest reachable IPv6 MTU.logging-debug<Boolean>β Enable logging of debug messages?zeroize-traffic-class<Boolean>β Always set the IPv6 header's'Traffic Class'field as zero? Otherwise copy from IPv4 header's'TOS'.override-tos<Boolean>β Override the IPv4 header's'TOS'field as--tos? Otherwise copy from IPv6 header's'Traffic Class'.tos<Unsigned 8-bit integer>β Value to override TOS as (only whenoverride-tosis ON)mtu-plateaus<Comma-separated list of unsigned 16-bit integers>β Set the list of plateaus for ICMPv4 Fragmentation Neededs with MTU unset.amend-udp-checksum-zero<Boolean>β Compute the UDP checksum of IPv4-UDP packets whose value is zero? Otherwise drop the packet. π the packet. gone.eam-hairpin-mode(simple | intrinsic | off)β Defines how EAM+hairpinning is handled.randomize-rfc6791-addresses<Boolean>β Randomize selection of address from the RFC6791 pool? Otherwise choose the'Hop Limit'th address.rfc6791v6-prefix(<IPv6 Prefix> | null)β IPv6 prefix to generate RFC6791v6 addresses from. Usenullto clear.rfc6791v4-prefix(<IPv4 Prefix> | null)β IPv4 prefix to generate RFC6791v4 addresses from. Usenullto clear.trace<Boolean>β Log basic packet fields as they are received?
β EXAMPLES β
she ate with these, honestly.
Create a new instance named "Example":
jool_siit instance add Example --iptables
Print the globals:
jool_siit -i Example global display
Change the IPv6 pool prefix:
jool_siit -i Example global update pool6 2001:db8::/96
Print the Explicit Address Mappings Table (EAMT):
jool_siit -i Example eamt display
Add an entry to the EAMT:
jool_siit -i Example eamt add 2001:db8::/120 192.0.2.0/24
Remove an entry from the EAMT:
jool_siit -i Example eamt remove 2001:db8::/120
Add denylist prefix 192.0.2.0/24:
jool_siit -i Example denylist4 add 192.0.2.0/24
Allow translation of 192.0.2.0/24:
jool_siit -i Example denylist4 remove 192.0.2.0/24
π NOTES π
TRUE, FALSE, 1, 0, YES, NO, ON and OFF are all valid booleans. You can mix case too. she's flexible like that π
π₯ EXIT STATUS π₯
Zero on success, non-zero on failure. simple. elegant. we stan a binary outcome.
πΈ AUTHOR πΈ
NIC Mexico & ITESM π«Ά
π REPORTING BUGS π
found a bug? not her fault (probably), but tell her here:
https://github.com/NICMx/Jool/issues
π COPYRIGHT π
Copyright 2011 NIC Mexico.
License: GPLv2 (GNU GPL version 2)
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. (read that again, bestie. no warranty. none. zero. π)
π SEE ALSO π
and that's the whole page, bestie β¨ this was v4.1.15, dated 2026-01-26, from the jool_siit(8) manual. slay, go translate some packets ππ¦π
π¦ where this page comes from
- nixpkgs unstable: jool-cli 4.1.15
- ubuntu resolute: jool-tools 4.1.15-1 Β· GPL-2.0-only
- ubuntu stonking: jool-tools 4.1.15-1ubuntu1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms