Go to the documentation of this file.
43 #define TRACE_LEVEL NAT_TRACE_LEVEL
52 #if (NAT_SUPPORT == ENABLED)
95 if(context == NULL || settings == NULL)
160 if(context == NULL || publicInterface == NULL)
198 Ipv4Addr privateIpAddr, uint16_t privatePort)
204 publicPort, privateInterface, privateIpAddr, privatePort);
227 uint16_t privatePortMin)
232 if(context == NULL || privateInterface == NULL)
256 rule->
privatePortMax = privatePortMin + publicPortMax - publicPortMin;
error_t natStop(NatContext *context)
Stop NAT operation.
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.
NatContext * natContext
NAT context.
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.
void osAcquireMutex(OsMutex *mutex)
Acquire ownership of the specified mutex object.
void osReleaseMutex(OsMutex *mutex)
Release ownership of the specified mutex object.
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.
NatSession * sessions
NAT sessions (initiated from a private host)
NetInterface * privateInterface
Destination interface.
Ipv4Protocol
IPv4 protocol field.
NetInterface * publicInterface
Public interface.
bool_t running
This flag tells whether the NAT is running or not.
#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.
uint_t numPortFwdRules
Number of port redirection rules.