From e982ebc9f5424950f455f2e104429884ec5347e8 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Sun, 15 Apr 2012 00:35:31 +0200 Subject: [PATCH] Add command line arguments to genconfig.sh config script --- miniupnpd/Changelog.txt | 1 + miniupnpd/Makefile | 8 +++- miniupnpd/Makefile.linux | 15 ++++--- miniupnpd/genconfig.sh | 95 +++++++++++++++++++++++++++++----------- 4 files changed, 85 insertions(+), 34 deletions(-) diff --git a/miniupnpd/Changelog.txt b/miniupnpd/Changelog.txt index 8bd753f..ebcca51 100644 --- a/miniupnpd/Changelog.txt +++ b/miniupnpd/Changelog.txt @@ -2,6 +2,7 @@ $Id: Changelog.txt,v 1.270 2012/04/14 22:26:09 nanard Exp $ 2012/04/15: More C++ => ANSI C comments to compile with -ansi option + Add command line arguments to genconfig.sh config script. 2012/04/12: Set TTL on SSDP Notify sockets (IPv4). TTL is set to 2 (recommendation from diff --git a/miniupnpd/Makefile b/miniupnpd/Makefile index 8991699..0dafb5d 100644 --- a/miniupnpd/Makefile +++ b/miniupnpd/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.60 2012/02/06 16:28:25 nanard Exp $ +# $Id: Makefile,v 1.62 2012/04/14 22:26:10 nanard Exp $ # MiniUPnP project # http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ # Author: Thomas Bernard @@ -10,6 +10,10 @@ # This Makefile is NOT compatible with GNU Make. # Linux users, please use Makefile.linux : # make -f Makefile.linux +# +# options can be passed to genconfig.sh through CONFIG_OPTIONS : +# $ CONFIG_OPTIONS="--ipv6 --igd2" make +# CFLAGS = -pipe -Wall -Os -ansi #CFLAGS = -pipe -Wall -O -g -DDEBUG -ansi @@ -184,7 +188,7 @@ testupnppermissions: config.h $(TESTUPNPPERMISSIONSOBJS) # $(CC) $(CFLAGS) -o $@ $> config.h: genconfig.sh - ./genconfig.sh + ./genconfig.sh $(CONFIG_OPTIONS) .SUFFIXES: .o .c .c.o: diff --git a/miniupnpd/Makefile.linux b/miniupnpd/Makefile.linux index 765993a..c62989b 100644 --- a/miniupnpd/Makefile.linux +++ b/miniupnpd/Makefile.linux @@ -1,10 +1,13 @@ -# $Id: Makefile.linux,v 1.61 2012/02/03 15:10:11 nanard Exp $ +# $Id: Makefile.linux,v 1.63 2012/04/14 22:26:10 nanard Exp $ # MiniUPnP project -# (c) 2006-2011 Thomas Bernard +# (c) 2006-2012 Thomas Bernard # http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ # Author : Thomas Bernard # for use with GNU Make # +# options can be passed to genconfig.sh through CONFIG_OPTIONS : +# $ CONFIG_OPTIONS="--ipv6 --igd2" make -f Makefile.linux +# # To install use : # $ PREFIX=/dummyinstalldir make -f Makefile.linux install # or : @@ -17,7 +20,7 @@ # ./configure them and build them then miniupnpd will build using : # $ IPTABLESPATH=/path/to/iptables-1.4.1 make -f Makefile.linux # -#CFLAGS = -Wall -O -D_GNU_SOURCE -g -DDEBUG +#CFLAGS = -Wall -O -D_GNU_SOURCE -g -DDEBUG -ansi CFLAGS ?= -Wall -Os -D_GNU_SOURCE -fno-strict-aliasing -Wstrict-prototypes CC ?= gcc RM = rm -f @@ -152,7 +155,7 @@ testgetifaddr: testgetifaddr.o getifaddr.o miniupnpdctl: miniupnpdctl.o config.h: genconfig.sh - ./genconfig.sh + ./genconfig.sh $(CONFIG_OPTIONS) depend: config.h makedepend -f$(MAKEFILE_LIST) -Y \ @@ -166,7 +169,7 @@ miniupnpd.o: upnphttp.h upnpdescgen.h miniupnpdpath.h getifaddr.h upnpsoap.h miniupnpd.o: options.h minissdp.h upnpredirect.h daemonize.h upnpevents.h miniupnpd.o: natpmp.h commonrdr.h upnputils.h ifacewatcher.h upnphttp.o: config.h upnphttp.h upnpdescgen.h miniupnpdpath.h upnpsoap.h -upnphttp.o: upnpevents.h +upnphttp.o: upnpevents.h upnputils.h upnpdescgen.o: config.h getifaddr.h upnpredirect.h upnpdescgen.h upnpdescgen.o: miniupnpdpath.h upnpglobalvars.h upnppermissions.h upnpdescgen.o: miniupnpdtypes.h upnpdescstrings.h upnpurns.h getconnstatus.h @@ -190,7 +193,7 @@ minissdp.o: upnputils.h codelength.h natpmp.o: config.h natpmp.h upnpglobalvars.h upnppermissions.h natpmp.o: miniupnpdtypes.h getifaddr.h upnpredirect.h commonrdr.h upnpevents.o: config.h upnpevents.h miniupnpdpath.h upnpglobalvars.h -upnpevents.o: upnppermissions.h miniupnpdtypes.h upnpdescgen.h +upnpevents.o: upnppermissions.h miniupnpdtypes.h upnpdescgen.h upnputils.h upnputils.o: config.h upnputils.h getconnstatus.o: getconnstatus.h getifaddr.h linux/getifstats.o: config.h getifstats.h diff --git a/miniupnpd/genconfig.sh b/miniupnpd/genconfig.sh index d3e69a8..fd9647e 100755 --- a/miniupnpd/genconfig.sh +++ b/miniupnpd/genconfig.sh @@ -1,11 +1,33 @@ #! /bin/sh -# $Id: genconfig.sh,v 1.51 2011/11/18 11:54:00 nanard Exp $ +# $Id: genconfig.sh,v 1.53 2012/04/14 22:26:10 nanard Exp $ # miniupnp daemon # http://miniupnp.free.fr or http://miniupnp.tuxfamily.org/ -# (c) 2006-2011 Thomas Bernard +# (c) 2006-2012 Thomas Bernard # This software is subject to the conditions detailed in the # LICENCE file provided within the distribution +for argv; do +case "$argv" in + --ipv6) IPV6=1 ;; + --igd2) IGD2=1 ;; + --strict) STRICT=1 ;; + --leasefile) LEASEFILE=1 ;; + --help|-h) + echo "Usage : $0 [options]" + echo " --ipv6 enable IPv6" + echo " --igd2 build an IGDv2 instead of an IGDv1" + echo " --strict be more strict regarding compliance with UPnP specifications" + echo " --leasefile enable lease file" + exit 1 + ;; + *) + echo "Option not recognized : $argv" + echo "use -h option to display help" + exit 1 + ;; +esac +done + RM="rm -f" CONFIGFILE="config.h" CONFIGMACRO="__CONFIG_H__" @@ -44,7 +66,7 @@ ${RM} ${CONFIGFILE} echo "/* MiniUPnP Project" >> ${CONFIGFILE} echo " * http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/" >> ${CONFIGFILE} -echo " * (c) 2006-2011 Thomas Bernard" >> ${CONFIGFILE} +echo " * (c) 2006-2012 Thomas Bernard" >> ${CONFIGFILE} echo " * generated by $0 on `date` */" >> ${CONFIGFILE} echo "#ifndef $CONFIGMACRO" >> ${CONFIGFILE} echo "#define $CONFIGMACRO" >> ${CONFIGFILE} @@ -77,7 +99,6 @@ case $OS_NAME in if [ $MAJORVER -ge 5 ]; then echo "#define PFRULE_HAS_ONRDOMAIN" >> ${CONFIGFILE} fi - echo "#define USE_PF 1" >> ${CONFIGFILE} FW=pf echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} OS_URL=http://www.openbsd.org/ @@ -96,25 +117,21 @@ case $OS_NAME in if checkyesno ipfilter_enable; then echo "Using ipf" FW=ipf - echo "#define USE_IPF 1" >> ${CONFIGFILE} elif checkyesno pf_enable; then echo "Using pf" FW=pf - echo "#define USE_PF 1" >> ${CONFIGFILE} - # TODO : Add support for IPFW - # echo "#define USE_IPFW 1" >> ${CONFIGFILE} - # FW=ipfw + elif checkyesno firewall_enable; then + echo "Using ifpw" + FW=ipfw else - echo "Could not detect usage of ipf or pf. Compiling for pf by default" + echo "Could not detect usage of ipf, pf, ipfw. Compiling for pf by default" FW=pf - echo "#define USE_PF 1" >> ${CONFIGFILE} fi echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} OS_URL=http://www.freebsd.org/ ;; pfSense) # we need to detect if PFRULE_INOUT_COUNTS macro is needed - echo "#define USE_PF 1" >> ${CONFIGFILE} FW=pf echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} OS_URL=http://www.pfsense.com/ @@ -125,14 +142,11 @@ case $OS_NAME in # source config file so we can probe vars . /etc/rc.conf if checkyesno pf; then - echo "#define USE_PF 1" >> ${CONFIGFILE} FW=pf elif checkyesno ipfilter; then - echo "#define USE_IPF 1" >> ${CONFIGFILE} FW=ipf else echo "Could not detect ipf nor pf, defaulting to pf." - echo "#define USE_PF 1" >> ${CONFIGFILE} FW=pf fi echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} @@ -144,10 +158,8 @@ case $OS_NAME in # source config file so we can probe vars . /etc/rc.conf if checkyesno pf; then - echo "#define USE_PF 1" >> ${CONFIGFILE} FW=pf elif checkyesno ipfilter; then - echo "#define USE_IPF 1" >> ${CONFIGFILE} FW=ipf else echo "Could not detect ipf nor pf, defaulting to pf." @@ -158,7 +170,6 @@ case $OS_NAME in OS_URL=http://www.dragonflybsd.org/ ;; SunOS) - echo "#define USE_IPF 1" >> ${CONFIGFILE} echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} FW=ipf echo "#define LOG_PERROR 0" >> ${CONFIGFILE} @@ -203,13 +214,11 @@ case $OS_NAME in ;; esac fi - echo "#define USE_NETFILTER 1" >> ${CONFIGFILE} echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} FW=netfilter ;; OpenWRT) OS_URL=http://www.openwrt.org/ - echo "#define USE_NETFILTER 1" >> ${CONFIGFILE} echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} FW=netfilter ;; @@ -219,7 +228,6 @@ case $OS_NAME in echo "" >> ${CONFIGFILE} echo "#include " >> ${CONFIGFILE} echo "" >> ${CONFIGFILE} - echo "#define USE_NETFILTER 1" >> ${CONFIGFILE} echo "#ifdef LINUX26" >> ${CONFIGFILE} echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} echo "#endif" >> ${CONFIGFILE} @@ -229,7 +237,6 @@ case $OS_NAME in FW=netfilter ;; Darwin) - echo "#define USE_IPFW 1" >> ${CONFIGFILE} echo "#define USE_IFACEWATCHER 1" >> ${CONFIGFILE} FW=ipfw OS_URL=http://developer.apple.com/macosx @@ -241,6 +248,26 @@ case $OS_NAME in ;; esac +case $FW in + pf) + echo "#define USE_PF 1" >> ${CONFIGFILE} + ;; + ipf) + echo "#define USE_IPF 1" >> ${CONFIGFILE} + ;; + ipfw) + echo "#define USE_IPFW 1" >> ${CONFIGFILE} + ;; + netfilter) + echo "#define USE_NETFILTER 1" >> ${CONFIGFILE} + ;; + *) + echo "Unknown Firewall/packet filtering software [$FW]" + echo "Please contact the author at http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/." + exit 1 + ;; +esac + echo "Configuring compilation for [$OS_NAME] [$OS_VERSION] with [$FW] firewall software." echo "Please edit config.h for more compilation options." @@ -294,7 +321,11 @@ echo "#define USE_DAEMON" >> ${CONFIGFILE} echo "" >> ${CONFIGFILE} echo "/* Uncomment the following line to enable lease file support */" >> ${CONFIGFILE} -echo "/*#define ENABLE_LEASEFILE*/" >> ${CONFIGFILE} +if [ -n "$LEASEFILE" ] ; then + echo "#define ENABLE_LEASEFILE" >> ${CONFIGFILE} +else + echo "/*#define ENABLE_LEASEFILE*/" >> ${CONFIGFILE} +fi echo "" >> ${CONFIGFILE} echo "/* Define one or none of the two following macros in order to make some" >> ${CONFIGFILE} @@ -306,13 +337,21 @@ echo "#define ENABLE_L3F_SERVICE" >> ${CONFIGFILE} echo "" >> ${CONFIGFILE} echo "/* Enable IP v6 support */" >> ${CONFIGFILE} -echo "/*#define ENABLE_IPV6*/" >> ${CONFIGFILE} +if [ -n "$IPV6" ]; then + echo "#define ENABLE_IPV6" >> ${CONFIGFILE} +else + echo "/*#define ENABLE_IPV6*/" >> ${CONFIGFILE} +fi echo "" >> ${CONFIGFILE} echo "/* Enable the support of IGD v2 specification." >> ${CONFIGFILE} echo " * This is not fully tested yet and can cause incompatibilities with some" >> ${CONFIGFILE} echo " * control points, so enable with care. */" >> ${CONFIGFILE} -echo "/*#define IGD_V2*/" >> ${CONFIGFILE} +if [ -n "$IGD2" ]; then + echo "#define IGD_V2" >> ${CONFIGFILE} +else + echo "/*#define IGD_V2*/" >> ${CONFIGFILE} +fi echo "" >> ${CONFIGFILE} echo "#ifdef IGD_V2" >> ${CONFIGFILE} @@ -341,7 +380,11 @@ echo "" >> ${CONFIGFILE} echo "/* Enable to make MiniUPnPd more strict about UPnP conformance" >> ${CONFIGFILE} echo " * and the messages it receives from control points */" >> ${CONFIGFILE} -echo "/*#define UPNP_STRICT*/" >> ${CONFIGFILE} +if [ -n "$STRICT" ] ; then + echo "#define UPNP_STRICT" >> ${CONFIGFILE} +else + echo "/*#define UPNP_STRICT*/" >> ${CONFIGFILE} +fi echo "" >> ${CONFIGFILE} echo "#endif" >> ${CONFIGFILE}