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.