Patch for WANIPv6FirewallControl:1 service
[igd2-for-linux:igd2-for-linux.git] / linuxigd2 / src / pinholev6.h
1 /** 
2  * This file is part of igd2-for-linux project
3  * Copyright © 2011 France Telecom.
4  * Contact: fabrice.fontaine@orange-ftgroup.com
5  * Developer(s): fabrice.fontaine@orange-ftgroup.com, rmenard.ext@orange-ftgroup.com
6  *  
7  * This program is free software: you can redistribute it and/or modify 
8  * it under the terms of the GNU General Public License as published by 
9  * the Free Software Foundation, either version 2 of the License, or 
10  * (at your option) any later version. 
11  * 
12  * This program is distributed in the hope that it will be useful, 
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
15  * GNU General Public License for more details. 
16  * 
17  * You should have received a copy of the GNU General Public License 
18  * along with this program, see the /doc directory of this program. If 
19  * not, see http://www.gnu.org/licenses/. 
20  * 
21  */
22
23 #ifndef PINHOLEV6_H_
24 #define PINHOLEV6_H_
25
26 #include <netinet/in.h>
27
28 struct pinholev6 {
29     struct in6_addr * internal_client;
30     struct in6_addr * remote_host;
31     uint16_t internal_port;
32     uint16_t remote_port;
33     uint8_t protocol;
34     uint32_t lease_time;
35     uint32_t unique_id;
36     int event_id;
37
38     struct pinholev6 *next;
39
40 } *ph_first;
41
42 struct phv6_expirationEvent
43 {
44     int event_id;
45     struct pinholev6 *pinhole;
46 };
47
48 int phv6_init(void);
49
50 int phv6_close(void);
51
52 int phv6_findPinhole(uint32_t id, struct pinholev6 ** pinhole);
53
54 int phv6_existingPinhole(char *internal_client,
55         char *remote_host,
56         char *internal_port,
57         char *remote_port,
58         char *protocol,
59         uint32_t *uniqueID);
60
61 int phv6_addPinhole(char *internalclient,
62         char *remote_host,
63         char *internal_port,
64         char *remote_port,
65         char *protocol,
66         uint32_t lease_time,
67         uint32_t *uniqueId);
68
69 int phv6_deletePinhole(uint32_t id);
70
71 int phv6_updatePinhole(uint32_t id, uint32_t lease_time);
72
73 int phv6_ip6table_addRule(struct in6_addr * internal_client,
74         struct in6_addr * remote_host,
75         uint16_t internal_port,
76         uint16_t remote_port,
77         uint16_t protocol);
78
79 int phv6_ip6table_deleteRule(struct in6_addr * internal_client,
80         struct in6_addr * remote_host,
81         uint16_t internal_port,
82         uint16_t remote_port,
83         uint16_t protocol);
84
85
86
87 int phv6_checkPinholeWorking(int unique_id);
88
89 #endif /* PINHOLEV6_H_ */