add t packet xl_host port_generator mode
adds an entry to the table to translate packets on packet
's channel according to mode
, and another entry to translate the replies back again. The port_generator
may be called multiple times (at most 100 times) to find a free port.
If mode
is `NAT
then the entries will be of the form:
(packet.src -> packet.dst) becomes (xl_endpoint -> packet.dst) (packet.dst -> xl_endpoint) becomes (packet.dst -> packet.src)
If mode
is `Redirect new_dst
then the entries will be of the form:
(packet.src -> packet.dst) becomes (xl_endpoint -> new_dst) (new_dst -> xl_endpoint) becomes (packet.dst -> packet.src)
In this case, packet.dst
will typically be an endpoint on the NAT itself, to ensure all packets go via the NAT.
Returns `Overlap
if the new entries would partially overlap with an existing entry.
Returns `Cannot_NAT
if the packet has a non-Global/Organization source or destination, or is an ICMP packet which is not a query.