Do some fixes to no_deviceprotection branch
[igd2-for-linux:igd2-for-linux.git] / linuxigd2 / src / globals.h
1 /** 
2  * This file is part of Nokia InternetGatewayDevice v2 reference implementation
3  * Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies).
4  * Contact: mika.saaranen@nokia.com
5  *  
6  * This program is free software: you can redistribute it and/or modify 
7  * it under the terms of the GNU General Public License as published by 
8  * the Free Software Foundation, either version 2 of the License, or 
9  * (at your option) any later version. 
10  * 
11  * This program is distributed in the hope that it will be useful, 
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
14  * GNU General Public License for more details. 
15  * 
16  * You should have received a copy of the GNU General Public License 
17  * along with this program. If not, see http://www.gnu.org/licenses/. 
18  * 
19  */
20  
21 #ifndef _GLOBALS_H_
22 #define _GLOBALS_H_
23
24 #include <net/if.h>
25 #include <arpa/inet.h>
26 #include <upnp/ixml.h>
27
28 #define PIN_SIZE 32
29 #define CHAIN_NAME_LEN 32
30 #define BITRATE_LEN 32
31 #define OPTION_LEN 64
32 #define RESULT_LEN 4096
33 #define RESULT_LEN_LONG 65536
34 #define NUM_LEN 32
35
36 #define SUB_MATCH 2
37
38 #ifndef min
39 #define min(a,b) ((a) < (b) ? (a) : (b))
40 #endif
41
42 struct GLOBALS
43 {
44     char pinCode[PIN_SIZE];  // Device Protection PIN code of device
45     char adminPassword[OPTION_LEN];  // Device Protection Admin password
46     char extInterfaceName[IFNAMSIZ]; // The name of the external interface, picked up from the
47     // command line
48     char intInterfaceName[IFNAMSIZ]; // The name of the internal interface, picked from command line
49
50     // All vars below are read from /etc/upnpd.conf in main.c
51     int debug;  // 1 - print debug messages to syslog
52     // 0 - no debug messages
53     char iptables[OPTION_LEN];  // The full name and path of the iptables executable, used in pmlist.c
54     char upstreamBitrate[OPTION_LEN];  // The upstream bitrate reported by the daemon
55     char downstreamBitrate[OPTION_LEN]; // The downstream bitrate reported by the daemon
56     char forwardChainName[OPTION_LEN];  // The name of the iptables chain to put FORWARD rules in
57     char preroutingChainName[OPTION_LEN]; // The name of the chain to put PREROUTING rules in
58     int createForwardRules;     // 1 - create rules in forward chain
59     // 0 - do not create rules in forward chain
60     int forwardRulesAppend; // 1 - add rules to end of forward chain
61     // 0 - add rules to start of forward chain
62     long int duration;    // 0 - no duration
63     // >0 - duration in seconds
64     // <0 - expiration time
65     char descDocName[OPTION_LEN];
66     char xmlPath[OPTION_LEN];
67     int listenport;     //The port to listen on
68
69     // dnsmasq start / stop script
70     char dnsmasqCmd[OPTION_LEN];
71     // dhcrelay command
72     char dhcrelayCmd[OPTION_LEN];
73     // dhcrelay server
74     char dhcrelayServer[OPTION_LEN];
75     // dhcrelay server
76     char networkCmd[OPTION_LEN];
77     // uci command
78     char uciCmd[OPTION_LEN];
79     // resolv.conf location
80     char resolvConf[OPTION_LEN];
81
82     // dhcp-client command
83     char dhcpc[OPTION_LEN];
84
85     // How often alive notifications are send
86     int advertisementInterval;
87     char certPath[OPTION_LEN];
88
89     // name of access level xml file
90     char accessLevelXml[OPTION_LEN];
91 };
92
93 typedef struct GLOBALS* globals_p;
94 typedef struct GLOBALS globals;
95 extern globals g_vars;
96
97
98 #define CONF_FILE "/etc/upnpd.conf"
99 #define MAX_CONFIG_LINE 256
100 #define IPTABLES_DEFAULT_FORWARD_CHAIN "FORWARD"
101 #define IPTABLES_DEFAULT_PREROUTING_CHAIN "PREROUTING"
102 #define DEFAULT_DURATION 3600
103 #define MINIMUM_DURATION 1
104 #define MAXIMUM_DURATION 604800
105 #define DEFAULT_UPSTREAM_BITRATE "0"
106 #define DEFAULT_DOWNSTREAM_BITRATE "0"
107 #define DESC_DOC_DEFAULT "gatedesc.xml"
108 #define XML_PATH_DEFAULT "/etc/linuxigd"
109 #define LISTENPORT_DEFAULT 0
110 #define DNSMASQ_CMD_DEFAULT "/etc/init.d/dnsmasq"
111 #define DHCRELAY_CMD_DEFAULT "dhcrelay"
112 #define UCI_CMD_DEFAULT "/sbin/uci"
113 #define RESOLV_CONF_DEFAULT "/etc/resolv.conf"
114 #define RESOLV_CONF_TMP "/tmp/resolv.conf.IGDv2"
115 #define DHCPC_DEFAULT "udhcpc"
116 #define NETWORK_CMD_DEFAULT "/etc/init.d/network"
117
118 #define ROUTE_COMMAND "route"
119 #define ADVERTISEMENT_INTERVAL 1800
120
121 // location of ACL (access control list) xml file. This is totally internal file, and is not listed in config file. 
122 #define ACL_XML "/etc/upnpd_ACL.xml"
123
124 #endif // _GLOBALS_H_