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

Fork of PicoTCP by Daniele Lacamera

Committer:
daniele
Date:
Sat Aug 03 08:50:27 2013 +0000
Revision:
51:18637a3d071f
Parent:
3:b4047e8a0123
Branch for CDC-ECM: Work in progress

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daniele 3:b4047e8a0123 1 /*********************************************************************
daniele 3:b4047e8a0123 2 PicoTCP. Copyright (c) 2012 TASS Belgium NV. Some rights reserved.
daniele 3:b4047e8a0123 3 See LICENSE and COPYING for usage.
daniele 3:b4047e8a0123 4
daniele 3:b4047e8a0123 5 .
daniele 3:b4047e8a0123 6
daniele 3:b4047e8a0123 7 Authors: Kristof Roelants, Simon Maes, Brecht Van Cauwenberghe
daniele 3:b4047e8a0123 8 *********************************************************************/
daniele 3:b4047e8a0123 9
daniele 3:b4047e8a0123 10 #ifndef _INCLUDE_PICO_NAT
daniele 3:b4047e8a0123 11 #define _INCLUDE_PICO_NAT
daniele 3:b4047e8a0123 12 #include "pico_frame.h"
daniele 3:b4047e8a0123 13
daniele 3:b4047e8a0123 14 #define PICO_DEL_FLAGS_FIN_FORWARD (0x8000)
daniele 3:b4047e8a0123 15 #define PICO_DEL_FLAGS_FIN_BACKWARD (0x4000)
daniele 3:b4047e8a0123 16 #define PICO_DEL_FLAGS_SYN (0x2000)
daniele 3:b4047e8a0123 17 #define PICO_DEL_FLAGS_RST (0x1000)
daniele 3:b4047e8a0123 18
daniele 3:b4047e8a0123 19 #define PICO_IPV4_FORWARD_DEL 0
daniele 3:b4047e8a0123 20 #define PICO_IPV4_FORWARD_ADD 1
daniele 3:b4047e8a0123 21
daniele 3:b4047e8a0123 22 #ifdef PICO_SUPPORT_NAT
daniele 3:b4047e8a0123 23 void pico_ipv4_nat_print_table(void);
daniele 3:b4047e8a0123 24 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);
daniele 3:b4047e8a0123 25 int pico_ipv4_nat_del(uint16_t pub_port, uint8_t proto);
daniele 3:b4047e8a0123 26 int pico_ipv4_nat_find(uint16_t pub_port, struct pico_ip4 *priv_addr, uint16_t priv_port, uint8_t proto);
daniele 3:b4047e8a0123 27 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);
daniele 3:b4047e8a0123 28
daniele 3:b4047e8a0123 29 int pico_ipv4_nat(struct pico_frame* f, struct pico_ip4 pub_addr);
daniele 3:b4047e8a0123 30 int pico_ipv4_nat_enable(struct pico_ipv4_link *link);
daniele 3:b4047e8a0123 31 int pico_ipv4_nat_isenabled_out(struct pico_ipv4_link *link);
daniele 3:b4047e8a0123 32 int pico_ipv4_nat_isenabled_in(struct pico_frame *f);
daniele 3:b4047e8a0123 33
daniele 3:b4047e8a0123 34 #else
daniele 3:b4047e8a0123 35
daniele 3:b4047e8a0123 36 static inline int pico_ipv4_nat_isenabled_out(struct pico_ipv4_link *link)
daniele 3:b4047e8a0123 37 {
daniele 3:b4047e8a0123 38 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 39 return -1;
daniele 3:b4047e8a0123 40 }
daniele 3:b4047e8a0123 41 static inline int pico_ipv4_nat_isenabled_in(struct pico_frame *f)
daniele 3:b4047e8a0123 42 {
daniele 3:b4047e8a0123 43 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 44 return -1;
daniele 3:b4047e8a0123 45 }
daniele 3:b4047e8a0123 46
daniele 3:b4047e8a0123 47 static inline int pico_ipv4_nat(struct pico_frame* f, struct pico_ip4 pub_addr)
daniele 3:b4047e8a0123 48 {
daniele 3:b4047e8a0123 49 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 50 return -1;
daniele 3:b4047e8a0123 51 }
daniele 3:b4047e8a0123 52
daniele 3:b4047e8a0123 53 static inline int pico_ipv4_nat_enable(struct pico_ipv4_link *link)
daniele 3:b4047e8a0123 54 {
daniele 3:b4047e8a0123 55 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 56 return -1;
daniele 3:b4047e8a0123 57 }
daniele 3:b4047e8a0123 58
daniele 3:b4047e8a0123 59 #define pico_ipv4_nat_print_table() do{}while(0)
daniele 3:b4047e8a0123 60
daniele 3:b4047e8a0123 61 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)
daniele 3:b4047e8a0123 62 {
daniele 3:b4047e8a0123 63 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 64 return -1;
daniele 3:b4047e8a0123 65 }
daniele 3:b4047e8a0123 66
daniele 3:b4047e8a0123 67 static inline int pico_ipv4_nat_del(uint16_t pub_port, uint8_t proto)
daniele 3:b4047e8a0123 68 {
daniele 3:b4047e8a0123 69 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 70 return -1;
daniele 3:b4047e8a0123 71 }
daniele 3:b4047e8a0123 72
daniele 3:b4047e8a0123 73
daniele 3:b4047e8a0123 74 static inline int pico_ipv4_nat_find(uint16_t pub_port, struct pico_ip4 priv_addr, uint16_t priv_port, uint8_t proto)
daniele 3:b4047e8a0123 75 {
daniele 3:b4047e8a0123 76 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 77 return -1;
daniele 3:b4047e8a0123 78 }
daniele 3:b4047e8a0123 79
daniele 3:b4047e8a0123 80 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)
daniele 3:b4047e8a0123 81 {
daniele 3:b4047e8a0123 82 pico_err = PICO_ERR_EPROTONOSUPPORT;
daniele 3:b4047e8a0123 83 return -1;
daniele 3:b4047e8a0123 84 }
daniele 3:b4047e8a0123 85 #endif
daniele 3:b4047e8a0123 86
daniele 3:b4047e8a0123 87 #endif /* _INCLUDE_PICO_NAT */
daniele 3:b4047e8a0123 88