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