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.