118 const uint8_t *payload, uint16_t len);
139 const uint8_t *data, uint16_t len);
161 const uint8_t *icmp_pkt, uint16_t len);
169#define NAT64_ICMP6_NOROUTE 0
170#define NAT64_ICMP6_ADMIN 1
171#define NAT64_ICMP6_ADDR 3
172#define NAT64_ICMP6_PORT 4
198 uint16_t invoking_len, uint8_t code);
218 uint8_t ipproto, uint8_t code);
void nat64_queue_icmp6_unreach_tuple(const uip_ip6addr_t *ip6_src, uint16_t src_port, const uip_ip4addr_t *ip4_dst, uint16_t dst_port, uint8_t ipproto, uint8_t code)
Queue an ICMPv6 Destination Unreachable for a 5-tuple whose connection failed.
bool nat64_is_ip64_addr(const uip_ip6addr_t *addr)
Check whether an IPv6 address embeds an IPv4 address via the NAT64 prefix.
void nat64_udp_input(struct nat64_session *s, const uint8_t *payload, uint16_t payload_len)
Inject a UDP response from an IPv4 server.
void nat64_tcp_closed(struct nat64_session *s)
Notify that an IPv4 server closed a TCP connection.
void nat64_tcp_data_in(struct nat64_session *s, const uint8_t *data, uint16_t len)
Forward TCP data from an IPv4 server to the IoT node.
void nat64_tcp_established(struct nat64_session *s)
Notify that a TCP connection to an IPv4 server completed.
void nat64_activate(void)
Initialize the NAT64 gateway.
int nat64_output(const uint8_t *pkt, uint16_t len)
Process an outgoing IPv6 packet destined for an IPv4 host.
void nat64_queue_icmp6_unreach(const uint8_t *invoking_pkt, uint16_t invoking_len, uint8_t code)
Queue an ICMPv6 Destination Unreachable for delivery to the IoT node.
void nat64_flush_icmp6(void)
Drain the queue of pending ICMPv6 errors into the uIP stack.
void nat64_icmp_input(struct nat64_session *s, const uint8_t *icmp_pkt, uint16_t len)
Inject an ICMPv4 Echo Reply received from an IPv4 host.
A NAT64 session binding an IoT node's IPv6 flow to an IPv4 socket.
static uip_ds6_addr_t * addr
Pointer to a nbr cache entry.
Header file for the uIP TCP/IP stack.
Representation of an IP address.