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>