Annotation of embedaddon/miniupnpd/genconfig.sh, revision 1.1.1.2
1.1 misho 1: #! /bin/sh
1.1.1.2 ! misho 2: # $Id: genconfig.sh,v 1.50 2011/07/25 16:03:46 nanard Exp $
1.1 misho 3: # miniupnp daemon
4: # http://miniupnp.free.fr or http://miniupnp.tuxfamily.org/
1.1.1.2 ! misho 5: # (c) 2006-2011 Thomas Bernard
1.1 misho 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:
1.1.1.2 ! misho 31: # OpenWRT special case
! 32: if [ -f ./os.openwrt ]; then
! 33: OS_NAME=OpenWRT
! 34: OS_VERSION=$(cat ./os.openwrt)
! 35: fi
! 36:
1.1 misho 37: ${RM} ${CONFIGFILE}
38:
39: echo "/* MiniUPnP Project" >> ${CONFIGFILE}
40: echo " * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/" >> ${CONFIGFILE}
1.1.1.2 ! misho 41: echo " * (c) 2006-2011 Thomas Bernard" >> ${CONFIGFILE}
1.1 misho 42: echo " * generated by $0 on `date` */" >> ${CONFIGFILE}
43: echo "#ifndef $CONFIGMACRO" >> ${CONFIGFILE}
44: echo "#define $CONFIGMACRO" >> ${CONFIGFILE}
45: echo "" >> ${CONFIGFILE}
46: echo "#include <inttypes.h>" >> ${CONFIGFILE}
47: echo "" >> ${CONFIGFILE}
1.1.1.2 ! misho 48: echo "#define MINIUPNPD_VERSION \"`cat VERSION`\"" >> ${CONFIGFILE}
! 49: echo "" >> ${CONFIGFILE}
1.1 misho 50: echo "#define UPNP_VERSION \"$UPNP_VERSION\"" >> ${CONFIGFILE}
51:
52: # OS Specific stuff
53: case $OS_NAME in
54: OpenBSD)
55: MAJORVER=`echo $OS_VERSION | cut -d. -f1`
56: MINORVER=`echo $OS_VERSION | cut -d. -f2`
57: #echo "OpenBSD majorversion=$MAJORVER minorversion=$MINORVER"
58: # rtableid was introduced in OpenBSD 4.0
59: if [ $MAJORVER -ge 4 ]; then
60: echo "#define PFRULE_HAS_RTABLEID" >> ${CONFIGFILE}
61: fi
62: # from the 3.8 version, packets and bytes counters are double : in/out
63: if [ \( $MAJORVER -ge 4 \) -o \( $MAJORVER -eq 3 -a $MINORVER -ge 8 \) ]; then
64: echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE}
65: fi
66: # from the 4.7 version, new pf
67: if [ \( $MAJORVER -ge 5 \) -o \( $MAJORVER -eq 4 -a $MINORVER -ge 7 \) ]; then
68: echo "#define PF_NEWSTYLE" >> ${CONFIGFILE}
69: fi
70: echo "#define USE_PF 1" >> ${CONFIGFILE}
71: FW=pf
1.1.1.2 ! misho 72: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 73: OS_URL=http://www.openbsd.org/
74: ;;
75: FreeBSD)
76: VER=`grep '#define __FreeBSD_version' /usr/include/sys/param.h | awk '{print $3}'`
77: if [ $VER -ge 700049 ]; then
78: echo "#define PFRULE_INOUT_COUNTS" >> ${CONFIGFILE}
79: fi
80: # new way to see which one to use PF or IPF.
81: # see http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=957
1.1.1.2 ! misho 82: # source file wource config file so we can probe vars
! 83: if [ -f /etc/rc.subr ] && [ -f /etc/rc.conf ]; then
! 84: # source file with handy subroutines like checkyesno
! 85: . /etc/rc.subr
! 86: # source config file so we can probe vars
! 87: . /etc/rc.conf
! 88: if checkyesno ipfilter_enable; then
! 89: echo "Using ipf"
! 90: FW=ipf
! 91: echo "#define USE_IPF 1" >> ${CONFIGFILE}
! 92: elif checkyesno pf_enable; then
! 93: echo "Using pf"
! 94: FW=pf
! 95: echo "#define USE_PF 1" >> ${CONFIGFILE}
! 96: else
! 97: echo "Could not detect usage of ipf or pf. Compiling for pf by default"
! 98: FW=pf
! 99: echo "#define USE_PF 1" >> ${CONFIGFILE}
! 100: fi
1.1 misho 101: # TODO : Add support for IPFW
102: # echo "#define USE_IPFW 1" >> ${CONFIGFILE}
103: # FW=ipfw
104: else
105: echo "Could not detect usage of ipf or pf. Compiling for pf by default"
106: FW=pf
107: echo "#define USE_PF 1" >> ${CONFIGFILE}
108: fi
1.1.1.2 ! misho 109: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 110: OS_URL=http://www.freebsd.org/
111: ;;
112: pfSense)
113: # we need to detect if PFRULE_INOUT_COUNTS macro is needed
114: echo "#define USE_PF 1" >> ${CONFIGFILE}
115: FW=pf
1.1.1.2 ! misho 116: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 117: OS_URL=http://www.pfsense.com/
118: ;;
119: NetBSD)
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
1.1.1.2 ! misho 135: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 136: OS_URL=http://www.netbsd.org/
137: ;;
138: DragonFly)
139: # source file with handy subroutines like checkyesno
140: . /etc/rc.subr
141: # source config file so we can probe vars
142: . /etc/rc.conf
143: if checkyesno pf; then
144: echo "#define USE_PF 1" >> ${CONFIGFILE}
145: FW=pf
146: elif checkyesno ipfilter; then
147: echo "#define USE_IPF 1" >> ${CONFIGFILE}
148: FW=ipf
149: else
150: echo "Could not detect ipf nor pf, defaulting to pf."
151: echo "#define USE_PF 1" >> ${CONFIGFILE}
152: FW=pf
153: fi
1.1.1.2 ! misho 154: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 155: OS_URL=http://www.dragonflybsd.org/
156: ;;
157: SunOS)
158: echo "#define USE_IPF 1" >> ${CONFIGFILE}
1.1.1.2 ! misho 159: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 160: FW=ipf
161: echo "#define LOG_PERROR 0" >> ${CONFIGFILE}
162: echo "#define SOLARIS_KSTATS 1" >> ${CONFIGFILE}
163: OS_URL=http://www.sun.com/solaris/
164: ;;
165: Linux)
166: OS_URL=http://www.kernel.org/
167: KERNVERA=`echo $OS_VERSION | awk -F. '{print $1}'`
168: KERNVERB=`echo $OS_VERSION | awk -F. '{print $2}'`
169: KERNVERC=`echo $OS_VERSION | awk -F. '{print $3}'`
170: KERNVERD=`echo $OS_VERSION | awk -F. '{print $4}'`
171: #echo "$KERNVERA.$KERNVERB.$KERNVERC.$KERNVERD"
172: # Debian GNU/Linux special case
173: if [ -f /etc/debian_version ]; then
174: OS_NAME=Debian
175: OS_VERSION=`cat /etc/debian_version`
176: OS_URL=http://www.debian.org/
177: fi
1.1.1.2 ! misho 178: # same thing for Gentoo linux
! 179: if [ -f /etc/gentoo-release ]; then
! 180: OS_NAME=Gentoo
! 181: OS_VERSION=`cat /etc/gentoo-release`
! 182: OS_URL=http://www.gentoo.org/
! 183: fi
1.1 misho 184: # use lsb_release (Linux Standard Base) when available
185: LSB_RELEASE=`which lsb_release`
186: if [ 0 -eq $? ]; then
187: OS_NAME=`${LSB_RELEASE} -i -s`
188: OS_VERSION=`${LSB_RELEASE} -r -s`
189: case $OS_NAME in
190: Debian)
191: OS_URL=http://www.debian.org/
192: OS_VERSION=`${LSB_RELEASE} -c -s`
193: ;;
194: Ubuntu)
195: OS_URL=http://www.ubuntu.com/
196: OS_VERSION=`${LSB_RELEASE} -c -s`
197: ;;
1.1.1.2 ! misho 198: Gentoo)
! 199: OS_URL=http://www.gentoo.org/
! 200: ;;
1.1 misho 201: esac
202: fi
203: echo "#define USE_NETFILTER 1" >> ${CONFIGFILE}
1.1.1.2 ! misho 204: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
! 205: FW=netfilter
! 206: ;;
! 207: OpenWRT)
! 208: OS_URL=http://www.openwrt.org/
! 209: echo "#define USE_NETFILTER 1" >> ${CONFIGFILE}
! 210: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 211: FW=netfilter
212: ;;
213: Darwin)
214: echo "#define USE_IPFW 1" >> ${CONFIGFILE}
1.1.1.2 ! misho 215: echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE}
1.1 misho 216: FW=ipfw
217: OS_URL=http://developer.apple.com/macosx
218: ;;
219: *)
220: echo "Unknown OS : $OS_NAME"
221: echo "Please contact the author at http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/."
222: exit 1
223: ;;
224: esac
225:
226: echo "Configuring compilation for [$OS_NAME] [$OS_VERSION] with [$FW] firewall software."
227: echo "Please edit config.h for more compilation options."
228:
1.1.1.2 ! misho 229: # define SUPPORT_REMOTEHOST if the FW related code really supports setting
! 230: # a RemoteHost
! 231: if [ \( "$FW" = "netfilter" \) -o \( "$FW" = "pf" \) -o \( "$FW" = "ipfw" \) ] ; then
! 232: echo "#define SUPPORT_REMOTEHOST" >> ${CONFIGFILE}
! 233: fi
! 234:
! 235: echo "" >> ${CONFIGFILE}
1.1 misho 236: echo "#define OS_NAME \"$OS_NAME\"" >> ${CONFIGFILE}
237: echo "#define OS_VERSION \"$OS_NAME/$OS_VERSION\"" >> ${CONFIGFILE}
238: echo "#define OS_URL \"${OS_URL}\"" >> ${CONFIGFILE}
239: echo "" >> ${CONFIGFILE}
240:
241: echo "/* syslog facility to be used by miniupnpd */" >> ${CONFIGFILE}
242: echo "#define LOG_MINIUPNPD ${LOG_MINIUPNPD}" >> ${CONFIGFILE}
243: echo "" >> ${CONFIGFILE}
244:
245: echo "/* Uncomment the following line to allow miniupnpd to be" >> ${CONFIGFILE}
246: echo " * controlled by miniupnpdctl */" >> ${CONFIGFILE}
247: echo "/*#define USE_MINIUPNPDCTL*/" >> ${CONFIGFILE}
248: echo "" >> ${CONFIGFILE}
249:
250: echo "/* Comment the following line to disable NAT-PMP operations */" >> ${CONFIGFILE}
251: echo "#define ENABLE_NATPMP" >> ${CONFIGFILE}
252: echo "" >> ${CONFIGFILE}
253:
254: echo "/* Uncomment the following line to enable generation of" >> ${CONFIGFILE}
255: echo " * filter rules with pf */" >> ${CONFIGFILE}
1.1.1.2 ! misho 256: echo "#define PF_ENABLE_FILTER_RULES">> ${CONFIGFILE}
1.1 misho 257: echo "" >> ${CONFIGFILE}
258:
259: echo "/* Uncomment the following line to enable caching of results of" >> ${CONFIGFILE}
260: echo " * the getifstats() function */" >> ${CONFIGFILE}
261: echo "/*#define ENABLE_GETIFSTATS_CACHING*/" >> ${CONFIGFILE}
262: echo "/* The cache duration is indicated in seconds */" >> ${CONFIGFILE}
263: echo "#define GETIFSTATS_CACHING_DURATION 2" >> ${CONFIGFILE}
264: echo "" >> ${CONFIGFILE}
265:
266: echo "/* Uncomment the following line to enable multiple external ip support */" >> ${CONFIGFILE}
267: echo "/* note : That is EXPERIMENTAL, do not use that unless you know perfectly what you are doing */" >> ${CONFIGFILE}
268: echo "/* Dynamic external ip adresses are not supported when this option is enabled." >> ${CONFIGFILE}
269: echo " * Also note that you would need to configure your .conf file accordingly. */" >> ${CONFIGFILE}
270: echo "/*#define MULTIPLE_EXTERNAL_IP*/" >> ${CONFIGFILE}
271: echo "" >> ${CONFIGFILE}
272:
273: echo "/* Comment the following line to use home made daemonize() func instead" >> ${CONFIGFILE}
274: echo " * of BSD daemon() */" >> ${CONFIGFILE}
275: echo "#define USE_DAEMON" >> ${CONFIGFILE}
276: echo "" >> ${CONFIGFILE}
277:
278: echo "/* Uncomment the following line to enable lease file support */" >> ${CONFIGFILE}
279: echo "/*#define ENABLE_LEASEFILE*/" >> ${CONFIGFILE}
280: echo "" >> ${CONFIGFILE}
281:
282: echo "/* Define one or none of the two following macros in order to make some" >> ${CONFIGFILE}
283: echo " * clients happy. It will change the XML Root Description of the IGD." >> ${CONFIGFILE}
284: echo " * Enabling the Layer3Forwarding Service seems to be the more compatible" >> ${CONFIGFILE}
285: echo " * option. */" >> ${CONFIGFILE}
286: echo "/*#define HAS_DUMMY_SERVICE*/" >> ${CONFIGFILE}
287: echo "#define ENABLE_L3F_SERVICE" >> ${CONFIGFILE}
288: echo "" >> ${CONFIGFILE}
289:
1.1.1.2 ! misho 290: echo "/* Enable IP v6 support */" >> ${CONFIGFILE}
! 291: echo "/*#define ENABLE_IPV6*/" >> ${CONFIGFILE}
! 292: echo "" >> ${CONFIGFILE}
! 293:
! 294: echo "/* Enable the support of IGD v2 specification." >> ${CONFIGFILE}
! 295: echo " * This is not fully tested yet and can cause incompatibilities with some" >> ${CONFIGFILE}
! 296: echo " * control points, so enable with care. */" >> ${CONFIGFILE}
! 297: echo "/*#define IGD_V2*/" >> ${CONFIGFILE}
! 298: echo "" >> ${CONFIGFILE}
! 299:
! 300: echo "#ifdef IGD_V2" >> ${CONFIGFILE}
! 301: echo "/* Enable DeviceProtection service (IGDv2) */" >> ${CONFIGFILE}
! 302: echo "#define ENABLE_DP_SERVICE" >> ${CONFIGFILE}
! 303: echo "" >> ${CONFIGFILE}
! 304: echo "/* Enable WANIPv6FirewallControl service (IGDv2). needs IPv6 */" >> ${CONFIGFILE}
! 305: echo "#ifdef ENABLE_IPV6" >> ${CONFIGFILE}
! 306: echo "#define ENABLE_6FC_SERVICE" >> ${CONFIGFILE}
! 307: echo "#endif /* ENABLE_IPV6 */" >> ${CONFIGFILE}
! 308: echo "#endif /* IGD_V2 */" >> ${CONFIGFILE}
! 309: echo "" >> ${CONFIGFILE}
! 310:
! 311: echo "/* UPnP Events support. Working well enough to be enabled by default." >> ${CONFIGFILE}
! 312: echo " * It can be disabled to save a few bytes. */" >> ${CONFIGFILE}
! 313: echo "#define ENABLE_EVENTS" >> ${CONFIGFILE}
1.1 misho 314: echo "" >> ${CONFIGFILE}
315:
316: echo "/* include interface name in pf and ipf rules */" >> ${CONFIGFILE}
317: echo "#define USE_IFNAME_IN_RULES" >> ${CONFIGFILE}
318: echo "" >> ${CONFIGFILE}
319:
320: echo "/* Experimental NFQUEUE support. */" >> ${CONFIGFILE}
321: echo "/*#define ENABLE_NFQUEUE*/" >> ${CONFIGFILE}
322: echo "" >> ${CONFIGFILE}
323:
1.1.1.2 ! misho 324: echo "/* Enable to make MiniUPnPd more strict about UPnP conformance" >> ${CONFIGFILE}
! 325: echo " * and the messages it receives from control points */" >> ${CONFIGFILE}
! 326: echo "/*#define UPNP_STRICT*/" >> ${CONFIGFILE}
! 327: echo "" >> ${CONFIGFILE}
! 328:
1.1 misho 329: echo "#endif" >> ${CONFIGFILE}
330:
331: exit 0
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>