50#ifndef NAT64_PLATFORM_H_
51#define NAT64_PLATFORM_H_
127 const uip_ip6addr_t *ip6_src, uint16_t srcport,
128 const uint8_t *payload, uint16_t len);
144 const uip_ip6addr_t *ip6_src, uint16_t srcport,
155 const uint8_t *data, uint16_t len);
203 const uip_ip6addr_t *ip6_src,
205 const uint8_t *icmp_pkt, uint16_t icmp_len);
void nat64_platform_tcp_destroy(struct nat64_session *s)
Fully tear down a TCP session.
int nat64_platform_udp_send(const uip_ip4addr_t *dst, uint16_t dstport, const uip_ip6addr_t *ip6_src, uint16_t srcport, const uint8_t *payload, uint16_t len)
Forward a UDP payload to an IPv4 server.
int nat64_platform_icmp_send(const uip_ip4addr_t *dst, const uip_ip6addr_t *ip6_src, uint16_t identifier, const uint8_t *icmp_pkt, uint16_t icmp_len)
Forward an ICMPv4 Echo Request to an IPv4 destination.
nat64_session_proto
Transport protocol tracked by a NAT64 session.
struct nat64_session * nat64_platform_tcp_connect(const uip_ip4addr_t *dst, uint16_t dstport, const uip_ip6addr_t *ip6_src, uint16_t srcport, uint32_t peer_isn)
Initiate a TCP connection to an IPv4 server.
void nat64_platform_tcp_close(struct nat64_session *s)
Half-close a TCP session (send FIN).
bool nat64_platform_init(void)
Initialize the platform layer.
void nat64_platform_tcp_abort(struct nat64_session *s)
Abort a TCP session by sending RST upstream.
int nat64_platform_tcp_send(struct nat64_session *s, const uint8_t *data, uint16_t len)
Send data on an established TCP session.
bool nat64_is_enabled(void)
Check whether the NAT64 gateway has been enabled at runtime.
nat64_tcp_state
TCP connection state within the NAT64 splice proxy.
@ NAT64_TCP_ESTABLISHED
Connection open, data can flow.
@ NAT64_TCP_CONNECTING
Non-blocking connect() in progress.
@ NAT64_TCP_CLOSING
Half-closed (SHUT_WR sent).
A NAT64 session binding an IoT node's IPv6 flow to an IPv4 socket.
bool active
Session slot in use.
uint16_t ip4_remote_port
IPv4 server port.
struct timer expiry
Session lifetime timer.
int fd
IPv4 socket file descriptor.
uip_ip6addr_t ip6_peer
IoT node's IPv6 address.
enum nat64_session_proto proto
UDP or TCP.
enum nat64_tcp_state tcp_state
TCP connection state.
uint32_t peer_isn
IoT node's ISN (TCP only).
uip_ip4addr_t ip4_remote
IPv4 server address.
uint16_t ip6_peer_port
IoT node's transport port.
Timer library header file.
Header file for the uIP TCP/IP stack.
Representation of an IP address.