CDC/ECM driver for mbed, based on USBDevice by mbed-official. Uses PicoTCP to access Ethernet USB device. License: GPLv2

Dependents:   USBEthernet_TEST

Fork of USB_Ethernet by Daniele Lacamera

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 TASS Belgium NV. 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_DEL_FLAGS_FIN_FORWARD   (0x8000)
00015 #define PICO_DEL_FLAGS_FIN_BACKWARD  (0x4000)
00016 #define PICO_DEL_FLAGS_SYN           (0x2000)
00017 #define PICO_DEL_FLAGS_RST           (0x1000)
00018 
00019 #define PICO_IPV4_FORWARD_DEL 0
00020 #define PICO_IPV4_FORWARD_ADD 1
00021 
00022 #ifdef PICO_SUPPORT_NAT
00023 void pico_ipv4_nat_print_table(void);
00024 int pico_ipv4_nat_add(struct pico_ip4 pub_addr, uint16_t pub_port, struct pico_ip4 priv_addr, uint16_t priv_port, uint8_t proto);
00025 int pico_ipv4_nat_del(uint16_t pub_port, uint8_t proto);
00026 int pico_ipv4_nat_find(uint16_t pub_port, struct pico_ip4 *priv_addr, uint16_t priv_port, uint8_t proto);
00027 int pico_ipv4_port_forward(struct pico_ip4 pub_addr, uint16_t pub_port, struct pico_ip4 priv_addr, uint16_t priv_port, uint8_t proto, uint8_t persistant);
00028 
00029 int pico_ipv4_nat(struct pico_frame* f, struct pico_ip4 pub_addr);
00030 int pico_ipv4_nat_enable(struct pico_ipv4_link *link);
00031 int pico_ipv4_nat_isenabled_out(struct pico_ipv4_link *link);
00032 int pico_ipv4_nat_isenabled_in(struct pico_frame *f);
00033 
00034 #else
00035 
00036 static inline int pico_ipv4_nat_isenabled_out(struct pico_ipv4_link *link)
00037 {
00038   pico_err = PICO_ERR_EPROTONOSUPPORT;
00039   return -1;
00040 }
00041 static inline int pico_ipv4_nat_isenabled_in(struct pico_frame *f)
00042 {
00043   pico_err = PICO_ERR_EPROTONOSUPPORT;
00044   return -1;
00045 }
00046 
00047 static inline int pico_ipv4_nat(struct pico_frame* f, struct pico_ip4 pub_addr)
00048 {
00049   pico_err = PICO_ERR_EPROTONOSUPPORT;
00050   return -1;
00051 }
00052 
00053 static inline int pico_ipv4_nat_enable(struct pico_ipv4_link *link)
00054 {
00055   pico_err = PICO_ERR_EPROTONOSUPPORT;
00056   return -1;
00057 }
00058 
00059 #define pico_ipv4_nat_print_table() do{}while(0)
00060 
00061 static inline int pico_ipv4_nat_add(struct pico_ip4 pub_addr, uint16_t pub_port, struct pico_ip4 priv_addr, uint16_t priv_port, uint8_t proto)
00062 {
00063   pico_err = PICO_ERR_EPROTONOSUPPORT;
00064   return -1;
00065 }
00066 
00067 static inline int pico_ipv4_nat_del(uint16_t pub_port, uint8_t proto)
00068 {
00069   pico_err = PICO_ERR_EPROTONOSUPPORT;
00070   return -1;
00071 }
00072 
00073 
00074 static inline int pico_ipv4_nat_find(uint16_t pub_port, struct pico_ip4 priv_addr, uint16_t priv_port, uint8_t proto)
00075 {
00076   pico_err = PICO_ERR_EPROTONOSUPPORT;
00077   return -1;
00078 }
00079 
00080 static inline int pico_ipv4_port_forward(struct pico_ip4 pub_addr, uint16_t pub_port, struct pico_ip4 priv_addr, uint16_t priv_port, uint8_t proto, uint8_t persistant)
00081 {
00082   pico_err = PICO_ERR_EPROTONOSUPPORT;
00083   return -1;
00084 }
00085 #endif
00086 
00087 #endif /* _INCLUDE_PICO_NAT */
00088