Annotation of embedaddon/miniupnpd/genconfig.sh, revision 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>