1449bf1f339f77ab40c49f56acd5f0e12cefdeab5osdl.net!shemminger#! /bin/bash 2449bf1f339f77ab40c49f56acd5f0e12cefdeab5osdl.net!shemminger# This is not an autconf generated configure 3449bf1f339f77ab40c49f56acd5f0e12cefdeab5osdl.net!shemminger# 44b1bbd9c18641ba497d97822408f9a3f4550e871osdl.net!shemmingerINCLUDE=${1:-"$PWD/include"} 5449bf1f339f77ab40c49f56acd5f0e12cefdeab5osdl.net!shemminger 6e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemminger# Make a temp directory in build tree. 7e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen HemmingerTMPDIR=$(mktemp -d config.XXXXXX) 8e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingertrap 'status=$?; rm -rf $TMPDIRa; exit $status' EXIT HUP INT QUIT TERM 9e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemminger 1014743a78eb774d61fd952c4a4856346ced79b9fbAndreas Henrikssoncheck_atm() 11f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson{ 12e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingercat >$TMPDIR/atmtest.c <<EOF 13c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemminger#include <atm.h> 14c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemmingerint main(int argc, char **argv) { 15c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemminger struct atm_qos qos; 16c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemminger (void) text2qos("aal5,ubr:sdu=9180,rx:none",&qos,0); 17c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemminger return 0; 18c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemminger} 19c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemmingerEOF 20e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingergcc -I$INCLUDE -o $TMPDIR/atmtest $TMPDIR/atmtest.c -latm >/dev/null 2>&1 21c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemmingerif [ $? -eq 0 ] 22449bf1f339f77ab40c49f56acd5f0e12cefdeab5osdl.net!shemmingerthen 23c830d77b8fdc506751c8c80972613c886a7d0e58osdl.net!shemminger echo "TC_CONFIG_ATM:=y" >>Config 24b9cb1c9a4bcfb3308721b53e85ff2867622ef43fosdl.net!shemminger echo yes 25449bf1f339f77ab40c49f56acd5f0e12cefdeab5osdl.net!shemmingerelse 26b9cb1c9a4bcfb3308721b53e85ff2867622ef43fosdl.net!shemminger echo no 27449bf1f339f77ab40c49f56acd5f0e12cefdeab5osdl.net!shemmingerfi 28e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingerrm -f $TMPDIR/atmtest.c $TMPDIR/atmtest 29f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson} 3063c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 3114743a78eb774d61fd952c4a4856346ced79b9fbAndreas Henrikssoncheck_xt() 32f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson{ 33a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson#check if we have xtables from iptables >= 1.4.5. 34e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingercat >$TMPDIR/ipttest.c <<EOF 35a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson#include <xtables.h> 36a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson#include <linux/netfilter.h> 37a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henrikssonstatic struct xtables_globals test_globals = { 38a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson .option_offset = 0, 39a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson .program_name = "tc-ipt", 40a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson .program_version = XTABLES_VERSION, 41a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson .orig_opts = NULL, 42a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson .opts = NULL, 43a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson .exit_err = NULL, 44a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson}; 45a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson 46a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henrikssonint main(int argc, char **argv) 47a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson{ 48a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson xtables_init_all(&test_globals, NFPROTO_IPV4); 49a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson return 0; 50a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson} 51a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson 52a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas HenrikssonEOF 53a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson 54e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingerif gcc -I$INCLUDE $IPTC -o $TMPDIR/ipttest $TMPDIR/ipttest.c $IPTL $(pkg-config xtables --cflags --libs) -ldl >/dev/null 2>&1 55a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henrikssonthen 56a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson echo "TC_CONFIG_XT:=y" >>Config 57f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson echo "using xtables" 58f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonfi 59e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingerrm -f $TMPDIR/ipttest.c $TMPDIR/ipttest 60f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson} 61f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 6214743a78eb774d61fd952c4a4856346ced79b9fbAndreas Henrikssoncheck_xt_old() 63f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson{ 64f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson# bail if previous XT checks has already succeded. 65f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonif grep TC_CONFIG_XT Config > /dev/null 66f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonthen 67f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson return 68a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henrikssonfi 69a36ceb85d7ae6a9742c35417e80ae837ce9f146dAndreas Henriksson 704f69c63a4b85745898c54f5aee624774f28ca0a2Gilles Espinasse#check if we dont need our internal header .. 71e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingercat >$TMPDIR/ipttest.c <<EOF 7263c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim#include <xtables.h> 7363c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimchar *lib_dir; 7463c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimunsigned int global_option_offset = 0; 7563c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimconst char *program_version = XTABLES_VERSION; 7663c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimconst char *program_name = "tc-ipt"; 7763c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimstruct afinfo afinfo = { 7863c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim .libprefix = "libxt_", 7963c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim}; 8063c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 8163c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimvoid exit_error(enum exittype status, const char *msg, ...) 8263c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim{ 8363c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim} 8463c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 8563c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimint main(int argc, char **argv) { 8663c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 8763c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim return 0; 8863c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim} 8963c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 9063c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi SalimEOF 91e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingergcc -I$INCLUDE $IPTC -o $TMPDIR/ipttest $TMPDIR/ipttest.c $IPTL -ldl >/dev/null 2>&1 9263c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 9363c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimif [ $? -eq 0 ] 9463c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimthen 9580d689d055b2169b390a7cd4ca2c01ba871d02a2Andreas Henriksson echo "TC_CONFIG_XT_OLD:=y" >>Config 96f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson echo "using old xtables (no need for xt-internal.h)" 97f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonfi 98e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingerrm -f $TMPDIR/ipttest.c $TMPDIR/ipttest 99f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson} 100f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 10114743a78eb774d61fd952c4a4856346ced79b9fbAndreas Henrikssoncheck_xt_old_internal_h() 102f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson{ 103f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson# bail if previous XT checks has already succeded. 104f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonif grep TC_CONFIG_XT Config > /dev/null 105f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonthen 106f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson return 10763c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimfi 10863c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 10963c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim#check if we need our own internal.h 110e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingercat >$TMPDIR/ipttest.c <<EOF 11163c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim#include <xtables.h> 11263c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim#include "xt-internal.h" 11363c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimchar *lib_dir; 11463c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimunsigned int global_option_offset = 0; 11563c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimconst char *program_version = XTABLES_VERSION; 11663c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimconst char *program_name = "tc-ipt"; 11763c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimstruct afinfo afinfo = { 11863c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim .libprefix = "libxt_", 11963c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim}; 12063c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 12163c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimvoid exit_error(enum exittype status, const char *msg, ...) 12263c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim{ 12363c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim} 12463c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 12563c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimint main(int argc, char **argv) { 12663c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 12763c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim return 0; 12863c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim} 12963c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 13063c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi SalimEOF 131e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingergcc -I$INCLUDE $IPTC -o $TMPDIR/ipttest $TMPDIR/ipttest.c $IPTL -ldl >/dev/null 2>&1 13263c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salim 13363c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimif [ $? -eq 0 ] 13463c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimthen 135f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson echo "using old xtables with xt-internal.h" 13680d689d055b2169b390a7cd4ca2c01ba871d02a2Andreas Henriksson echo "TC_CONFIG_XT_OLD_H:=y" >>Config 13763c7d26f941df1c7aa4a18bac5b3a777bc66216aJamal Hadi Salimfi 138e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingerrm -f $TMPDIR/ipttest.c $TMPDIR/ipttest 139f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson} 140f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 14114743a78eb774d61fd952c4a4856346ced79b9fbAndreas Henrikssoncheck_ipt() 142f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson{ 143f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson if ! grep TC_CONFIG_XT Config > /dev/null 144f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson then 145f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson echo "using iptables" 146f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson fi 147f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson} 148f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 14912ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henrikssoncheck_ipt_lib_dir() 15012ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson{ 15112ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson IPT_LIB_DIR="" 15212ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson for dir in /lib /usr/lib /usr/local/lib 15312ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson do 15444e743e588bcc737b7a2a5891f90279c58934ad7Dan McGee for file in $dir/{xtables,iptables}/lib*t_*so ; do 15512ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson if [ -f $file ]; then 15644e743e588bcc737b7a2a5891f90279c58934ad7Dan McGee echo ${file%/*} 15744e743e588bcc737b7a2a5891f90279c58934ad7Dan McGee echo "IPT_LIB_DIR:=${file%/*}" >> Config 15812ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson return 15912ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson fi 16012ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson done 16112ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson done 16212ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson echo "not found!" 16312ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson} 16412ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henriksson 1652e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermancheck_setns() 1662e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman{ 167e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingercat >$TMPDIR/setnstest.c <<EOF 1682e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman#include <sched.h> 1692e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermanint main(int argc, char **argv) 1702e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman{ 1712e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman (void)setns(0,0); 1722e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman return 0; 1732e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman} 1742e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. BiedermanEOF 175e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingergcc -I$INCLUDE -o $TMPDIR/setnstest $TMPDIR/setnstest.c >/dev/null 2>&1 1762e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermanif [ $? -eq 0 ] 1772e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermanthen 1782e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman echo "IP_CONFIG_SETNS:=y" >>Config 1792e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman echo "yes" 1802e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermanelse 1812e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman echo "no" 1822e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermanfi 183e557d1ac3a156ba7521ba44b0b412af4542f83f8Stephen Hemmingerrm -f $TMPDIR/setnstest.c $TMPDIR/setnstest 1842e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman} 1852e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman 186f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonecho "# Generated config based on" $INCLUDE >Config 187f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 188f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonecho "TC schedulers" 189f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 190f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonecho -n " ATM " 191f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssoncheck_atm 192f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 193f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssonecho -n " IPT " 194f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssoncheck_xt 195f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssoncheck_xt_old 196f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssoncheck_xt_old_internal_h 197f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henrikssoncheck_ipt 198f1a0125bc090a9310a2a86adc9acf59fc417d44aAndreas Henriksson 19912ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henrikssonecho -n "iptables modules directory: " 20012ddfff76ca4a373d50fd2ac7fff2bd4e0883955Andreas Henrikssoncheck_ipt_lib_dir 2012e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biederman 2022e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermanecho -n "libc has setns: " 2032e8a07f543e6f48f0d0479e3dd4796c18f733e12Eric W. Biedermancheck_setns 204