Free (GPLv2) TCP/IP stack developed by TASS Belgium

Dependents:   lpc1768-picotcp-demo ZeroMQ_PicoTCP_Publisher_demo TCPSocket_HelloWorld_PicoTCP Pico_TCP_UDP_Test ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers pico_nat.h Source File

pico_nat.h

00001 /*********************************************************************
00002    PicoTCP. Copyright (c) 2012-2015 Altran Intelligent Systems. Some rights reserved.
00003    See LICENSE and COPYING for usage.
00004 
00005    .
00006 
00007    Authors: Kristof Roelants, Simon Maes, Brecht Van Cauwenberghe
00008  *********************************************************************/
00009 
00010 #ifndef INCLUDE_PICO_NAT
00011 #define INCLUDE_PICO_NAT
00012 #include "pico_frame.h"
00013 
00014 #define PICO_NAT_PORT_FORWARD_DEL 0
00015 #define PICO_NAT_PORT_FORWARD_ADD 1
00016 
00017 #ifdef PICO_SUPPORT_NAT
00018 void pico_ipv4_nat_print_table(void);
00019 int pico_ipv4_nat_find(uint16_t nat_port, struct pico_ip4 *src_addr, uint16_t src_port, uint8_t proto);
00020 int pico_ipv4_port_forward(struct pico_ip4 nat_addr, uint16_t nat_port, struct pico_ip4 src_addr, uint16_t src_port, uint8_t proto, uint8_t flag);
00021 
00022 int pico_ipv4_nat_inbound(struct pico_frame *f, struct pico_ip4 *link_addr);
00023 int pico_ipv4_nat_outbound(struct pico_frame *f, struct pico_ip4 *link_addr);
00024 int pico_ipv4_nat_enable(struct pico_ipv4_link *link);
00025 int pico_ipv4_nat_disable(void);
00026 int pico_ipv4_nat_is_enabled(struct pico_ip4 *link_addr);
00027 #else
00028 
00029 #define pico_ipv4_nat_print_table() do {} while(0)
00030 static inline int pico_ipv4_nat_inbound(struct pico_frame *f, struct pico_ip4 *link_addr)
00031 {
00032     (void)f;
00033     (void)link_addr;
00034     pico_err = PICO_ERR_EPROTONOSUPPORT;
00035     return -1;
00036 }
00037 
00038 static inline int pico_ipv4_nat_outbound(struct pico_frame *f, struct pico_ip4 *link_addr)
00039 {
00040     (void)f;
00041     (void)link_addr;
00042     pico_err = PICO_ERR_EPROTONOSUPPORT;
00043     return -1;
00044 }
00045 
00046 static inline int pico_ipv4_nat_enable(struct pico_ipv4_link *link)
00047 {
00048     (void)link;
00049     pico_err = PICO_ERR_EPROTONOSUPPORT;
00050     return -1;
00051 }
00052 
00053 static inline int pico_ipv4_nat_disable(void)
00054 {
00055     pico_err = PICO_ERR_EPROTONOSUPPORT;
00056     return -1;
00057 }
00058 
00059 static inline int pico_ipv4_nat_is_enabled(struct pico_ip4 *link_addr)
00060 {
00061     (void)link_addr;
00062     pico_err = PICO_ERR_EPROTONOSUPPORT;
00063     return -1;
00064 }
00065 
00066 static inline int pico_ipv4_nat_find(uint16_t nat_port, struct pico_ip4 *src_addr, uint16_t src_port, uint8_t proto)
00067 {
00068     (void)nat_port;
00069     (void)src_addr;
00070     (void)src_port;
00071     (void)proto;
00072     pico_err = PICO_ERR_EPROTONOSUPPORT;
00073     return -1;
00074 }
00075 
00076 static inline int pico_ipv4_port_forward(struct pico_ip4 nat_addr, uint16_t nat_port, struct pico_ip4 src_addr, uint16_t src_port, uint8_t proto, uint8_t flag)
00077 {
00078     (void)nat_addr;
00079     (void)nat_port;
00080     (void)src_addr;
00081     (void)src_port;
00082     (void)proto;
00083     (void)flag;
00084     pico_err = PICO_ERR_EPROTONOSUPPORT;
00085     return -1;
00086 }
00087 #endif
00088 
00089 #endif /* _INCLUDE_PICO_NAT */
00090