Home | History | Annotate | Download | only in iproute2
      1 #! /bin/bash
      2 # This is not an autconf generated configure
      3 #
      4 INCLUDE=${1:-"$PWD/include"}
      5 
      6 TABLES=
      7 
      8 check_atm()
      9 {
     10 cat >/tmp/atmtest.c <<EOF
     11 #include <atm.h>
     12 int main(int argc, char **argv) {
     13 	struct atm_qos qos;
     14 	(void) text2qos("aal5,ubr:sdu=9180,rx:none",&qos,0);
     15 	return 0;
     16 }
     17 EOF
     18 gcc -I$INCLUDE -o /tmp/atmtest /tmp/atmtest.c -latm >/dev/null 2>&1 
     19 if [ $? -eq 0 ]
     20 then
     21     echo "TC_CONFIG_ATM:=y" >>Config
     22     echo yes
     23 else
     24     echo no
     25 fi
     26 rm -f /tmp/atmtest.c /tmp/atmtest
     27 }
     28 
     29 check_xt()
     30 {
     31 #check if we have xtables from iptables >= 1.4.5.
     32 cat >/tmp/ipttest.c <<EOF
     33 #include <xtables.h>
     34 #include <linux/netfilter.h>
     35 static struct xtables_globals test_globals = {
     36 	.option_offset = 0,
     37 	.program_name = "tc-ipt",
     38 	.program_version = XTABLES_VERSION,
     39 	.orig_opts = NULL,
     40 	.opts = NULL,
     41 	.exit_err = NULL,
     42 };
     43 
     44 int main(int argc, char **argv)
     45 {
     46 	xtables_init_all(&test_globals, NFPROTO_IPV4);
     47 	return 0;
     48 }
     49 
     50 EOF
     51 
     52 if gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl -lxtables >/dev/null 2>&1
     53 then
     54 	echo "TC_CONFIG_XT:=y" >>Config
     55 	echo "using xtables"
     56 fi
     57 rm -f /tmp/ipttest.c /tmp/ipttest
     58 }
     59 
     60 check_xt_old()
     61 {
     62 # bail if previous XT checks has already succeded.
     63 if grep TC_CONFIG_XT Config > /dev/null
     64 then
     65 	return
     66 fi
     67 
     68 #check if we need dont our internal header ..
     69 cat >/tmp/ipttest.c <<EOF
     70 #include <xtables.h>
     71 char *lib_dir;
     72 unsigned int global_option_offset = 0;
     73 const char *program_version = XTABLES_VERSION;
     74 const char *program_name = "tc-ipt";
     75 struct afinfo afinfo = {
     76 	.libprefix      = "libxt_",
     77 };
     78 
     79 void exit_error(enum exittype status, const char *msg, ...)
     80 {
     81 }
     82 
     83 int main(int argc, char **argv) {
     84 
     85 	return 0;
     86 }
     87 
     88 EOF
     89 gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1
     90 
     91 if [ $? -eq 0 ]
     92 then
     93 	echo "TC_CONFIG_XT_OLD:=y" >>Config
     94 	echo "using old xtables (no need for xt-internal.h)"
     95 fi
     96 rm -f /tmp/ipttest.c /tmp/ipttest
     97 }
     98 
     99 check_xt_old_internal_h()
    100 {
    101 # bail if previous XT checks has already succeded.
    102 if grep TC_CONFIG_XT Config > /dev/null
    103 then
    104 	return
    105 fi
    106 
    107 #check if we need our own internal.h
    108 cat >/tmp/ipttest.c <<EOF
    109 #include <xtables.h>
    110 #include "xt-internal.h"
    111 char *lib_dir;
    112 unsigned int global_option_offset = 0;
    113 const char *program_version = XTABLES_VERSION;
    114 const char *program_name = "tc-ipt";
    115 struct afinfo afinfo = {
    116 	.libprefix      = "libxt_",
    117 };
    118 
    119 void exit_error(enum exittype status, const char *msg, ...)
    120 {
    121 }
    122 
    123 int main(int argc, char **argv) {
    124 
    125 	return 0;
    126 }
    127 
    128 EOF
    129 gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1
    130 
    131 if [ $? -eq 0 ]
    132 then
    133 	echo "using old xtables with xt-internal.h"
    134 	echo "TC_CONFIG_XT_OLD_H:=y" >>Config
    135 fi
    136 rm -f /tmp/ipttest.c /tmp/ipttest
    137 }
    138 
    139 check_ipt()
    140 {
    141 	if ! grep TC_CONFIG_XT Config > /dev/null
    142 	then
    143 		echo "using iptables"
    144 		TABLES="iptables"
    145 	else
    146 		TABLES="xtables"
    147 	fi
    148 }
    149 
    150 check_ipt_lib_dir()
    151 {
    152 	IPT_LIB_DIR=""
    153 	for dir in /lib /usr/lib /usr/local/lib
    154 	do
    155 		for file in $dir/$TABLES/lib*t_*so ; do
    156 			if [ -f $file ]; then
    157 				echo $dir/$TABLES
    158 				echo "IPT_LIB_DIR:=$dir/$TABLES" >> Config
    159 				return
    160 			fi
    161 		done
    162 	done
    163 	echo "not found!"
    164 }
    165 
    166 echo "# Generated config based on" $INCLUDE >Config
    167 
    168 echo "TC schedulers"
    169 
    170 echo -n " ATM	"
    171 check_atm
    172 
    173 echo -n " IPT	"
    174 check_xt
    175 check_xt_old
    176 check_xt_old_internal_h
    177 check_ipt
    178 
    179 echo -n "iptables modules directory: "
    180 check_ipt_lib_dir
    181