Go to the documentation of this file.
39 #define NAT_SUPPORT DISABLED
40 #elif (NAT_SUPPORT != ENABLED && NAT_SUPPORT != DISABLED)
41 #error NAT_SUPPORT parameter is not valid
45 #ifndef NAT_MAX_PRIVATE_INTERFACES
46 #define NAT_MAX_PRIVATE_INTERFACES 4
47 #elif (NAT_MAX_PRIVATE_INTERFACES < 1)
48 #error NAT_MAX_PRIVATE_INTERFACES parameter is not valid
52 #ifndef NAT_TICK_INTERVAL
53 #define NAT_TICK_INTERVAL 1000
54 #elif (NAT_TICK_INTERVAL < 10)
55 #error NAT_TICK_INTERVAL parameter is not valid
59 #ifndef NAT_TCP_SESSION_TIMEOUT
60 #define NAT_TCP_SESSION_TIMEOUT 120000
61 #elif (NAT_TCP_SESSION_TIMEOUT < 1000)
62 #error NAT_TCP_SESSION_TIMEOUT parameter is not valid
66 #ifndef NAT_UDP_SESSION_TIMEOUT
67 #define NAT_UDP_SESSION_TIMEOUT 120000
68 #elif (NAT_UDP_SESSION_TIMEOUT < 1000)
69 #error NAT_UDP_SESSION_TIMEOUT parameter is not valid
73 #ifndef NAT_ICMP_SESSION_TIMEOUT
74 #define NAT_ICMP_SESSION_TIMEOUT 10000
75 #elif (NAT_ICMP_SESSION_TIMEOUT < 1000)
76 #error NAT_ICMP_SESSION_TIMEOUT parameter is not valid
80 #ifndef NAT_TCP_UDP_PORT_MIN
81 #define NAT_TCP_UDP_PORT_MIN 32768
82 #elif (NAT_TCP_UDP_PORT_MIN < 1024)
83 #error NAT_TCP_UDP_PORT_MIN parameter is not valid
87 #ifndef NAT_TCP_UDP_PORT_MAX
88 #define NAT_TCP_UDP_PORT_MAX 49151
89 #elif (NAT_TCP_UDP_PORT_MAX <= NAT_TCP_UDP_PORT_MIN || NAT_TCP_UDP_PORT_MAX > 65535)
90 #error NAT_TCP_UDP_PORT_MAX parameter is not valid
94 #ifndef NAT_ICMP_QUERY_ID_MIN
95 #define NAT_ICMP_QUERY_ID_MIN 32768
96 #elif (NAT_ICMP_QUERY_ID_MIN < 0)
97 #error NAT_ICMP_QUERY_ID_MIN parameter is not valid
101 #ifndef NAT_ICMP_QUERY_ID_MAX
102 #define NAT_ICMP_QUERY_ID_MAX 65535
103 #elif (NAT_ICMP_QUERY_ID_MAX <= NAT_ICMP_QUERY_ID_MIN || NAT_ICMP_QUERY_ID_MAX > 65535)
104 #error NAT_ICMP_QUERY_ID_MAX parameter is not valid
214 Ipv4Addr privateIpAddr, uint16_t privatePort);
219 uint16_t privatePortMin);
NatPortFwdRule * portFwdRules
Port redirection rules.
Ipv4Protocol protocol
IP protocol (TCP, UDP or ICMP)
uint_t publicIpAddrIndex
Index of the public IP address to use.
uint16_t publicPort
External TCP or UDP port number.
Structure describing a buffer that spans multiple chunks.
systime_t timestamp
Timestamp to manage session timeout.
error_t natSetPortFwdRule(NatContext *context, uint_t index, Ipv4Protocol protocol, uint16_t publicPort, NetInterface *privateInterface, Ipv4Addr privateIpAddr, uint16_t privatePort)
Add port redirection rule.
uint_t numSessions
Number of NAT sessions.
uint16_t privatePortMin
Destination port (lower value)
error_t natStop(NatContext *context)
Stop NAT operation.
uint32_t Ipv4Addr
IPv4 network address.
void natDeinit(NatContext *context)
Release NAT context.
uint16_t publicPortMax
Public port range to be redirected (upper value)
uint16_t publicIcmpQueryId
External ICMP query identifier.
uint_t numSessions
Number of NAT sessions.
uint_t numPortFwdRules
Number of port redirection rules.
uint16_t privateIcmpQueryId
Internal ICMP query identifier.
Ipv4Addr privateIpAddr
Destination IP address.
uint16_t publicPortMin
Public port range to be redirected (lower value)
Ipv4Addr remoteIpAddr
Remote IP address.
NatPortFwdRule * portFwdRules
Port redirection rules.
#define NAT_MAX_PRIVATE_INTERFACES
error_t natSetPublicInterface(NatContext *context, NetInterface *publicInterface)
Specify the NAT public interface.
uint_t numPrivateInterfaces
Number of private interfaces.
error_t natSetPortRangeFwdRule(NatContext *context, uint_t index, Ipv4Protocol protocol, uint16_t publicPortMin, uint16_t publicPortMax, NetInterface *privateInterface, Ipv4Addr privateIpAddr, uint16_t privatePortMin)
Add port range redirection rule.
uint32_t systime_t
System time.
uint16_t remotePort
Remote TCP or UDP port number.
NetInterface * publicInterface
Public interface.
NatSession * sessions
NAT sessions (initiated from a private host)
uint_t numPrivateInterfaces
Number of private interfaces.
Ipv4Addr privateIpAddr
Internal IP address.
error_t natClearPortFwdRule(NatContext *context, uint_t index)
Remove port redirection rule.
Ipv4Protocol protocol
Transport protocol (TCP or UDP)
NetInterface * privateInterface
Private interface.
error_t natInit(NatContext *context, const NatSettings *settings)
NAT initialization.
error_t natStart(NatContext *context)
Start NAT operation.
uint_t publicIpAddrIndex
Index of the public IP address to use.
NatSession * sessions
NAT sessions (initiated from a private host)
NetInterface * privateInterface
Destination interface.
Ipv4Protocol
IPv4 protocol field.
NetInterface * publicInterface
Public interface.
void natGetDefaultSettings(NatSettings *settings)
Initialize settings with default values.
bool_t running
This flag tells whether the NAT is running or not.
uint16_t privatePortMax
Destination port (upper value)
uint_t numPortFwdRules
Number of port redirection rules.
uint16_t privatePort
Internal TCP or UDP port number.
Ipv4Addr publicIpAddr
External IP address.