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