add t ~now packet xl_endpoint 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.
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.
now
is used to calculate the expiry time for the new entry.
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.