mirror of
https://git.proxmox.com/git/mirror_iproute2
synced 2025-10-08 06:54:32 +00:00

Try to automatically detect iptables modules directory. Make the configure script look for iptables modules. This also makes it possible to specify it on the command line while building via "make IPT_LIB_DIR=/foo/bar". Signed-off-by: Andreas Henriksson <andreas@fatal.se>
181 lines
3.2 KiB
Bash
Executable File
181 lines
3.2 KiB
Bash
Executable File
#! /bin/bash
|
|
# This is not an autconf generated configure
|
|
#
|
|
INCLUDE=${1:-"$PWD/include"}
|
|
|
|
TABLES=
|
|
|
|
check_atm()
|
|
{
|
|
cat >/tmp/atmtest.c <<EOF
|
|
#include <atm.h>
|
|
int main(int argc, char **argv) {
|
|
struct atm_qos qos;
|
|
(void) text2qos("aal5,ubr:sdu=9180,rx:none",&qos,0);
|
|
return 0;
|
|
}
|
|
EOF
|
|
gcc -I$INCLUDE -o /tmp/atmtest /tmp/atmtest.c -latm >/dev/null 2>&1
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "TC_CONFIG_ATM:=y" >>Config
|
|
echo yes
|
|
else
|
|
echo no
|
|
fi
|
|
rm -f /tmp/atmtest.c /tmp/atmtest
|
|
}
|
|
|
|
check_xt()
|
|
{
|
|
#check if we have xtables from iptables >= 1.4.5.
|
|
cat >/tmp/ipttest.c <<EOF
|
|
#include <xtables.h>
|
|
#include <linux/netfilter.h>
|
|
static struct xtables_globals test_globals = {
|
|
.option_offset = 0,
|
|
.program_name = "tc-ipt",
|
|
.program_version = XTABLES_VERSION,
|
|
.orig_opts = NULL,
|
|
.opts = NULL,
|
|
.exit_err = NULL,
|
|
};
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
xtables_init_all(&test_globals, NFPROTO_IPV4);
|
|
return 0;
|
|
}
|
|
|
|
EOF
|
|
|
|
if gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl -lxtables >/dev/null 2>&1
|
|
then
|
|
echo "TC_CONFIG_XT:=y" >>Config
|
|
echo "using xtables"
|
|
fi
|
|
rm -f /tmp/ipttest.c /tmp/ipttest
|
|
}
|
|
|
|
check_xt_old()
|
|
{
|
|
# bail if previous XT checks has already succeded.
|
|
if grep TC_CONFIG_XT Config > /dev/null
|
|
then
|
|
return
|
|
fi
|
|
|
|
#check if we need dont our internal header ..
|
|
cat >/tmp/ipttest.c <<EOF
|
|
#include <xtables.h>
|
|
char *lib_dir;
|
|
unsigned int global_option_offset = 0;
|
|
const char *program_version = XTABLES_VERSION;
|
|
const char *program_name = "tc-ipt";
|
|
struct afinfo afinfo = {
|
|
.libprefix = "libxt_",
|
|
};
|
|
|
|
void exit_error(enum exittype status, const char *msg, ...)
|
|
{
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
return 0;
|
|
}
|
|
|
|
EOF
|
|
gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1
|
|
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "TC_CONFIG_XT_OLD:=y" >>Config
|
|
echo "using old xtables (no need for xt-internal.h)"
|
|
fi
|
|
rm -f /tmp/ipttest.c /tmp/ipttest
|
|
}
|
|
|
|
check_xt_old_internal_h()
|
|
{
|
|
# bail if previous XT checks has already succeded.
|
|
if grep TC_CONFIG_XT Config > /dev/null
|
|
then
|
|
return
|
|
fi
|
|
|
|
#check if we need our own internal.h
|
|
cat >/tmp/ipttest.c <<EOF
|
|
#include <xtables.h>
|
|
#include "xt-internal.h"
|
|
char *lib_dir;
|
|
unsigned int global_option_offset = 0;
|
|
const char *program_version = XTABLES_VERSION;
|
|
const char *program_name = "tc-ipt";
|
|
struct afinfo afinfo = {
|
|
.libprefix = "libxt_",
|
|
};
|
|
|
|
void exit_error(enum exittype status, const char *msg, ...)
|
|
{
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
return 0;
|
|
}
|
|
|
|
EOF
|
|
gcc -I$INCLUDE $IPTC -o /tmp/ipttest /tmp/ipttest.c $IPTL -ldl >/dev/null 2>&1
|
|
|
|
if [ $? -eq 0 ]
|
|
then
|
|
echo "using old xtables with xt-internal.h"
|
|
echo "TC_CONFIG_XT_OLD_H:=y" >>Config
|
|
fi
|
|
rm -f /tmp/ipttest.c /tmp/ipttest
|
|
}
|
|
|
|
check_ipt()
|
|
{
|
|
if ! grep TC_CONFIG_XT Config > /dev/null
|
|
then
|
|
echo "using iptables"
|
|
TABLES="iptables"
|
|
else
|
|
TABLES="xtables"
|
|
fi
|
|
}
|
|
|
|
check_ipt_lib_dir()
|
|
{
|
|
IPT_LIB_DIR=""
|
|
for dir in /lib /usr/lib /usr/local/lib
|
|
do
|
|
for file in $dir/$TABLES/lib*t_*so ; do
|
|
if [ -f $file ]; then
|
|
echo $dir/$TABLES
|
|
echo "IPT_LIB_DIR:=$dir/$TABLES" >> Config
|
|
return
|
|
fi
|
|
done
|
|
done
|
|
echo "not found!"
|
|
}
|
|
|
|
echo "# Generated config based on" $INCLUDE >Config
|
|
|
|
echo "TC schedulers"
|
|
|
|
echo -n " ATM "
|
|
check_atm
|
|
|
|
echo -n " IPT "
|
|
check_xt
|
|
check_xt_old
|
|
check_xt_old_internal_h
|
|
check_ipt
|
|
|
|
echo -n "iptables modules directory: "
|
|
check_ipt_lib_dir
|