1/* $Id: upnpglobalvars.h,v 1.38 2014/03/10 11:04:53 nanard Exp $ */
2/* MiniUPnP project
3 * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
4 * (c) 2006-2014 Thomas Bernard
5 * This software is subject to the conditions detailed
6 * in the LICENCE file provided within the distribution */
7
8#ifndef UPNPGLOBALVARS_H_INCLUDED
9#define UPNPGLOBALVARS_H_INCLUDED
10
11#include <time.h>
12#include "upnppermissions.h"
13#include "miniupnpdtypes.h"
14#include "config.h"
15
16/* name of the network interface used to acces internet */
17extern const char * ext_if_name;
18
19/* file to store all leases */
20#ifdef ENABLE_LEASEFILE
21extern const char * lease_file;
22#endif
23
24/* forced ip address to use for this interface
25 * when NULL, getifaddr() is used */
26extern const char * use_ext_ip_addr;
27
28/* parameters to return to upnp client when asked */
29extern unsigned long downstream_bitrate;
30extern unsigned long upstream_bitrate;
31
32/* statup time */
33extern time_t startup_time;
34
35extern unsigned long int min_lifetime;
36extern unsigned long int max_lifetime;
37
38/* runtime boolean flags */
39extern int runtime_flags;
40#define LOGPACKETSMASK		0x0001
41#define SYSUPTIMEMASK		0x0002
42#ifdef ENABLE_NATPMP
43#define ENABLENATPMPMASK	0x0004
44#endif
45#define CHECKCLIENTIPMASK	0x0008
46#define SECUREMODEMASK		0x0010
47
48#define ENABLEUPNPMASK		0x0020
49
50#ifdef PF_ENABLE_FILTER_RULES
51#define PFNOQUICKRULESMASK	0x0040
52#endif
53#ifdef ENABLE_IPV6
54#define IPV6DISABLEDMASK	0x0080
55#endif
56#ifdef ENABLE_6FC_SERVICE
57#define IPV6FCFWDISABLEDMASK		0x0100
58#define IPV6FCINBOUNDDISALLOWEDMASK	0x0200
59#endif
60#ifdef ENABLE_PCP
61#define PCP_ALLOWTHIRDPARTYMASK	0x0400
62#endif
63
64#define SETFLAG(mask)	runtime_flags |= mask
65#define GETFLAG(mask)	(runtime_flags & mask)
66#define CLEARFLAG(mask)	runtime_flags &= ~mask
67
68extern const char * pidfilename;
69
70extern char uuidvalue_igd[];	/* uuid of root device (IGD) */
71extern char uuidvalue_wan[];	/* uuid of WAN Device */
72extern char uuidvalue_wcd[];	/* uuid of WAN Connection Device */
73
74#define SERIALNUMBER_MAX_LEN (48)
75extern char serialnumber[];
76
77#define MODELNUMBER_MAX_LEN (48)
78extern char modelnumber[];
79
80#define PRESENTATIONURL_MAX_LEN (64)
81extern char presentationurl[];
82
83#ifdef ENABLE_MANUFACTURER_INFO_CONFIGURATION
84#define FRIENDLY_NAME_MAX_LEN (64)
85extern char friendly_name[];
86
87#define MANUFACTURER_NAME_MAX_LEN (64)
88extern char manufacturer_name[];
89
90#define MANUFACTURER_URL_MAX_LEN (64)
91extern char manufacturer_url[];
92
93#define MODEL_NAME_MAX_LEN (64)
94extern char model_name[];
95
96#define MODEL_DESCRIPTION_MAX_LEN (64)
97extern char model_description[];
98
99#define MODEL_URL_MAX_LEN (64)
100extern char model_url[];
101#endif
102
103/* UPnP permission rules : */
104extern struct upnpperm * upnppermlist;
105extern unsigned int num_upnpperm;
106
107#ifdef PCP_SADSCP
108extern struct dscp_values* dscp_values_list;
109extern unsigned int num_dscp_values;
110#endif
111
112/* For automatic removal of expired rules (with LeaseDuration) */
113extern unsigned int nextruletoclean_timestamp;
114
115#ifdef USE_PF
116extern const char * anchor_name;
117/* queue and tag for PF rules */
118extern const char * queue;
119extern const char * tag;
120#endif
121
122#ifdef USE_NETFILTER
123extern const char * miniupnpd_nat_chain;
124extern const char * miniupnpd_peer_chain;
125extern const char * miniupnpd_forward_chain;
126#ifdef ENABLE_UPNPPINHOLE
127extern const char * miniupnpd_v6_filter_chain;
128#endif
129#endif
130
131#ifdef ENABLE_NFQUEUE
132extern int nfqueue;
133extern int n_nfqix;
134extern unsigned nfqix[];
135#endif
136
137/* lan addresses to listen to SSDP traffic */
138extern struct lan_addr_list lan_addrs;
139
140#ifdef ENABLE_IPV6
141/* ipv6 address used for HTTP */
142extern char ipv6_addr_for_http_with_brackets[64];
143
144/* address used to bind local services */
145extern struct in6_addr ipv6_bind_addr;
146
147#endif
148
149extern const char * minissdpdsocketpath;
150
151/* BOOTID.UPNP.ORG and CONFIGID.UPNP.ORG */
152extern unsigned int upnp_bootid;
153extern unsigned int upnp_configid;
154
155#endif
156
157