Annotation of embedaddon/miniupnpd/genconfig.sh, revision 1.1.1.1
1.1 misho 1: #! /bin/sh
2: # $Id: genconfig.sh,v 1.39 2010/09/21 15:36:12 nanard Exp $
3: # miniupnp daemon
4: # http://miniupnp.free.fr or http://miniupnp.tuxfamily.org/
5: # (c) 2006-2010 Thomas Bernard
6: # This software is subject to the conditions detailed in the
7: # LICENCE file provided within the distribution
8:
9: RM="rm -f"
10: CONFIGFILE="config.h"
11: CONFIGMACRO="__CONFIG_H__"
12:
13: # version reported in XML descriptions
14: #UPNP_VERSION=20070827
15: UPNP_VERSION=`date +"%Y%m%d"`
16: # Facility to syslog
17: LOG_MINIUPNPD="LOG_DAEMON"
18:
19: # detecting the OS name and version
20: OS_NAME=`uname -s`
21: OS_VERSION=`uname -r`
22:
23: # pfSense special case
24: if [ -f /etc/platform ]; then
25: if [ `cat /etc/platform` = "pfSense" ]; then
26: OS_NAME=pfSense
27: OS_VERSION=`cat /etc/version`
28: fi
29: fi
30:
31: ${RM} ${CONFIGFILE}
32:
33: echo "/* MiniUPnP Project" >> ${CONFIGFILE}
34: echo " * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/" >> ${CONFIGFILE}
35: echo " * (c) 2006-2010 Thomas Bernard" >> ${CONFIGFILE}
36: echo " * generated by $0 on `date` */" >> ${CONFIGFILE}
37: echo "#ifndef $CONFIGMACRO" >> ${CONFIGFILE}
38: echo "#define $CONFIGMACRO" >> ${CONFIGFILE}
39: echo "" >> ${CONFIGFILE}
40: echo "#include <inttypes.h>" >> ${CONFIGFILE}
41: echo "" >> ${CONFIGFILE}
42: echo "#define UPNP_VERSION \"$UPNP_VERSION\"" >> ${CONFIGFILE}
43:
44: # OS Specific stuff
45: case $OS_NAME in
46: OpenBSD)
47: MAJORVER=`echo $OS_VERSION | cut -d. -f1`
48: MINORVER=`echo $OS_VERSION | cut -d. -f2`
49: #echo "OpenBSD majorversion=$MAJORVER minorversion=$MINORVER"
50: # rtableid was introduced in OpenBSD 4.0
51: if [ $MAJORVER -ge 4 ]; then
52: echo "#define PFRULE_HAS_RTABLEID" >> ${CONFIGFILE}
53: fi
54: # from the 3.8 version, packets and bytes counters are double : in/out
55: if [ \( $MAJORVER -ge 4 \) -o \( $MAJORVER -eq 3 -a $MINORVER -ge 8 \) ]; then
56: echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE}
57: fi
58: # from the 4.7 version, new pf
59: if [ \( $MAJORVER -ge 5 \) -o \( $MAJORVER -eq 4 -a $MINORVER -ge 7 \) ]; then
60: echo "#define PF_NEWSTYLE" >> ${CONFIGFILE}
61: fi
62: echo "#define USE_PF 1" >> ${CONFIGFILE}
63: FW=pf
64: OS_URL=http://www.openbsd.org/
65: ;;
66: FreeBSD)
67: VER=`grep '#define __FreeBSD_version' /usr/include/sys/param.h | awk '{print $3}'`
68: if [ $VER -ge 700049 ]; then
69: echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE}
70: fi
71: # new way to see which one to use PF or IPF.
72: # see http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=957
73: # source file with handy subroutines like checkyesno
74: . /etc/rc.subr
75: # source config file so we can probe vars
76: . /etc/rc.conf
77: if checkyesno ipfilter_enable; then
78: echo "Using ipf"
79: FW=ipf
80: echo "#define USE_IPF 1" >> ${CONFIGFILE}
81: elif checkyesno pf_enable; then
82: echo "Using pf"
83: FW=pf
84: echo "#define USE_PF 1" >> ${CONFIGFILE}
85: # TODO : Add support for IPFW
86: # echo "#define USE_IPFW 1" >> ${CONFIGFILE}
87: # FW=ipfw
88: else
89: echo "Could not detect usage of ipf or pf. Compiling for pf by default"
90: FW=pf
91: echo "#define USE_PF 1" >> ${CONFIGFILE}
92: fi
93: OS_URL=http://www.freebsd.org/
94: ;;
95: pfSense)
96: # we need to detect if PFRULE_INOUT_COUNTS macro is needed
97: echo "#define USE_PF 1" >> ${CONFIGFILE}
98: FW=pf
99: OS_URL=http://www.pfsense.com/
100: ;;
101: NetBSD)
102: # source file with handy subroutines like checkyesno
103: . /etc/rc.subr
104: # source config file so we can probe vars
105: . /etc/rc.conf
106: if checkyesno pf; then
107: echo "#define USE_PF 1" >> ${CONFIGFILE}
108: FW=pf
109: elif checkyesno ipfilter; then
110: echo "#define USE_IPF 1" >> ${CONFIGFILE}
111: FW=ipf
112: else
113: echo "Could not detect ipf nor pf, defaulting to pf."
114: echo "#define USE_PF 1" >> ${CONFIGFILE}
115: FW=pf
116: fi
117: OS_URL=http://www.netbsd.org/
118: ;;
119: DragonFly)
120: # source file with handy subroutines like checkyesno
121: . /etc/rc.subr
122: # source config file so we can probe vars
123: . /etc/rc.conf
124: if checkyesno pf; then
125: echo "#define USE_PF 1" >> ${CONFIGFILE}
126: FW=pf
127: elif checkyesno ipfilter; then
128: echo "#define USE_IPF 1" >> ${CONFIGFILE}
129: FW=ipf
130: else
131: echo "Could not detect ipf nor pf, defaulting to pf."
132: echo "#define USE_PF 1" >> ${CONFIGFILE}
133: FW=pf
134: fi
135: echo "#define USE_PF 1" >> ${CONFIGFILE}
136: OS_URL=http://www.dragonflybsd.org/
137: ;;
138: SunOS)
139: echo "#define USE_IPF 1" >> ${CONFIGFILE}
140: FW=ipf
141: echo "#define LOG_PERROR 0" >> ${CONFIGFILE}
142: echo "#define SOLARIS_KSTATS 1" >> ${CONFIGFILE}
143: OS_URL=http://www.sun.com/solaris/
144: ;;
145: Linux)
146: OS_URL=http://www.kernel.org/
147: KERNVERA=`echo $OS_VERSION | awk -F. '{print $1}'`
148: KERNVERB=`echo $OS_VERSION | awk -F. '{print $2}'`
149: KERNVERC=`echo $OS_VERSION | awk -F. '{print $3}'`
150: KERNVERD=`echo $OS_VERSION | awk -F. '{print $4}'`
151: #echo "$KERNVERA.$KERNVERB.$KERNVERC.$KERNVERD"
152: # Debian GNU/Linux special case
153: if [ -f /etc/debian_version ]; then
154: OS_NAME=Debian
155: OS_VERSION=`cat /etc/debian_version`
156: OS_URL=http://www.debian.org/
157: fi
158: # use lsb_release (Linux Standard Base) when available
159: LSB_RELEASE=`which lsb_release`
160: if [ 0 -eq $? ]; then
161: OS_NAME=`${LSB_RELEASE} -i -s`
162: OS_VERSION=`${LSB_RELEASE} -r -s`
163: case $OS_NAME in
164: Debian)
165: OS_URL=http://www.debian.org/
166: OS_VERSION=`${LSB_RELEASE} -c -s`
167: ;;
168: Ubuntu)
169: OS_URL=http://www.ubuntu.com/
170: OS_VERSION=`${LSB_RELEASE} -c -s`
171: ;;
172: esac
173: fi
174: echo "#define USE_NETFILTER 1" >> ${CONFIGFILE}
175: FW=netfilter
176: ;;
177: Darwin)
178: echo "#define USE_IPFW 1" >> ${CONFIGFILE}
179: FW=ipfw
180: OS_URL=http://developer.apple.com/macosx
181: ;;
182: *)
183: echo "Unknown OS : $OS_NAME"
184: echo "Please contact the author at http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/."
185: exit 1
186: ;;
187: esac
188:
189: echo "Configuring compilation for [$OS_NAME] [$OS_VERSION] with [$FW] firewall software."
190: echo "Please edit config.h for more compilation options."
191:
192: echo "#define OS_NAME \"$OS_NAME\"" >> ${CONFIGFILE}
193: echo "#define OS_VERSION \"$OS_NAME/$OS_VERSION\"" >> ${CONFIGFILE}
194: echo "#define OS_URL \"${OS_URL}\"" >> ${CONFIGFILE}
195: echo "" >> ${CONFIGFILE}
196:
197: echo "/* syslog facility to be used by miniupnpd */" >> ${CONFIGFILE}
198: echo "#define LOG_MINIUPNPD ${LOG_MINIUPNPD}" >> ${CONFIGFILE}
199: echo "" >> ${CONFIGFILE}
200:
201: echo "/* Uncomment the following line to allow miniupnpd to be" >> ${CONFIGFILE}
202: echo " * controlled by miniupnpdctl */" >> ${CONFIGFILE}
203: echo "/*#define USE_MINIUPNPDCTL*/" >> ${CONFIGFILE}
204: echo "" >> ${CONFIGFILE}
205:
206: echo "/* Comment the following line to disable NAT-PMP operations */" >> ${CONFIGFILE}
207: echo "#define ENABLE_NATPMP" >> ${CONFIGFILE}
208: echo "" >> ${CONFIGFILE}
209:
210: echo "/* Uncomment the following line to enable generation of" >> ${CONFIGFILE}
211: echo " * filter rules with pf */" >> ${CONFIGFILE}
212: echo "/*#define PF_ENABLE_FILTER_RULES*/">> ${CONFIGFILE}
213: echo "" >> ${CONFIGFILE}
214:
215: echo "/* Uncomment the following line to enable caching of results of" >> ${CONFIGFILE}
216: echo " * the getifstats() function */" >> ${CONFIGFILE}
217: echo "/*#define ENABLE_GETIFSTATS_CACHING*/" >> ${CONFIGFILE}
218: echo "/* The cache duration is indicated in seconds */" >> ${CONFIGFILE}
219: echo "#define GETIFSTATS_CACHING_DURATION 2" >> ${CONFIGFILE}
220: echo "" >> ${CONFIGFILE}
221:
222: echo "/* Uncomment the following line to enable multiple external ip support */" >> ${CONFIGFILE}
223: echo "/* note : That is EXPERIMENTAL, do not use that unless you know perfectly what you are doing */" >> ${CONFIGFILE}
224: echo "/* Dynamic external ip adresses are not supported when this option is enabled." >> ${CONFIGFILE}
225: echo " * Also note that you would need to configure your .conf file accordingly. */" >> ${CONFIGFILE}
226: echo "/*#define MULTIPLE_EXTERNAL_IP*/" >> ${CONFIGFILE}
227: echo "" >> ${CONFIGFILE}
228:
229: echo "/* Comment the following line to use home made daemonize() func instead" >> ${CONFIGFILE}
230: echo " * of BSD daemon() */" >> ${CONFIGFILE}
231: echo "#define USE_DAEMON" >> ${CONFIGFILE}
232: echo "" >> ${CONFIGFILE}
233:
234: echo "/* Uncomment the following line to enable lease file support */" >> ${CONFIGFILE}
235: echo "/*#define ENABLE_LEASEFILE*/" >> ${CONFIGFILE}
236: echo "" >> ${CONFIGFILE}
237:
238: echo "/* Define one or none of the two following macros in order to make some" >> ${CONFIGFILE}
239: echo " * clients happy. It will change the XML Root Description of the IGD." >> ${CONFIGFILE}
240: echo " * Enabling the Layer3Forwarding Service seems to be the more compatible" >> ${CONFIGFILE}
241: echo " * option. */" >> ${CONFIGFILE}
242: echo "/*#define HAS_DUMMY_SERVICE*/" >> ${CONFIGFILE}
243: echo "#define ENABLE_L3F_SERVICE" >> ${CONFIGFILE}
244: echo "" >> ${CONFIGFILE}
245:
246: echo "/* Experimental UPnP Events support. */" >> ${CONFIGFILE}
247: echo "/*#define ENABLE_EVENTS*/" >> ${CONFIGFILE}
248: echo "" >> ${CONFIGFILE}
249:
250: echo "/* include interface name in pf and ipf rules */" >> ${CONFIGFILE}
251: echo "#define USE_IFNAME_IN_RULES" >> ${CONFIGFILE}
252: echo "" >> ${CONFIGFILE}
253:
254: echo "/* Experimental NFQUEUE support. */" >> ${CONFIGFILE}
255: echo "/*#define ENABLE_NFQUEUE*/" >> ${CONFIGFILE}
256: echo "" >> ${CONFIGFILE}
257:
258: echo "#endif" >> ${CONFIGFILE}
259:
260: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>