/* Copyright (c) 2010, Jacob Appelbaum, Steven J. Murdoch. * Copyright (c) 2010-2015, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** * \file tor-fw-helper-natpmp.h **/ #ifdef NAT_PMP #ifndef TOR_TOR_FW_HELPER_NATPMP_H #define TOR_TOR_FW_HELPER_NATPMP_H #include /** This is the default NAT-PMP lease time in seconds. */ #define NATPMP_DEFAULT_LEASE 3600 /** NAT-PMP has many codes for success; this is one of them. */ #define NATPMP_SUCCESS 0 /** This is our NAT-PMP meta structure - it holds our request data, responses, * various NAT-PMP parameters, and of course the status of the motion in the * NAT-PMP ocean. */ typedef struct natpmp_state_t { natpmp_t natpmp; natpmpresp_t response; int fetch_public_ip; int status; int init; /**< Have we been initialized? */ int protocol; /**< This will only be TCP. */ int lease; } natpmp_state_t; const tor_fw_backend_t *tor_fw_get_natpmp_backend(void); int tor_natpmp_init(tor_fw_options_t *tor_fw_options, void *backend_state); int tor_natpmp_cleanup(tor_fw_options_t *tor_fw_options, void *backend_state); int tor_natpmp_add_tcp_mapping(uint16_t internal_port, uint16_t external_port, int is_verbose, void *backend_state); int tor_natpmp_fetch_public_ip(tor_fw_options_t *tor_fw_options, void *backend_state); #endif #endif