Go to the documentation of this file.
43 #define TRACE_LEVEL NAT_TRACE_LEVEL
52 #if (NAT_SUPPORT == ENABLED)
96 if(context == NULL || settings == NULL)
151 netContext->natContext = context;
174 if(context == NULL || publicInterface == NULL)
212 Ipv4Addr privateIpAddr, uint16_t privatePort)
218 publicPort, privateInterface, privateIpAddr, privatePort);
241 uint16_t privatePortMin)
246 if(context == NULL || privateInterface == NULL)
270 rule->
privatePortMax = privatePortMin + publicPortMax - publicPortMin;
412 netContext->natContext = NULL;
error_t natStop(NatContext *context)
Stop NAT operation.
void netUnlock(NetContext *context)
Release exclusive access to the core of the TCP/IP stack.
NatPortFwdRule * portFwdRules
Port redirection rules.
Ipv4Protocol protocol
IP protocol (TCP, UDP or ICMP)
uint_t publicIpAddrIndex
Index of the public IP address to use.
error_t natClearPortFwdRule(NatContext *context, uint_t index)
Remove port redirection rule.
uint_t numSessions
Number of NAT sessions.
NetInterface * privateInterfaces[NAT_MAX_PRIVATE_INTERFACES]
Private interfaces.
uint16_t privatePortMin
Destination port (lower value)
uint32_t Ipv4Addr
IPv4 network address.
uint16_t publicPortMax
Public port range to be redirected (upper value)
uint_t numSessions
Number of NAT sessions.
@ ERROR_INVALID_PARAMETER
Invalid parameter.
uint_t numPortFwdRules
Number of port redirection rules.
Ipv4Addr privateIpAddr
Destination IP address.
error_t natInit(NatContext *context, const NatSettings *settings)
NAT initialization.
uint16_t publicPortMin
Public port range to be redirected (lower value)
error_t natSetPublicInterface(NatContext *context, NetInterface *publicInterface)
Specify the NAT public interface.
NatPortFwdRule * portFwdRules
Port redirection rules.
NAT (IP Network Address Translator)
uint_t numPrivateInterfaces
Number of private interfaces.
Helper functions for NAT.
void natGetDefaultSettings(NatSettings *settings)
Initialize settings with default values.
NetInterface * publicInterface
Public interface.
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.
NetInterface * privateInterfaces[NAT_MAX_PRIVATE_INTERFACES]
Private interfaces.
NatSession * sessions
NAT sessions (initiated from a private host)
uint_t numPrivateInterfaces
Number of private interfaces.
error_t natStart(NatContext *context)
Start NAT operation.
Ipv4Protocol protocol
Transport protocol (TCP or UDP)
uint_t publicIpAddrIndex
Index of the public IP address to use.
void netLock(NetContext *context)
Get exclusive access to the core of the TCP/IP stack.
NatSession * sessions
NAT sessions (initiated from a private host)
NetInterface * privateInterface
Destination interface.
Ipv4Protocol
IPv4 protocol field.
NetInterface * publicInterface
Public interface.
bool_t running
Operational state of the NAT.
#define osMemset(p, value, length)
void natDeinit(NatContext *context)
Release NAT context.
uint16_t privatePortMax
Destination port (upper value)
error_t natSetPortFwdRule(NatContext *context, uint_t index, Ipv4Protocol protocol, uint16_t publicPort, NetInterface *privateInterface, Ipv4Addr privateIpAddr, uint16_t privatePort)
Add port redirection rule.
NetContext * netContext
TCP/IP stack context.
uint_t numPortFwdRules
Number of port redirection rules.