Annotation of embedaddon/miniupnpd/upnpredirect.h, revision 1.1.1.2
1.1.1.2 ! misho 1: /* $Id: upnpredirect.h,v 1.24 2011/06/22 20:34:39 nanard Exp $ */
1.1 misho 2: /* MiniUPnP project
3: * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
1.1.1.2 ! misho 4: * (c) 2006-2011 Thomas Bernard
1.1 misho 5: * This software is subject to the conditions detailed
6: * in the LICENCE file provided within the distribution */
7:
8: #ifndef __UPNPREDIRECT_H__
9: #define __UPNPREDIRECT_H__
10:
1.1.1.2 ! misho 11: /* for u_int64_t */
! 12: #include <sys/types.h>
! 13:
1.1 misho 14: #include "config.h"
15:
16: #ifdef ENABLE_LEASEFILE
1.1.1.2 ! misho 17: int reload_from_lease_file(void);
1.1 misho 18: #endif
19:
20: /* upnp_redirect()
21: * calls OS/fw dependant implementation of the redirection.
22: * protocol should be the string "TCP" or "UDP"
23: * returns: 0 on success
24: * -1 failed to redirect
25: * -2 already redirected
26: * -3 permission check failed
27: */
28: int
1.1.1.2 ! misho 29: upnp_redirect(const char * rhost, unsigned short eport,
1.1 misho 30: const char * iaddr, unsigned short iport,
1.1.1.2 ! misho 31: const char * protocol, const char * desc,
! 32: unsigned int leaseduration);
1.1 misho 33:
34: /* upnp_redirect_internal()
35: * same as upnp_redirect() without any check */
36: int
1.1.1.2 ! misho 37: upnp_redirect_internal(const char * rhost, unsigned short eport,
1.1 misho 38: const char * iaddr, unsigned short iport,
1.1.1.2 ! misho 39: int proto, const char * desc,
! 40: unsigned int timestamp);
1.1 misho 41:
1.1.1.2 ! misho 42: /* upnp_get_redirection_infos()
! 43: * returns : 0 on success
! 44: * -1 failed to get the port mapping entry or no entry exists */
1.1 misho 45: int
46: upnp_get_redirection_infos(unsigned short eport, const char * protocol,
47: unsigned short * iport, char * iaddr, int iaddrlen,
1.1.1.2 ! misho 48: char * desc, int desclen,
! 49: char * rhost, int rhostlen,
! 50: unsigned int * leaseduration);
! 51:
! 52: /* upnp_get_redirection_infos_by_index()
! 53: * returns : 0 on success
! 54: * -1 failed to get the port mapping or index out of range */
1.1 misho 55: int
56: upnp_get_redirection_infos_by_index(int index,
57: unsigned short * eport, char * protocol,
58: unsigned short * iport,
59: char * iaddr, int iaddrlen,
1.1.1.2 ! misho 60: char * desc, int desclen,
! 61: char * rhost, int rhostlen,
! 62: unsigned int * leaseduration);
1.1 misho 63:
64: /* upnp_delete_redirection()
65: * returns: 0 on success
66: * -1 on failure*/
67: int
68: upnp_delete_redirection(unsigned short eport, const char * protocol);
69:
70: /* _upnp_delete_redir()
71: * same as above */
72: int
73: _upnp_delete_redir(unsigned short eport, int proto);
74:
75: /* Periodic cleanup functions
76: */
77: struct rule_state
78: {
79: u_int64_t packets;
80: u_int64_t bytes;
81: struct rule_state * next;
82: unsigned short eport;
1.1.1.2 ! misho 83: unsigned char proto;
! 84: unsigned char to_remove;
1.1 misho 85: };
86:
1.1.1.2 ! misho 87: /* return a linked list of all rules
! 88: * or an empty list if there are not enough
! 89: * As a "side effect", delete rules which are expired */
1.1 misho 90: struct rule_state *
91: get_upnp_rules_state_list(int max_rules_number_target);
92:
1.1.1.2 ! misho 93: /* return the number of port mapping entries */
1.1 misho 94: int
1.1.1.2 ! misho 95: upnp_get_portmapping_number_of_entries(void);
1.1 misho 96:
97: /* remove_unused_rules() :
98: * also free the list */
99: void
100: remove_unused_rules(struct rule_state * list);
101:
1.1.1.2 ! misho 102: /* upnp_get_portmappings_in_range()
! 103: * return a list of all "external" ports for which a port
! 104: * mapping exists */
! 105: unsigned short *
! 106: upnp_get_portmappings_in_range(unsigned short startport,
! 107: unsigned short endport,
! 108: const char * protocol,
! 109: unsigned int * number);
! 110:
! 111: #ifdef ENABLE_6FC_SERVICE
! 112: /* function to be used by WANIPv6_FirewallControl implementation */
! 113:
! 114: /* retreive outbound pinhole timeout*/
! 115: int
! 116: upnp_check_outbound_pinhole(int proto, int * timeout);
! 117:
! 118: /* add an inbound pinehole
! 119: * return value :
! 120: * 1 = success
! 121: * -1 = Pinhole space exhausted
! 122: * .. = error */
! 123: int
! 124: upnp_add_inboundpinhole(const char * raddr, unsigned short rport,
! 125: const char * iaddr, unsigned short iport,
! 126: const char * protocol, const char * leaseTime, int * uid);
! 127:
! 128: int
! 129: upnp_add_inboundpinhole_internal(const char * raddr, unsigned short rport,
! 130: const char * iaddr, unsigned short iport,
! 131: const char * proto, int * uid);
! 132:
! 133: /*
! 134: * return values :
! 135: * -4 not found
! 136: * -5 in another table
! 137: * -6 in another chain
! 138: * -7 in a chain but not a rule. (chain policy)
! 139: * */
! 140: int
! 141: upnp_get_pinhole_info(const char * raddr, unsigned short rport, char * iaddr, unsigned short * iport, char * proto, const char * uid, char * lt);
! 142:
! 143: /* update the lease time */
! 144: int
! 145: upnp_update_inboundpinhole(const char * uid, const char * leasetime);
! 146:
! 147: /* remove the inbound pinhole */
! 148: int
! 149: upnp_delete_inboundpinhole(const char * uid);
! 150:
! 151: /* ... */
! 152: int
! 153: upnp_check_pinhole_working(const char * uid, char * eaddr, char * iaddr, unsigned short * eport, unsigned short * iport, char * protocol, int * rulenum_used);
! 154:
! 155: /* number of packets that went through the pinhole */
! 156: int
! 157: upnp_get_pinhole_packets(const char * uid, int * packets);
! 158:
! 159: /* ? */
! 160: int
! 161: upnp_clean_expiredpinhole(void);
! 162:
! 163: #endif /* ENABLE_6FC_SERVICE */
! 164:
1.1 misho 165: /* stuff for responding to miniupnpdctl */
166: #ifdef USE_MINIUPNPDCTL
167: void
168: write_ruleset_details(int s);
169: #endif
170:
171: #endif
172:
173:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>