Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Pkg Iptables
Commits
7b095084
Commit
7b095084
authored
Nov 17, 2016
by
Arturo Borrero Gonzalez
Browse files
New upstream version 1.6.0+snapshot20161117
parent
615f9fca
Changes
238
Show whitespace changes
Inline
Side-by-side
iptables/.gitignore
deleted
100644 → 0
View file @
615f9fca
/ip6tables
/ip6tables-save
/ip6tables-restore
/ip6tables-static
/iptables
/iptables.8
/iptables-extensions.8
/iptables-extensions.8.tmpl
/iptables-save
/iptables-save.8
/iptables-restore
/iptables-restore.8
/iptables-static
/iptables-xml
/iptables-xml.1
/xtables-multi
/xtables-config-parser.c
/xtables-config-parser.h
/xtables-config-syntax.c
/xtables.pc
iptables/Makefile.am
View file @
7b095084
...
@@ -4,6 +4,8 @@ AM_CFLAGS = ${regular_CFLAGS}
...
@@ -4,6 +4,8 @@ AM_CFLAGS = ${regular_CFLAGS}
AM_CPPFLAGS
=
${regular_CPPFLAGS}
-I
${top_builddir}
/include
-I
${top_srcdir}
/include
${kinclude_CPPFLAGS}
${libmnl_CFLAGS}
${libnftnl_CFLAGS}
${libnetfilter_conntrack_CFLAGS}
AM_CPPFLAGS
=
${regular_CPPFLAGS}
-I
${top_builddir}
/include
-I
${top_srcdir}
/include
${kinclude_CPPFLAGS}
${libmnl_CFLAGS}
${libnftnl_CFLAGS}
${libnetfilter_conntrack_CFLAGS}
AM_YFLAGS
=
-d
AM_YFLAGS
=
-d
BUILT_SOURCES
=
xtables_multi_SOURCES
=
xtables-multi.c iptables-xml.c
xtables_multi_SOURCES
=
xtables-multi.c iptables-xml.c
xtables_multi_CFLAGS
=
${AM_CFLAGS}
xtables_multi_CFLAGS
=
${AM_CFLAGS}
xtables_multi_LDADD
=
../extensions/libext.a
xtables_multi_LDADD
=
../extensions/libext.a
...
@@ -27,6 +29,7 @@ xtables_multi_LDADD += ../libxtables/libxtables.la -lm
...
@@ -27,6 +29,7 @@ xtables_multi_LDADD += ../libxtables/libxtables.la -lm
# nftables compatibility layer
# nftables compatibility layer
if
ENABLE_NFTABLES
if
ENABLE_NFTABLES
BUILT_SOURCES
+=
xtables-config-parser.h
xtables_compat_multi_SOURCES
=
xtables-compat-multi.c iptables-xml.c
xtables_compat_multi_SOURCES
=
xtables-compat-multi.c iptables-xml.c
xtables_compat_multi_CFLAGS
=
${AM_CFLAGS}
xtables_compat_multi_CFLAGS
=
${AM_CFLAGS}
xtables_compat_multi_LDADD
=
../extensions/libext.a ../extensions/libext_ebt.a
xtables_compat_multi_LDADD
=
../extensions/libext.a ../extensions/libext_ebt.a
...
@@ -40,7 +43,8 @@ xtables_compat_multi_SOURCES += xtables-save.c xtables-restore.c \
...
@@ -40,7 +43,8 @@ xtables_compat_multi_SOURCES += xtables-save.c xtables-restore.c \
nft-shared.c nft-ipv4.c nft-ipv6.c nft-arp.c
\
nft-shared.c nft-ipv4.c nft-ipv6.c nft-arp.c
\
xtables-arp-standalone.c xtables-arp.c
\
xtables-arp-standalone.c xtables-arp.c
\
getethertype.c nft-bridge.c
\
getethertype.c nft-bridge.c
\
xtables-eb-standalone.c xtables-eb.c
xtables-eb-standalone.c xtables-eb.c
\
xtables-translate.c
xtables_compat_multi_LDADD
+=
${libmnl_LIBS}
${libnftnl_LIBS}
${libnetfilter_conntrack_LIBS}
../extensions/libext4.a ../extensions/libext6.a ../extensions/libext_ebt.a ../extensions/libext_arpt.a
xtables_compat_multi_LDADD
+=
${libmnl_LIBS}
${libnftnl_LIBS}
${libnetfilter_conntrack_LIBS}
../extensions/libext4.a ../extensions/libext6.a ../extensions/libext_ebt.a ../extensions/libext_arpt.a
# yacc and lex generate dirty code
# yacc and lex generate dirty code
xtables_compat_multi-xtables-config-parser.o xtables_compat_multi-xtables-config-syntax.o
:
AM_CFLAGS += -Wno-missing-prototypes -Wno-missing-declarations -Wno-implicit-function-declaration -Wno-nested-externs -Wno-undef -Wno-redundant-decls
xtables_compat_multi-xtables-config-parser.o xtables_compat_multi-xtables-config-syntax.o
:
AM_CFLAGS += -Wno-missing-prototypes -Wno-missing-declarations -Wno-implicit-function-declaration -Wno-nested-externs -Wno-undef -Wno-redundant-decls
...
@@ -68,6 +72,8 @@ endif
...
@@ -68,6 +72,8 @@ endif
if
ENABLE_NFTABLES
if
ENABLE_NFTABLES
x_sbin_links
=
iptables-compat iptables-compat-restore iptables-compat-save
\
x_sbin_links
=
iptables-compat iptables-compat-restore iptables-compat-save
\
ip6tables-compat ip6tables-compat-restore ip6tables-compat-save
\
ip6tables-compat ip6tables-compat-restore ip6tables-compat-save
\
iptables-translate ip6tables-translate
\
iptables-restore-translate ip6tables-restore-translate
\
arptables-compat ebtables-compat
arptables-compat ebtables-compat
endif
endif
...
...
iptables/Makefile.in
deleted
100644 → 0
View file @
615f9fca
# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# -*- Makefile -*-
VPATH
=
@srcdir@
am__is_gnu_make
=
test
-n
'
$(MAKEFILE_LIST)
'
&&
test
-n
'
$(MAKELEVEL)
'
am__make_running_with_option
=
\
case
$
${
target_option
-
}
in
\
?
)
;;
\
*
)
echo
"am__make_running_with_option: internal error: invalid"
\
"target option '
$
${
target_option
-
}
' specified"
>
&2
;
\
exit
1
;;
\
esac
;
\
has_opt
=
no
;
\
sane_makeflags
=
$$
MAKEFLAGS
;
\
if
$(am__is_gnu_make)
;
then
\
sane_makeflags
=
$$
MFLAGS
;
\
else
\
case
$$
MAKEFLAGS
in
\
*
\\
[
\ \
]
*
)
\
bs
=
\\
;
\
sane_makeflags
=
`
printf
'%s\n'
"
$$
MAKEFLAGS"
\
|
sed
"s/
$$
bs
$$
bs[
$$
bs
$$
bs ]*//g"
`
;;
\
esac
;
\
fi
;
\
skip_next
=
no
;
\
strip_trailopt
()
\
{
\
flg
=
`
printf
'%s\n'
"
$$
flg"
|
sed
"s/
$$
1.*
$$
//"
`
;
\
}
;
\
for
flg
in
$$
sane_makeflags
;
do
\
test
$$
skip_next
=
yes
&&
{
skip_next
=
no
;
continue
;
}
;
\
case
$$
flg
in
\
*
=
*
|
--
*
)
continue
;;
\
-
*
I
)
strip_trailopt
'I'
;
skip_next
=
yes
;;
\
-
*
I?
*
)
strip_trailopt
'I'
;;
\
-
*
O
)
strip_trailopt
'O'
;
skip_next
=
yes
;;
\
-
*
O?
*
)
strip_trailopt
'O'
;;
\
-
*
l
)
strip_trailopt
'l'
;
skip_next
=
yes
;;
\
-
*
l?
*
)
strip_trailopt
'l'
;;
\
-[dEDm]
)
skip_next
=
yes
;;
\
-[JT]
)
skip_next
=
yes
;;
\
esac
;
\
case
$$
flg
in
\
*
$$
target_option
*
)
has_opt
=
yes
;
break
;;
\
esac
;
\
done
;
\
test
$$
has_opt
=
yes
am__make_dryrun
=
(
target_option
=
n
;
$(am__make_running_with_option)
)
am__make_keepgoing
=
(
target_option
=
k
;
$(am__make_running_with_option)
)
pkgincludedir
=
$(includedir)
/@PACKAGE@
pkglibdir
=
$(libdir)
/@PACKAGE@
pkglibexecdir
=
$(libexecdir)
/@PACKAGE@
am__cd
=
CDPATH
=
"
$
${
ZSH_VERSION
+.
}
$(PATH_SEPARATOR)
"
&&
cd
install_sh_DATA
=
$(install_sh)
-c
-m
644
install_sh_PROGRAM
=
$(install_sh)
-c
install_sh_SCRIPT
=
$(install_sh)
-c
INSTALL_HEADER
=
$(INSTALL_DATA)
transform
=
$(program_transform_name)
NORMAL_INSTALL
=
:
PRE_INSTALL
=
:
POST_INSTALL
=
:
NORMAL_UNINSTALL
=
:
PRE_UNINSTALL
=
:
POST_UNINSTALL
=
:
build_triplet
=
@build@
host_triplet
=
@host@
@ENABLE_STATIC_TRUE@
am__append_1
=
-DALL_INCLUSIVE
@ENABLE_IPV4_TRUE@
am__append_2
=
iptables-save.c iptables-restore.c
\
@ENABLE_IPV4_TRUE@ iptables-standalone.c iptables.c
@ENABLE_IPV4_TRUE@
am__append_3
=
-DENABLE_IPV4
@ENABLE_IPV4_TRUE@
am__append_4
=
../libiptc/libip4tc.la ../extensions/libext4.a
@ENABLE_IPV6_TRUE@
am__append_5
=
ip6tables-save.c ip6tables-restore.c
\
@ENABLE_IPV6_TRUE@ ip6tables-standalone.c ip6tables.c
@ENABLE_IPV6_TRUE@
am__append_6
=
-DENABLE_IPV6
@ENABLE_IPV6_TRUE@
am__append_7
=
../libiptc/libip6tc.la ../extensions/libext6.a
@ENABLE_NFTABLES_TRUE@@ENABLE_STATIC_TRUE@
am__append_8
=
-DALL_INCLUSIVE
sbin_PROGRAMS
=
xtables-multi
$(EXEEXT)
$(am__EXEEXT_1)
@ENABLE_NFTABLES_TRUE@
am__append_9
=
xtables-compat-multi
subdir
=
iptables
DIST_COMMON
=
$(srcdir)
/Makefile.in
$(srcdir)
/Makefile.am
\
$(srcdir)
/xtables.pc.in
$(srcdir)
/iptables.8.in
\
$(srcdir)
/iptables-extensions.8.tmpl.in
\
$(srcdir)
/iptables-save.8.in
$(srcdir)
/iptables-restore.8.in
\
$(srcdir)
/iptables-apply.8.in
$(srcdir)
/iptables-xml.1.in
\
xtables-config-parser.h xtables-config-parser.c
\
xtables-config-syntax.c
$(top_srcdir)
/build-aux/depcomp
\
$(top_srcdir)
/build-aux/ylwrap
ACLOCAL_M4
=
$(top_srcdir)
/aclocal.m4
am__aclocal_m4_deps
=
$(top_srcdir)
/m4/ax_check_linker_flags.m4
\
$(top_srcdir)
/m4/libtool.m4
$(top_srcdir)
/m4/ltoptions.m4
\
$(top_srcdir)
/m4/ltsugar.m4
$(top_srcdir)
/m4/ltversion.m4
\
$(top_srcdir)
/m4/lt~obsolete.m4
$(top_srcdir)
/configure.ac
am__configure_deps
=
$(am__aclocal_m4_deps)
$(CONFIGURE_DEPENDENCIES)
\
$(ACLOCAL_M4)
mkinstalldirs
=
$(install_sh)
-d
CONFIG_HEADER
=
$(top_builddir)
/config.h
CONFIG_CLEAN_FILES
=
xtables.pc iptables.8 iptables-extensions.8.tmpl
\
iptables-save.8 iptables-restore.8 iptables-apply.8
\
iptables-xml.1
CONFIG_CLEAN_VPATH_FILES
=
@ENABLE_NFTABLES_TRUE@
am__EXEEXT_1
=
xtables-compat-multi
$(EXEEXT)
am__installdirs
=
"
$(DESTDIR)$(sbindir)
"
"
$(DESTDIR)$(man1dir)
"
\
"
$(DESTDIR)$(man8dir)
"
"
$(DESTDIR)$(pkgconfigdir)
"
PROGRAMS
=
$(sbin_PROGRAMS)
am__xtables_compat_multi_SOURCES_DIST
=
xtables-compat-multi.c
\
iptables-xml.c xtables-config-parser.y xtables-config-syntax.l
\
xtables-save.c xtables-restore.c xtables-standalone.c
\
xtables.c nft.c nft-shared.c nft-ipv4.c nft-ipv6.c nft-arp.c
\
xtables-arp-standalone.c xtables-arp.c getethertype.c
\
nft-bridge.c xtables-eb-standalone.c xtables-eb.c xshared.c
@ENABLE_NFTABLES_TRUE@
am_xtables_compat_multi_OBJECTS
=
xtables_compat_multi-xtables-compat-multi.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-iptables-xml.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-config-parser.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-config-syntax.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-save.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-restore.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-standalone.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-nft.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-nft-shared.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-nft-ipv4.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-nft-ipv6.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-nft-arp.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-arp-standalone.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-arp.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-getethertype.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-nft-bridge.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-eb-standalone.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xtables-eb.
$(OBJEXT)
\
@ENABLE_NFTABLES_TRUE@ xtables_compat_multi-xshared.
$(OBJEXT)
xtables_compat_multi_OBJECTS
=
$(am_xtables_compat_multi_OBJECTS)
am__DEPENDENCIES_1
=
@ENABLE_NFTABLES_TRUE@
xtables_compat_multi_DEPENDENCIES
=
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext_ebt.a
\
@ENABLE_NFTABLES_TRUE@
$(am__DEPENDENCIES_1)
\
@ENABLE_NFTABLES_TRUE@
$(am__DEPENDENCIES_1)
\
@ENABLE_NFTABLES_TRUE@
$(am__DEPENDENCIES_1)
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext4.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext6.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext_ebt.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext_arpt.a
\
@ENABLE_NFTABLES_TRUE@ ../libxtables/libxtables.la
AM_V_lt
=
$
(
am__v_lt_@AM_V@
)
am__v_lt_
=
$
(
am__v_lt_@AM_DEFAULT_V@
)
am__v_lt_0
=
--silent
am__v_lt_1
=
xtables_compat_multi_LINK
=
$(LIBTOOL)
$(AM_V_lt)
--tag
=
CC
\
$(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS)
--mode
=
link
$(CCLD)
\
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
$(AM_LDFLAGS)
\
$(LDFLAGS)
-o
$@
am__xtables_multi_SOURCES_DIST
=
xtables-multi.c iptables-xml.c
\
iptables-save.c iptables-restore.c iptables-standalone.c
\
iptables.c ip6tables-save.c ip6tables-restore.c
\
ip6tables-standalone.c ip6tables.c xshared.c
@ENABLE_IPV4_TRUE@
am__objects_1
=
\
@ENABLE_IPV4_TRUE@ xtables_multi-iptables-save.
$(OBJEXT)
\
@ENABLE_IPV4_TRUE@ xtables_multi-iptables-restore.
$(OBJEXT)
\
@ENABLE_IPV4_TRUE@ xtables_multi-iptables-standalone.
$(OBJEXT)
\
@ENABLE_IPV4_TRUE@ xtables_multi-iptables.
$(OBJEXT)
@ENABLE_IPV6_TRUE@
am__objects_2
=
\
@ENABLE_IPV6_TRUE@ xtables_multi-ip6tables-save.
$(OBJEXT)
\
@ENABLE_IPV6_TRUE@ xtables_multi-ip6tables-restore.
$(OBJEXT)
\
@ENABLE_IPV6_TRUE@ xtables_multi-ip6tables-standalone.
$(OBJEXT)
\
@ENABLE_IPV6_TRUE@ xtables_multi-ip6tables.
$(OBJEXT)
am_xtables_multi_OBJECTS
=
xtables_multi-xtables-multi.
$(OBJEXT)
\
xtables_multi-iptables-xml.
$(OBJEXT)
$(am__objects_1)
\
$(am__objects_2)
xtables_multi-xshared.
$(OBJEXT)
xtables_multi_OBJECTS
=
$(am_xtables_multi_OBJECTS)
xtables_multi_DEPENDENCIES
=
../extensions/libext.a
$(am__append_4)
\
$(am__append_7)
../libxtables/libxtables.la
xtables_multi_LINK
=
$(LIBTOOL)
$(AM_V_lt)
--tag
=
CC
$(AM_LIBTOOLFLAGS)
\
$(LIBTOOLFLAGS)
--mode
=
link
$(CCLD)
$(xtables_multi_CFLAGS)
\
$(CFLAGS)
$(AM_LDFLAGS)
$(LDFLAGS)
-o
$@
AM_V_P
=
$
(
am__v_P_@AM_V@
)
am__v_P_
=
$
(
am__v_P_@AM_DEFAULT_V@
)
am__v_P_0
=
false
am__v_P_1
=
:
AM_V_GEN
=
$
(
am__v_GEN_@AM_V@
)
am__v_GEN_
=
$
(
am__v_GEN_@AM_DEFAULT_V@
)
am__v_GEN_0
=
@echo
" GEN "
$@
;
am__v_GEN_1
=
AM_V_at
=
$
(
am__v_at_@AM_V@
)
am__v_at_
=
$
(
am__v_at_@AM_DEFAULT_V@
)
am__v_at_0
=
@
am__v_at_1
=
DEFAULT_INCLUDES
=
-I
.@am__isrc@
-I
$(top_builddir)
depcomp
=
$(SHELL)
$(top_srcdir)
/build-aux/depcomp
am__depfiles_maybe
=
depfiles
am__mv
=
mv
-f
COMPILE
=
$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
\
$(CPPFLAGS)
$(AM_CFLAGS)
$(CFLAGS)
LTCOMPILE
=
$(LIBTOOL)
$(AM_V_lt)
--tag
=
CC
$(AM_LIBTOOLFLAGS)
\
$(LIBTOOLFLAGS)
--mode
=
compile
$(CC)
$(DEFS)
\
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
\
$(AM_CFLAGS)
$(CFLAGS)
AM_V_CC
=
$
(
am__v_CC_@AM_V@
)
am__v_CC_
=
$
(
am__v_CC_@AM_DEFAULT_V@
)
am__v_CC_0
=
@echo
" CC "
$@
;
am__v_CC_1
=
CCLD
=
$(CC)
LINK
=
$(LIBTOOL)
$(AM_V_lt)
--tag
=
CC
$(AM_LIBTOOLFLAGS)
\
$(LIBTOOLFLAGS)
--mode
=
link
$(CCLD)
$(AM_CFLAGS)
$(CFLAGS)
\
$(AM_LDFLAGS)
$(LDFLAGS)
-o
$@
AM_V_CCLD
=
$
(
am__v_CCLD_@AM_V@
)
am__v_CCLD_
=
$
(
am__v_CCLD_@AM_DEFAULT_V@
)
am__v_CCLD_0
=
@echo
" CCLD "
$@
;
am__v_CCLD_1
=
LEXCOMPILE
=
$(LEX)
$(AM_LFLAGS)
$(LFLAGS)
LTLEXCOMPILE
=
$(LIBTOOL)
$(AM_V_lt)
$(AM_LIBTOOLFLAGS)
\
$(LIBTOOLFLAGS)
--mode
=
compile
$(LEX)
$(AM_LFLAGS)
$(LFLAGS)
AM_V_LEX
=
$
(
am__v_LEX_@AM_V@
)
am__v_LEX_
=
$
(
am__v_LEX_@AM_DEFAULT_V@
)
am__v_LEX_0
=
@echo
" LEX "
$@
;
am__v_LEX_1
=
YLWRAP
=
$(top_srcdir)
/build-aux/ylwrap
am__yacc_c2h
=
sed
-e
s/cc
$$
/hh/
-e
s/cpp
$$
/hpp/
-e
s/cxx
$$
/hxx/
\
-e
s/c++
$$
/h++/
-e
s/c
$$
/h/
YACCCOMPILE
=
$(YACC)
$(AM_YFLAGS)
$(YFLAGS)
LTYACCCOMPILE
=
$(LIBTOOL)
$(AM_V_lt)
$(AM_LIBTOOLFLAGS)
\
$(LIBTOOLFLAGS)
--mode
=
compile
$(YACC)
$(AM_YFLAGS)
$(YFLAGS)
AM_V_YACC
=
$
(
am__v_YACC_@AM_V@
)
am__v_YACC_
=
$
(
am__v_YACC_@AM_DEFAULT_V@
)
am__v_YACC_0
=
@echo
" YACC "
$@
;
am__v_YACC_1
=
SOURCES
=
$(xtables_compat_multi_SOURCES)
$(xtables_multi_SOURCES)
DIST_SOURCES
=
$(am__xtables_compat_multi_SOURCES_DIST)
\
$(am__xtables_multi_SOURCES_DIST)
am__can_run_installinfo
=
\
case
$$
AM_UPDATE_INFO_DIR
in
\
n|no|NO
)
false
;;
\
*
)
(
install-info
--version
)
>
/dev/null 2>&1
;;
\
esac
am__vpath_adj_setup
=
srcdirstrip
=
`
echo
"
$(srcdir)
"
|
sed
's|.|.|g'
`
;
am__vpath_adj
=
case
$$
p
in
\
$(srcdir)
/
*
)
f
=
`
echo
"
$$
p"
|
sed
"s|^
$$
srcdirstrip/||"
`
;;
\
*
)
f
=
$$
p
;;
\
esac
;
am__strip_dir
=
f
=
`
echo
$$
p |
sed
-e
's|^.*/||'
`
;
am__install_max
=
40
am__nobase_strip_setup
=
\
srcdirstrip
=
`
echo
"
$(srcdir)
"
|
sed
's/[].[^$$\\*|]/\\\\&/g'
`
am__nobase_strip
=
\
for
p
in
$$
list
;
do
echo
"
$$
p"
;
done
|
sed
-e
"s|
$$
srcdirstrip/||"
am__nobase_list
=
$(am__nobase_strip_setup)
;
\
for
p
in
$$
list
;
do
echo
"
$$
p
$$
p"
;
done
|
\
sed
"s|
$$
srcdirstrip/| |;"
' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,'
|
\
$(AWK)
'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] ==
$(am__install_max)
) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list
=
\
sed
'$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
\
sed
'$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir
=
{
\
test
-z
"
$$
files"
\
||
{
test
!
-d
"
$$
dir"
&&
test
!
-f
"
$$
dir"
&&
test
!
-r
"
$$
dir"
;
}
\
||
{
echo
" ( cd '
$$
dir' && rm -f"
$$
files
")"
;
\
$(am__cd)
"
$$
dir"
&&
rm
-f
$$
files
;
}
;
\
}
man1dir
=
$(mandir)
/man1
man8dir
=
$(mandir)
/man8
NROFF
=
nroff
MANS
=
$(man_MANS)
DATA
=
$(pkgconfig_DATA)
am__tagged_files
=
$(HEADERS)
$(SOURCES)
$(TAGS_FILES)
$(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input
=
$(AWK)
'\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files
=
\
list
=
'
$(am__tagged_files)
'
;
\
unique
=
`
for
i
in
$$
list
;
do
\
if
test
-f
"
$$
i"
;
then
echo
$$
i
;
else
echo
$(srcdir)
/
$$
i
;
fi
;
\
done
|
$(am__uniquify_input)
`
ETAGS
=
etags
CTAGS
=
ctags
DISTFILES
=
$(DIST_COMMON)
$(DIST_SOURCES)
$(TEXINFOS)
$(EXTRA_DIST)
pkgdatadir
=
@pkgdatadir@
ACLOCAL
=
@ACLOCAL@
AMTAR
=
@AMTAR@
AM_DEFAULT_VERBOSITY
=
@AM_DEFAULT_VERBOSITY@
AR
=
@AR@
AUTOCONF
=
@AUTOCONF@
AUTOHEADER
=
@AUTOHEADER@
AUTOMAKE
=
@AUTOMAKE@
AWK
=
@AWK@
CC
=
@CC@
CCDEPMODE
=
@CCDEPMODE@
CFLAGS
=
@CFLAGS@
CPP
=
@CPP@
CPPFLAGS
=
@CPPFLAGS@
CYGPATH_W
=
@CYGPATH_W@
DEFS
=
@DEFS@
DEPDIR
=
@DEPDIR@
DLLTOOL
=
@DLLTOOL@
DSYMUTIL
=
@DSYMUTIL@
DUMPBIN
=
@DUMPBIN@
ECHO_C
=
@ECHO_C@
ECHO_N
=
@ECHO_N@
ECHO_T
=
@ECHO_T@
EGREP
=
@EGREP@
EXEEXT
=
@EXEEXT@
FGREP
=
@FGREP@
GREP
=
@GREP@
INSTALL
=
@INSTALL@
INSTALL_DATA
=
@INSTALL_DATA@
INSTALL_PROGRAM
=
@INSTALL_PROGRAM@
INSTALL_SCRIPT
=
@INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM
=
@INSTALL_STRIP_PROGRAM@
LD
=
@LD@
LDFLAGS
=
@LDFLAGS@
LEX
=
@LEX@
LEXLIB
=
@LEXLIB@
LEX_OUTPUT_ROOT
=
@LEX_OUTPUT_ROOT@
LIBOBJS
=
@LIBOBJS@
LIBS
=
@LIBS@
LIBTOOL
=
@LIBTOOL@
LIPO
=
@LIPO@
LN_S
=
@LN_S@
LTLIBOBJS
=
@LTLIBOBJS@
MAKEINFO
=
@MAKEINFO@
MANIFEST_TOOL
=
@MANIFEST_TOOL@
MKDIR_P
=
@MKDIR_P@
NM
=
@NM@
NMEDIT
=
@NMEDIT@
OBJDUMP
=
@OBJDUMP@
OBJEXT
=
@OBJEXT@
OTOOL
=
@OTOOL@
OTOOL64
=
@OTOOL64@
PACKAGE
=
@PACKAGE@
PACKAGE_BUGREPORT
=
@PACKAGE_BUGREPORT@
PACKAGE_NAME
=
@PACKAGE_NAME@
PACKAGE_STRING
=
@PACKAGE_STRING@
PACKAGE_TARNAME
=
@PACKAGE_TARNAME@
PACKAGE_URL
=
@PACKAGE_URL@
PACKAGE_VERSION
=
@PACKAGE_VERSION@
PATH_SEPARATOR
=
@PATH_SEPARATOR@
PKG_CONFIG
=
@PKG_CONFIG@
PKG_CONFIG_LIBDIR
=
@PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH
=
@PKG_CONFIG_PATH@
RANLIB
=
@RANLIB@
SED
=
@SED@
SET_MAKE
=
@SET_MAKE@
SHELL
=
@SHELL@
STRIP
=
@STRIP@
VERSION
=
@VERSION@
YACC
=
@YACC@
YFLAGS
=
@YFLAGS@
abs_builddir
=
@abs_builddir@
abs_srcdir
=
@abs_srcdir@
abs_top_builddir
=
@abs_top_builddir@
abs_top_srcdir
=
@abs_top_srcdir@
ac_ct_AR
=
@ac_ct_AR@
ac_ct_CC
=
@ac_ct_CC@
ac_ct_DUMPBIN
=
@ac_ct_DUMPBIN@
am__include
=
@am__include@
am__leading_dot
=
@am__leading_dot@
am__quote
=
@am__quote@
am__tar
=
@am__tar@
am__untar
=
@am__untar@
bindir
=
@bindir@
blacklist_4_modules
=
@blacklist_4_modules@
blacklist_6_modules
=
@blacklist_6_modules@
blacklist_a_modules
=
@blacklist_a_modules@
blacklist_b_modules
=
@blacklist_b_modules@
blacklist_modules
=
@blacklist_modules@
blacklist_x_modules
=
@blacklist_x_modules@
build
=
@build@
build_alias
=
@build_alias@
build_cpu
=
@build_cpu@
build_os
=
@build_os@
build_vendor
=
@build_vendor@
builddir
=
@builddir@
datadir
=
@datadir@
datarootdir
=
@datarootdir@
docdir
=
@docdir@
dvidir
=
@dvidir@
exec_prefix
=
@exec_prefix@
host
=
@host@
host_alias
=
@host_alias@
host_cpu
=
@host_cpu@
host_os
=
@host_os@
host_vendor
=
@host_vendor@
htmldir
=
@htmldir@
includedir
=
@includedir@
infodir
=
@infodir@
install_sh
=
@install_sh@
kbuilddir
=
@kbuilddir@
kinclude_CPPFLAGS
=
@kinclude_CPPFLAGS@
ksourcedir
=
@ksourcedir@
libdir
=
@libdir@
libexecdir
=
@libexecdir@
libiptc_LDFLAGS2
=
@libiptc_LDFLAGS2@
libmnl_CFLAGS
=
@libmnl_CFLAGS@
libmnl_LIBS
=
@libmnl_LIBS@
libnetfilter_conntrack_CFLAGS
=
@libnetfilter_conntrack_CFLAGS@
libnetfilter_conntrack_LIBS
=
@libnetfilter_conntrack_LIBS@
libnfnetlink_CFLAGS
=
@libnfnetlink_CFLAGS@
libnfnetlink_LIBS
=
@libnfnetlink_LIBS@
libnftnl_CFLAGS
=
@libnftnl_CFLAGS@
libnftnl_LIBS
=
@libnftnl_LIBS@
libxtables_vage
=
@libxtables_vage@
libxtables_vcurrent
=
@libxtables_vcurrent@
libxtables_vmajor
=
@libxtables_vmajor@
localedir
=
@localedir@
localstatedir
=
@localstatedir@
mandir
=
@mandir@
mkdir_p
=
@mkdir_p@
noundef_LDFLAGS
=
@noundef_LDFLAGS@
oldincludedir
=
@oldincludedir@
pdfdir
=
@pdfdir@
pkgconfigdir
=
@pkgconfigdir@
prefix
=
@prefix@
program_transform_name
=
@program_transform_name@
psdir
=
@psdir@
regular_CFLAGS
=
@regular_CFLAGS@
regular_CPPFLAGS
=
@regular_CPPFLAGS@
sbindir
=
@sbindir@
sharedstatedir
=
@sharedstatedir@
srcdir
=
@srcdir@
sysconfdir
=
@sysconfdir@
target_alias
=
@target_alias@
top_build_prefix
=
@top_build_prefix@
top_builddir
=
@top_builddir@
top_srcdir
=
@top_srcdir@
xtlibdir
=
@xtlibdir@
AM_CFLAGS
=
${regular_CFLAGS}
AM_CPPFLAGS
=
${regular_CPPFLAGS}
-I
${top_builddir}
/include
-I
${top_srcdir}
/include
${kinclude_CPPFLAGS}
${libmnl_CFLAGS}
${libnftnl_CFLAGS}
${libnetfilter_conntrack_CFLAGS}
AM_YFLAGS
=
-d
xtables_multi_SOURCES
=
xtables-multi.c iptables-xml.c
$(am__append_2)
\
$(am__append_5)
xshared.c
xtables_multi_CFLAGS
=
${AM_CFLAGS}
$(am__append_1)
$(am__append_3)
\
$(am__append_6)
xtables_multi_LDADD
=
../extensions/libext.a
$(am__append_4)
\
$(am__append_7)
../libxtables/libxtables.la
-lm
# nftables compatibility layer
@ENABLE_NFTABLES_TRUE@
xtables_compat_multi_SOURCES
=
\
@ENABLE_NFTABLES_TRUE@ xtables-compat-multi.c iptables-xml.c
\
@ENABLE_NFTABLES_TRUE@ xtables-config-parser.y
\
@ENABLE_NFTABLES_TRUE@ xtables-config-syntax.l xtables-save.c
\
@ENABLE_NFTABLES_TRUE@ xtables-restore.c xtables-standalone.c
\
@ENABLE_NFTABLES_TRUE@ xtables.c nft.c nft-shared.c nft-ipv4.c
\
@ENABLE_NFTABLES_TRUE@ nft-ipv6.c nft-arp.c
\
@ENABLE_NFTABLES_TRUE@ xtables-arp-standalone.c xtables-arp.c
\
@ENABLE_NFTABLES_TRUE@ getethertype.c nft-bridge.c
\
@ENABLE_NFTABLES_TRUE@ xtables-eb-standalone.c xtables-eb.c
\
@ENABLE_NFTABLES_TRUE@ xshared.c
@ENABLE_NFTABLES_TRUE@
xtables_compat_multi_CFLAGS
=
${AM_CFLAGS}
\
@ENABLE_NFTABLES_TRUE@
$(am__append_8)
-DENABLE_NFTABLES
\
@ENABLE_NFTABLES_TRUE@
-DENABLE_IPV4
-DENABLE_IPV6
@ENABLE_NFTABLES_TRUE@
xtables_compat_multi_LDADD
=
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext_ebt.a
\
@ENABLE_NFTABLES_TRUE@
${libmnl_LIBS}
${libnftnl_LIBS}
\
@ENABLE_NFTABLES_TRUE@
${libnetfilter_conntrack_LIBS}
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext4.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext6.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext_ebt.a
\
@ENABLE_NFTABLES_TRUE@ ../extensions/libext_arpt.a
\
@ENABLE_NFTABLES_TRUE@ ../libxtables/libxtables.la
-lm
man_MANS
=
iptables.8 iptables-restore.8 iptables-save.8
\
iptables-xml.1 ip6tables.8 ip6tables-restore.8
\
ip6tables-save.8 iptables-extensions.8
CLEANFILES
=
iptables.8
\
xtables-config-parser.c xtables-config-syntax.c
vx_bin_links
=
iptables-xml
@ENABLE_IPV4_TRUE@
v4_sbin_links
=
iptables iptables-restore iptables-save
@ENABLE_IPV6_TRUE@
v6_sbin_links
=
ip6tables ip6tables-restore ip6tables-save
@ENABLE_NFTABLES_TRUE@
x_sbin_links
=
iptables-compat iptables-compat-restore iptables-compat-save
\
@ENABLE_NFTABLES_TRUE@ ip6tables-compat ip6tables-compat-restore ip6tables-compat-save
\
@ENABLE_NFTABLES_TRUE@ arptables-compat ebtables-compat
pkgconfig_DATA
=
xtables.pc
all
:
all-am
.SUFFIXES
:
.SUFFIXES
:
.c .l .lo .o .obj .y
$(srcdir)/Makefile.in
:
$(srcdir)/Makefile.am $(am__configure_deps)
@
for
dep
in
$?
;
do
\
case
'
$(am__configure_deps)
'
in
\
*
$$
dep
*
)
\
(
cd
$(top_builddir)
&&
$(MAKE)
$(AM_MAKEFLAGS)
am--refresh
)
\
&&
{
if
test
-f
$@
;
then
exit
0
;
else
break
;
fi
;
}
;
\
exit
1
;;
\
esac
;
\
done
;
\
echo
' cd
$(top_srcdir)
&&
$(AUTOMAKE)
--gnu iptables/Makefile'
;
\
$(am__cd)
$(top_srcdir)
&&
\
$(AUTOMAKE)
--gnu
iptables/Makefile
.PRECIOUS
:
Makefile
Makefile
:
$(srcdir)/Makefile.in $(top_builddir)/config.status
@
case
'$?'
in
\
*
config.status
*
)
\
cd
$(top_builddir)
&&
$(MAKE)
$(AM_MAKEFLAGS)
am--refresh
;;
\
*
)
\
echo
' cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/$@
$(am__depfiles_maybe)
'
;
\
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
$(am__depfiles_maybe)
;;
\
esac
;
$(top_builddir)/config.status
:
$(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd
$(top_builddir)
&&
$(MAKE)
$(AM_MAKEFLAGS)
am--refresh
$(top_srcdir)/configure
:
$(am__configure_deps)
cd
$(top_builddir)
&&
$(MAKE)
$(AM_MAKEFLAGS)
am--refresh
$(ACLOCAL_M4)
:
$(am__aclocal_m4_deps)
cd
$(top_builddir)
&&
$(MAKE)
$(AM_MAKEFLAGS)
am--refresh
$(am__aclocal_m4_deps)
:
xtables.pc
:
$(top_builddir)/config.status $(srcdir)/xtables.pc.in
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
iptables.8
:
$(top_builddir)/config.status $(srcdir)/iptables.8.in
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
iptables-extensions.8.tmpl
:
$(top_builddir)/config.status $(srcdir)/iptables-extensions.8.tmpl.in
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
iptables-save.8
:
$(top_builddir)/config.status $(srcdir)/iptables-save.8.in
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
iptables-restore.8
:
$(top_builddir)/config.status $(srcdir)/iptables-restore.8.in
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
iptables-apply.8
:
$(top_builddir)/config.status $(srcdir)/iptables-apply.8.in
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
iptables-xml.1
:
$(top_builddir)/config.status $(srcdir)/iptables-xml.1.in
cd
$(top_builddir)
&&
$(SHELL)
./config.status
$(subdir)
/
$@
install-sbinPROGRAMS
:
$(sbin_PROGRAMS)
@
$(NORMAL_INSTALL)
@
list
=
'
$(sbin_PROGRAMS)
'
;
test
-n
"
$(sbindir)
"
||
list
=
;
\
if
test
-n
"
$$
list"
;
then
\
echo
"
$(MKDIR_P)
'
$(DESTDIR)$(sbindir)
'"
;
\
$(MKDIR_P)
"
$(DESTDIR)$(sbindir)
"
||
exit
1
;
\
fi
;
\
for
p
in
$$
list
;
do
echo
"
$$
p
$$
p"
;
done
|
\
sed
's/
$(EXEEXT)
$$//'
|
\
while
read
p p1
;
do if
test
-f
$$
p
\
||
test
-f
$$
p1
\
;
then
echo
"
$$
p"
;
echo
"
$$
p"
;
else
:
;
fi
;
\
done
|
\
sed
-e
'p;s,.*/,,;n;h'
\
-e
's|.*|.|'
\
-e
'p;x;s,.*/,,;s/
$(EXEEXT)
$$//;
$(transform)
;s/$$/
$(EXEEXT)
/'
|
\
sed
'N;N;N;s,\n, ,g'
|
\
$(AWK)
'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }'
|
\
while
read type dir
files
;
do
\
if
test
"
$$
dir"
=
.
;
then
dir
=
;
else
dir
=
/
$$
dir
;
fi
;
\
test
-z
"
$$
files"
||
{
\
echo
"
$(INSTALL_PROGRAM_ENV)
$(LIBTOOL)
$(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS)
--mode=install
$(INSTALL_PROGRAM)
$$
files '
$(DESTDIR)$(sbindir)$$
dir'"
;
\
$(INSTALL_PROGRAM_ENV)
$(LIBTOOL)
$(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS)
--mode
=
install
$(INSTALL_PROGRAM)
$$
files
"
$(DESTDIR)$(sbindir)$$
dir"
||
exit
$$
?
;
\
}
\
;
done
uninstall-sbinPROGRAMS
:
@
$(NORMAL_UNINSTALL)
@
list
=
'
$(sbin_PROGRAMS)
'
;
test
-n
"
$(sbindir)
"
||
list
=
;
\
files
=
`
for
p
in
$$
list
;
do
echo
"
$$
p"
;
done
|
\
sed
-e
'h;s,^.*/,,;s/
$(EXEEXT)
$$//;
$(transform)
'
\
-e
's/$$/
$(EXEEXT)
/'
\
`
;
\
test
-n
"
$$
list"
||
exit
0
;
\
echo
" ( cd '
$(DESTDIR)$(sbindir)
' && rm -f"
$$
files
")"
;
\
cd
"
$(DESTDIR)$(sbindir)
"
&&
rm
-f
$$
files
clean-sbinPROGRAMS
:
@
list
=
'
$(sbin_PROGRAMS)
'
;
test
-n
"
$$
list"
||
exit
0
;
\
echo
" rm -f"
$$
list
;
\
rm
-f
$$
list
||
exit
$$
?
;
\
test
-n
"
$(EXEEXT)
"
||
exit
0
;
\
list
=
`
for
p
in
$$
list
;
do
echo
"
$$
p"
;
done
|
sed
's/
$(EXEEXT)
$$//'
`
;
\
echo
" rm -f"
$$
list
;
\
rm
-f
$$
list
xtables-config-parser.h
:
xtables-config-parser.c
@
if
test
!
-f
$@
;
then
rm
-f
xtables-config-parser.c
;
else
:
;
fi
@
if
test
!
-f
$@
;
then
$(MAKE)
$(AM_MAKEFLAGS)
xtables-config-parser.c
;
else
:
;
fi
xtables-compat-multi$(EXEEXT)
:
$(xtables_compat_multi_OBJECTS) $(xtables_compat_multi_DEPENDENCIES) $(EXTRA_xtables_compat_multi_DEPENDENCIES)
@
rm
-f
xtables-compat-multi
$(EXEEXT)
$(AM_V_CCLD)$(xtables_compat_multi_LINK)
$(xtables_compat_multi_OBJECTS)
$(xtables_compat_multi_LDADD)
$(LIBS)
xtables-multi$(EXEEXT)
:
$(xtables_multi_OBJECTS) $(xtables_multi_DEPENDENCIES) $(EXTRA_xtables_multi_DEPENDENCIES)
@
rm
-f
xtables-multi
$(EXEEXT)
$(AM_V_CCLD)$(xtables_multi_LINK)
$(xtables_multi_OBJECTS)
$(xtables_multi_LDADD)
$(LIBS)
mostlyclean-compile
:
-
rm
-f
*
.
$(OBJEXT)
distclean-compile
:
-
rm
-f
*
.tab.c
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-getethertype.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-iptables-xml.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-nft-arp.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-nft-bridge.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-nft-ipv4.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-nft-ipv6.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-nft-shared.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-nft.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xshared.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-arp-standalone.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-arp.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-compat-multi.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-config-parser.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-config-syntax.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-eb-standalone.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-eb.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-restore.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-save.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables-standalone.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_compat_multi-xtables.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-ip6tables-restore.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-ip6tables-save.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-ip6tables-standalone.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-ip6tables.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-iptables-restore.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-iptables-save.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-iptables-standalone.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-iptables-xml.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-iptables.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-xshared.Po@am__quote@
@AMDEP_TRUE@@am__include@
@am__quote@./$(DEPDIR)/xtables_multi-xtables-multi.Po@am__quote@
.c.o
:
@am__fastdepCC_TRUE@
$(AM_V_CC)$(COMPILE)
-MT
$@
-MD
-MP
-MF
$(DEPDIR)/$*.Tpo
-c
-o
$@
$<
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/$*.Tpo
$(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'$<'
object
=
'$@'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(COMPILE)
-c
-o
$@
$<
.c.obj
:
@am__fastdepCC_TRUE@
$(AM_V_CC)$(COMPILE)
-MT
$@
-MD
-MP
-MF
$(DEPDIR)/$*.Tpo
-c
-o
$@
`$(CYGPATH_W)
'$<'
`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/$*.Tpo
$(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'$<'
object
=
'$@'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(COMPILE)
-c
-o
$@
`$(CYGPATH_W)
'$<'
`
.c.lo
:
@am__fastdepCC_TRUE@
$(AM_V_CC)$(LTCOMPILE)
-MT
$@
-MD
-MP
-MF
$(DEPDIR)/$*.Tpo
-c
-o
$@
$<
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/$*.Tpo
$(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'$<'
object
=
'$@'
libtool
=
yes
@AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(LTCOMPILE)
-c
-o
$@
$<
xtables_compat_multi-xtables-compat-multi.o
:
xtables-compat-multi.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-compat-multi.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-compat-multi.Tpo
-c
-o
xtables_compat_multi-xtables-compat-multi.o
`test
-f
'xtables-compat-multi.c'
||
echo
'$(srcdir)/'
`xtables-compat-multi.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-compat-multi.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-compat-multi.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-compat-multi.c'
object
=
'xtables_compat_multi-xtables-compat-multi.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-compat-multi.o
`test
-f
'xtables-compat-multi.c'
||
echo
'$(srcdir)/'
`xtables-compat-multi.c
xtables_compat_multi-xtables-compat-multi.obj
:
xtables-compat-multi.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-compat-multi.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-compat-multi.Tpo
-c
-o
xtables_compat_multi-xtables-compat-multi.obj
`if
test
-f
'xtables-compat-multi.c'
;
then
$(CYGPATH_W)
'xtables-compat-multi.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-compat-multi.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-compat-multi.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-compat-multi.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-compat-multi.c'
object
=
'xtables_compat_multi-xtables-compat-multi.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-compat-multi.obj
`if
test
-f
'xtables-compat-multi.c'
;
then
$(CYGPATH_W)
'xtables-compat-multi.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-compat-multi.c'
;
fi`
xtables_compat_multi-iptables-xml.o
:
iptables-xml.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-iptables-xml.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-iptables-xml.Tpo
-c
-o
xtables_compat_multi-iptables-xml.o
`test
-f
'iptables-xml.c'
||
echo
'$(srcdir)/'
`iptables-xml.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-iptables-xml.Tpo
$(DEPDIR)/xtables_compat_multi-iptables-xml.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-xml.c'
object
=
'xtables_compat_multi-iptables-xml.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-iptables-xml.o
`test
-f
'iptables-xml.c'
||
echo
'$(srcdir)/'
`iptables-xml.c
xtables_compat_multi-iptables-xml.obj
:
iptables-xml.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-iptables-xml.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-iptables-xml.Tpo
-c
-o
xtables_compat_multi-iptables-xml.obj
`if
test
-f
'iptables-xml.c'
;
then
$(CYGPATH_W)
'iptables-xml.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-xml.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-iptables-xml.Tpo
$(DEPDIR)/xtables_compat_multi-iptables-xml.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-xml.c'
object
=
'xtables_compat_multi-iptables-xml.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-iptables-xml.obj
`if
test
-f
'iptables-xml.c'
;
then
$(CYGPATH_W)
'iptables-xml.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-xml.c'
;
fi`
xtables_compat_multi-xtables-config-parser.o
:
xtables-config-parser.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-config-parser.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-config-parser.Tpo
-c
-o
xtables_compat_multi-xtables-config-parser.o
`test
-f
'xtables-config-parser.c'
||
echo
'$(srcdir)/'
`xtables-config-parser.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-config-parser.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-config-parser.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-config-parser.c'
object
=
'xtables_compat_multi-xtables-config-parser.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-config-parser.o
`test
-f
'xtables-config-parser.c'
||
echo
'$(srcdir)/'
`xtables-config-parser.c
xtables_compat_multi-xtables-config-parser.obj
:
xtables-config-parser.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-config-parser.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-config-parser.Tpo
-c
-o
xtables_compat_multi-xtables-config-parser.obj
`if
test
-f
'xtables-config-parser.c'
;
then
$(CYGPATH_W)
'xtables-config-parser.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-config-parser.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-config-parser.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-config-parser.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-config-parser.c'
object
=
'xtables_compat_multi-xtables-config-parser.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-config-parser.obj
`if
test
-f
'xtables-config-parser.c'
;
then
$(CYGPATH_W)
'xtables-config-parser.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-config-parser.c'
;
fi`
xtables_compat_multi-xtables-config-syntax.o
:
xtables-config-syntax.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-config-syntax.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-config-syntax.Tpo
-c
-o
xtables_compat_multi-xtables-config-syntax.o
`test
-f
'xtables-config-syntax.c'
||
echo
'$(srcdir)/'
`xtables-config-syntax.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-config-syntax.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-config-syntax.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-config-syntax.c'
object
=
'xtables_compat_multi-xtables-config-syntax.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-config-syntax.o
`test
-f
'xtables-config-syntax.c'
||
echo
'$(srcdir)/'
`xtables-config-syntax.c
xtables_compat_multi-xtables-config-syntax.obj
:
xtables-config-syntax.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-config-syntax.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-config-syntax.Tpo
-c
-o
xtables_compat_multi-xtables-config-syntax.obj
`if
test
-f
'xtables-config-syntax.c'
;
then
$(CYGPATH_W)
'xtables-config-syntax.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-config-syntax.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-config-syntax.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-config-syntax.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-config-syntax.c'
object
=
'xtables_compat_multi-xtables-config-syntax.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-config-syntax.obj
`if
test
-f
'xtables-config-syntax.c'
;
then
$(CYGPATH_W)
'xtables-config-syntax.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-config-syntax.c'
;
fi`
xtables_compat_multi-xtables-save.o
:
xtables-save.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-save.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-save.Tpo
-c
-o
xtables_compat_multi-xtables-save.o
`test
-f
'xtables-save.c'
||
echo
'$(srcdir)/'
`xtables-save.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-save.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-save.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-save.c'
object
=
'xtables_compat_multi-xtables-save.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-save.o
`test
-f
'xtables-save.c'
||
echo
'$(srcdir)/'
`xtables-save.c
xtables_compat_multi-xtables-save.obj
:
xtables-save.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-save.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-save.Tpo
-c
-o
xtables_compat_multi-xtables-save.obj
`if
test
-f
'xtables-save.c'
;
then
$(CYGPATH_W)
'xtables-save.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-save.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-save.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-save.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-save.c'
object
=
'xtables_compat_multi-xtables-save.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-save.obj
`if
test
-f
'xtables-save.c'
;
then
$(CYGPATH_W)
'xtables-save.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-save.c'
;
fi`
xtables_compat_multi-xtables-restore.o
:
xtables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-restore.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-restore.Tpo
-c
-o
xtables_compat_multi-xtables-restore.o
`test
-f
'xtables-restore.c'
||
echo
'$(srcdir)/'
`xtables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-restore.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-restore.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-restore.c'
object
=
'xtables_compat_multi-xtables-restore.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-restore.o
`test
-f
'xtables-restore.c'
||
echo
'$(srcdir)/'
`xtables-restore.c
xtables_compat_multi-xtables-restore.obj
:
xtables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-restore.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-restore.Tpo
-c
-o
xtables_compat_multi-xtables-restore.obj
`if
test
-f
'xtables-restore.c'
;
then
$(CYGPATH_W)
'xtables-restore.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-restore.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-restore.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-restore.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-restore.c'
object
=
'xtables_compat_multi-xtables-restore.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-restore.obj
`if
test
-f
'xtables-restore.c'
;
then
$(CYGPATH_W)
'xtables-restore.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-restore.c'
;
fi`
xtables_compat_multi-xtables-standalone.o
:
xtables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-standalone.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-standalone.Tpo
-c
-o
xtables_compat_multi-xtables-standalone.o
`test
-f
'xtables-standalone.c'
||
echo
'$(srcdir)/'
`xtables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-standalone.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-standalone.c'
object
=
'xtables_compat_multi-xtables-standalone.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-standalone.o
`test
-f
'xtables-standalone.c'
||
echo
'$(srcdir)/'
`xtables-standalone.c
xtables_compat_multi-xtables-standalone.obj
:
xtables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-standalone.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-standalone.Tpo
-c
-o
xtables_compat_multi-xtables-standalone.obj
`if
test
-f
'xtables-standalone.c'
;
then
$(CYGPATH_W)
'xtables-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-standalone.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-standalone.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-standalone.c'
object
=
'xtables_compat_multi-xtables-standalone.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-standalone.obj
`if
test
-f
'xtables-standalone.c'
;
then
$(CYGPATH_W)
'xtables-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-standalone.c'
;
fi`
xtables_compat_multi-xtables.o
:
xtables.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables.Tpo
-c
-o
xtables_compat_multi-xtables.o
`test
-f
'xtables.c'
||
echo
'$(srcdir)/'
`xtables.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables.Tpo
$(DEPDIR)/xtables_compat_multi-xtables.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables.c'
object
=
'xtables_compat_multi-xtables.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables.o
`test
-f
'xtables.c'
||
echo
'$(srcdir)/'
`xtables.c
xtables_compat_multi-xtables.obj
:
xtables.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables.Tpo
-c
-o
xtables_compat_multi-xtables.obj
`if
test
-f
'xtables.c'
;
then
$(CYGPATH_W)
'xtables.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables.Tpo
$(DEPDIR)/xtables_compat_multi-xtables.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables.c'
object
=
'xtables_compat_multi-xtables.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables.obj
`if
test
-f
'xtables.c'
;
then
$(CYGPATH_W)
'xtables.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables.c'
;
fi`
xtables_compat_multi-nft.o
:
nft.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft.Tpo
-c
-o
xtables_compat_multi-nft.o
`test
-f
'nft.c'
||
echo
'$(srcdir)/'
`nft.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft.Tpo
$(DEPDIR)/xtables_compat_multi-nft.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft.c'
object
=
'xtables_compat_multi-nft.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft.o
`test
-f
'nft.c'
||
echo
'$(srcdir)/'
`nft.c
xtables_compat_multi-nft.obj
:
nft.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft.Tpo
-c
-o
xtables_compat_multi-nft.obj
`if
test
-f
'nft.c'
;
then
$(CYGPATH_W)
'nft.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft.Tpo
$(DEPDIR)/xtables_compat_multi-nft.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft.c'
object
=
'xtables_compat_multi-nft.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft.obj
`if
test
-f
'nft.c'
;
then
$(CYGPATH_W)
'nft.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft.c'
;
fi`
xtables_compat_multi-nft-shared.o
:
nft-shared.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-shared.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-shared.Tpo
-c
-o
xtables_compat_multi-nft-shared.o
`test
-f
'nft-shared.c'
||
echo
'$(srcdir)/'
`nft-shared.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-shared.Tpo
$(DEPDIR)/xtables_compat_multi-nft-shared.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-shared.c'
object
=
'xtables_compat_multi-nft-shared.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-shared.o
`test
-f
'nft-shared.c'
||
echo
'$(srcdir)/'
`nft-shared.c
xtables_compat_multi-nft-shared.obj
:
nft-shared.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-shared.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-shared.Tpo
-c
-o
xtables_compat_multi-nft-shared.obj
`if
test
-f
'nft-shared.c'
;
then
$(CYGPATH_W)
'nft-shared.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-shared.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-shared.Tpo
$(DEPDIR)/xtables_compat_multi-nft-shared.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-shared.c'
object
=
'xtables_compat_multi-nft-shared.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-shared.obj
`if
test
-f
'nft-shared.c'
;
then
$(CYGPATH_W)
'nft-shared.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-shared.c'
;
fi`
xtables_compat_multi-nft-ipv4.o
:
nft-ipv4.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-ipv4.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-ipv4.Tpo
-c
-o
xtables_compat_multi-nft-ipv4.o
`test
-f
'nft-ipv4.c'
||
echo
'$(srcdir)/'
`nft-ipv4.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-ipv4.Tpo
$(DEPDIR)/xtables_compat_multi-nft-ipv4.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-ipv4.c'
object
=
'xtables_compat_multi-nft-ipv4.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-ipv4.o
`test
-f
'nft-ipv4.c'
||
echo
'$(srcdir)/'
`nft-ipv4.c
xtables_compat_multi-nft-ipv4.obj
:
nft-ipv4.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-ipv4.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-ipv4.Tpo
-c
-o
xtables_compat_multi-nft-ipv4.obj
`if
test
-f
'nft-ipv4.c'
;
then
$(CYGPATH_W)
'nft-ipv4.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-ipv4.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-ipv4.Tpo
$(DEPDIR)/xtables_compat_multi-nft-ipv4.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-ipv4.c'
object
=
'xtables_compat_multi-nft-ipv4.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-ipv4.obj
`if
test
-f
'nft-ipv4.c'
;
then
$(CYGPATH_W)
'nft-ipv4.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-ipv4.c'
;
fi`
xtables_compat_multi-nft-ipv6.o
:
nft-ipv6.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-ipv6.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-ipv6.Tpo
-c
-o
xtables_compat_multi-nft-ipv6.o
`test
-f
'nft-ipv6.c'
||
echo
'$(srcdir)/'
`nft-ipv6.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-ipv6.Tpo
$(DEPDIR)/xtables_compat_multi-nft-ipv6.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-ipv6.c'
object
=
'xtables_compat_multi-nft-ipv6.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-ipv6.o
`test
-f
'nft-ipv6.c'
||
echo
'$(srcdir)/'
`nft-ipv6.c
xtables_compat_multi-nft-ipv6.obj
:
nft-ipv6.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-ipv6.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-ipv6.Tpo
-c
-o
xtables_compat_multi-nft-ipv6.obj
`if
test
-f
'nft-ipv6.c'
;
then
$(CYGPATH_W)
'nft-ipv6.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-ipv6.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-ipv6.Tpo
$(DEPDIR)/xtables_compat_multi-nft-ipv6.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-ipv6.c'
object
=
'xtables_compat_multi-nft-ipv6.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-ipv6.obj
`if
test
-f
'nft-ipv6.c'
;
then
$(CYGPATH_W)
'nft-ipv6.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-ipv6.c'
;
fi`
xtables_compat_multi-nft-arp.o
:
nft-arp.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-arp.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-arp.Tpo
-c
-o
xtables_compat_multi-nft-arp.o
`test
-f
'nft-arp.c'
||
echo
'$(srcdir)/'
`nft-arp.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-arp.Tpo
$(DEPDIR)/xtables_compat_multi-nft-arp.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-arp.c'
object
=
'xtables_compat_multi-nft-arp.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-arp.o
`test
-f
'nft-arp.c'
||
echo
'$(srcdir)/'
`nft-arp.c
xtables_compat_multi-nft-arp.obj
:
nft-arp.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-arp.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-arp.Tpo
-c
-o
xtables_compat_multi-nft-arp.obj
`if
test
-f
'nft-arp.c'
;
then
$(CYGPATH_W)
'nft-arp.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-arp.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-arp.Tpo
$(DEPDIR)/xtables_compat_multi-nft-arp.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-arp.c'
object
=
'xtables_compat_multi-nft-arp.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-arp.obj
`if
test
-f
'nft-arp.c'
;
then
$(CYGPATH_W)
'nft-arp.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-arp.c'
;
fi`
xtables_compat_multi-xtables-arp-standalone.o
:
xtables-arp-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-arp-standalone.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-arp-standalone.Tpo
-c
-o
xtables_compat_multi-xtables-arp-standalone.o
`test
-f
'xtables-arp-standalone.c'
||
echo
'$(srcdir)/'
`xtables-arp-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-arp-standalone.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-arp-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-arp-standalone.c'
object
=
'xtables_compat_multi-xtables-arp-standalone.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-arp-standalone.o
`test
-f
'xtables-arp-standalone.c'
||
echo
'$(srcdir)/'
`xtables-arp-standalone.c
xtables_compat_multi-xtables-arp-standalone.obj
:
xtables-arp-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-arp-standalone.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-arp-standalone.Tpo
-c
-o
xtables_compat_multi-xtables-arp-standalone.obj
`if
test
-f
'xtables-arp-standalone.c'
;
then
$(CYGPATH_W)
'xtables-arp-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-arp-standalone.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-arp-standalone.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-arp-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-arp-standalone.c'
object
=
'xtables_compat_multi-xtables-arp-standalone.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-arp-standalone.obj
`if
test
-f
'xtables-arp-standalone.c'
;
then
$(CYGPATH_W)
'xtables-arp-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-arp-standalone.c'
;
fi`
xtables_compat_multi-xtables-arp.o
:
xtables-arp.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-arp.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-arp.Tpo
-c
-o
xtables_compat_multi-xtables-arp.o
`test
-f
'xtables-arp.c'
||
echo
'$(srcdir)/'
`xtables-arp.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-arp.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-arp.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-arp.c'
object
=
'xtables_compat_multi-xtables-arp.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-arp.o
`test
-f
'xtables-arp.c'
||
echo
'$(srcdir)/'
`xtables-arp.c
xtables_compat_multi-xtables-arp.obj
:
xtables-arp.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-arp.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-arp.Tpo
-c
-o
xtables_compat_multi-xtables-arp.obj
`if
test
-f
'xtables-arp.c'
;
then
$(CYGPATH_W)
'xtables-arp.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-arp.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-arp.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-arp.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-arp.c'
object
=
'xtables_compat_multi-xtables-arp.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-arp.obj
`if
test
-f
'xtables-arp.c'
;
then
$(CYGPATH_W)
'xtables-arp.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-arp.c'
;
fi`
xtables_compat_multi-getethertype.o
:
getethertype.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-getethertype.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-getethertype.Tpo
-c
-o
xtables_compat_multi-getethertype.o
`test
-f
'getethertype.c'
||
echo
'$(srcdir)/'
`getethertype.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-getethertype.Tpo
$(DEPDIR)/xtables_compat_multi-getethertype.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'getethertype.c'
object
=
'xtables_compat_multi-getethertype.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-getethertype.o
`test
-f
'getethertype.c'
||
echo
'$(srcdir)/'
`getethertype.c
xtables_compat_multi-getethertype.obj
:
getethertype.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-getethertype.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-getethertype.Tpo
-c
-o
xtables_compat_multi-getethertype.obj
`if
test
-f
'getethertype.c'
;
then
$(CYGPATH_W)
'getethertype.c'
;
else
$(CYGPATH_W)
'$(srcdir)/getethertype.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-getethertype.Tpo
$(DEPDIR)/xtables_compat_multi-getethertype.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'getethertype.c'
object
=
'xtables_compat_multi-getethertype.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-getethertype.obj
`if
test
-f
'getethertype.c'
;
then
$(CYGPATH_W)
'getethertype.c'
;
else
$(CYGPATH_W)
'$(srcdir)/getethertype.c'
;
fi`
xtables_compat_multi-nft-bridge.o
:
nft-bridge.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-bridge.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-bridge.Tpo
-c
-o
xtables_compat_multi-nft-bridge.o
`test
-f
'nft-bridge.c'
||
echo
'$(srcdir)/'
`nft-bridge.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-bridge.Tpo
$(DEPDIR)/xtables_compat_multi-nft-bridge.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-bridge.c'
object
=
'xtables_compat_multi-nft-bridge.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-bridge.o
`test
-f
'nft-bridge.c'
||
echo
'$(srcdir)/'
`nft-bridge.c
xtables_compat_multi-nft-bridge.obj
:
nft-bridge.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-nft-bridge.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-nft-bridge.Tpo
-c
-o
xtables_compat_multi-nft-bridge.obj
`if
test
-f
'nft-bridge.c'
;
then
$(CYGPATH_W)
'nft-bridge.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-bridge.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-nft-bridge.Tpo
$(DEPDIR)/xtables_compat_multi-nft-bridge.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'nft-bridge.c'
object
=
'xtables_compat_multi-nft-bridge.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-nft-bridge.obj
`if
test
-f
'nft-bridge.c'
;
then
$(CYGPATH_W)
'nft-bridge.c'
;
else
$(CYGPATH_W)
'$(srcdir)/nft-bridge.c'
;
fi`
xtables_compat_multi-xtables-eb-standalone.o
:
xtables-eb-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-eb-standalone.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-eb-standalone.Tpo
-c
-o
xtables_compat_multi-xtables-eb-standalone.o
`test
-f
'xtables-eb-standalone.c'
||
echo
'$(srcdir)/'
`xtables-eb-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-eb-standalone.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-eb-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-eb-standalone.c'
object
=
'xtables_compat_multi-xtables-eb-standalone.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-eb-standalone.o
`test
-f
'xtables-eb-standalone.c'
||
echo
'$(srcdir)/'
`xtables-eb-standalone.c
xtables_compat_multi-xtables-eb-standalone.obj
:
xtables-eb-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-eb-standalone.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-eb-standalone.Tpo
-c
-o
xtables_compat_multi-xtables-eb-standalone.obj
`if
test
-f
'xtables-eb-standalone.c'
;
then
$(CYGPATH_W)
'xtables-eb-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-eb-standalone.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-eb-standalone.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-eb-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-eb-standalone.c'
object
=
'xtables_compat_multi-xtables-eb-standalone.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-eb-standalone.obj
`if
test
-f
'xtables-eb-standalone.c'
;
then
$(CYGPATH_W)
'xtables-eb-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-eb-standalone.c'
;
fi`
xtables_compat_multi-xtables-eb.o
:
xtables-eb.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-eb.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-eb.Tpo
-c
-o
xtables_compat_multi-xtables-eb.o
`test
-f
'xtables-eb.c'
||
echo
'$(srcdir)/'
`xtables-eb.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-eb.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-eb.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-eb.c'
object
=
'xtables_compat_multi-xtables-eb.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-eb.o
`test
-f
'xtables-eb.c'
||
echo
'$(srcdir)/'
`xtables-eb.c
xtables_compat_multi-xtables-eb.obj
:
xtables-eb.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xtables-eb.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xtables-eb.Tpo
-c
-o
xtables_compat_multi-xtables-eb.obj
`if
test
-f
'xtables-eb.c'
;
then
$(CYGPATH_W)
'xtables-eb.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-eb.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xtables-eb.Tpo
$(DEPDIR)/xtables_compat_multi-xtables-eb.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-eb.c'
object
=
'xtables_compat_multi-xtables-eb.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xtables-eb.obj
`if
test
-f
'xtables-eb.c'
;
then
$(CYGPATH_W)
'xtables-eb.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-eb.c'
;
fi`
xtables_compat_multi-xshared.o
:
xshared.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xshared.o
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xshared.Tpo
-c
-o
xtables_compat_multi-xshared.o
`test
-f
'xshared.c'
||
echo
'$(srcdir)/'
`xshared.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xshared.Tpo
$(DEPDIR)/xtables_compat_multi-xshared.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xshared.c'
object
=
'xtables_compat_multi-xshared.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xshared.o
`test
-f
'xshared.c'
||
echo
'$(srcdir)/'
`xshared.c
xtables_compat_multi-xshared.obj
:
xshared.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_compat_multi-xshared.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_compat_multi-xshared.Tpo
-c
-o
xtables_compat_multi-xshared.obj
`if
test
-f
'xshared.c'
;
then
$(CYGPATH_W)
'xshared.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xshared.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_compat_multi-xshared.Tpo
$(DEPDIR)/xtables_compat_multi-xshared.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xshared.c'
object
=
'xtables_compat_multi-xshared.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_compat_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_compat_multi-xshared.obj
`if
test
-f
'xshared.c'
;
then
$(CYGPATH_W)
'xshared.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xshared.c'
;
fi`
xtables_multi-xtables-multi.o
:
xtables-multi.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-xtables-multi.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-xtables-multi.Tpo
-c
-o
xtables_multi-xtables-multi.o
`test
-f
'xtables-multi.c'
||
echo
'$(srcdir)/'
`xtables-multi.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-xtables-multi.Tpo
$(DEPDIR)/xtables_multi-xtables-multi.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-multi.c'
object
=
'xtables_multi-xtables-multi.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-xtables-multi.o
`test
-f
'xtables-multi.c'
||
echo
'$(srcdir)/'
`xtables-multi.c
xtables_multi-xtables-multi.obj
:
xtables-multi.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-xtables-multi.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-xtables-multi.Tpo
-c
-o
xtables_multi-xtables-multi.obj
`if
test
-f
'xtables-multi.c'
;
then
$(CYGPATH_W)
'xtables-multi.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-multi.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-xtables-multi.Tpo
$(DEPDIR)/xtables_multi-xtables-multi.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xtables-multi.c'
object
=
'xtables_multi-xtables-multi.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-xtables-multi.obj
`if
test
-f
'xtables-multi.c'
;
then
$(CYGPATH_W)
'xtables-multi.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xtables-multi.c'
;
fi`
xtables_multi-iptables-xml.o
:
iptables-xml.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-xml.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-xml.Tpo
-c
-o
xtables_multi-iptables-xml.o
`test
-f
'iptables-xml.c'
||
echo
'$(srcdir)/'
`iptables-xml.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-xml.Tpo
$(DEPDIR)/xtables_multi-iptables-xml.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-xml.c'
object
=
'xtables_multi-iptables-xml.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-xml.o
`test
-f
'iptables-xml.c'
||
echo
'$(srcdir)/'
`iptables-xml.c
xtables_multi-iptables-xml.obj
:
iptables-xml.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-xml.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-xml.Tpo
-c
-o
xtables_multi-iptables-xml.obj
`if
test
-f
'iptables-xml.c'
;
then
$(CYGPATH_W)
'iptables-xml.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-xml.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-xml.Tpo
$(DEPDIR)/xtables_multi-iptables-xml.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-xml.c'
object
=
'xtables_multi-iptables-xml.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-xml.obj
`if
test
-f
'iptables-xml.c'
;
then
$(CYGPATH_W)
'iptables-xml.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-xml.c'
;
fi`
xtables_multi-iptables-save.o
:
iptables-save.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-save.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-save.Tpo
-c
-o
xtables_multi-iptables-save.o
`test
-f
'iptables-save.c'
||
echo
'$(srcdir)/'
`iptables-save.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-save.Tpo
$(DEPDIR)/xtables_multi-iptables-save.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-save.c'
object
=
'xtables_multi-iptables-save.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-save.o
`test
-f
'iptables-save.c'
||
echo
'$(srcdir)/'
`iptables-save.c
xtables_multi-iptables-save.obj
:
iptables-save.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-save.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-save.Tpo
-c
-o
xtables_multi-iptables-save.obj
`if
test
-f
'iptables-save.c'
;
then
$(CYGPATH_W)
'iptables-save.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-save.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-save.Tpo
$(DEPDIR)/xtables_multi-iptables-save.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-save.c'
object
=
'xtables_multi-iptables-save.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-save.obj
`if
test
-f
'iptables-save.c'
;
then
$(CYGPATH_W)
'iptables-save.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-save.c'
;
fi`
xtables_multi-iptables-restore.o
:
iptables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-restore.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-restore.Tpo
-c
-o
xtables_multi-iptables-restore.o
`test
-f
'iptables-restore.c'
||
echo
'$(srcdir)/'
`iptables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-restore.Tpo
$(DEPDIR)/xtables_multi-iptables-restore.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-restore.c'
object
=
'xtables_multi-iptables-restore.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-restore.o
`test
-f
'iptables-restore.c'
||
echo
'$(srcdir)/'
`iptables-restore.c
xtables_multi-iptables-restore.obj
:
iptables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-restore.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-restore.Tpo
-c
-o
xtables_multi-iptables-restore.obj
`if
test
-f
'iptables-restore.c'
;
then
$(CYGPATH_W)
'iptables-restore.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-restore.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-restore.Tpo
$(DEPDIR)/xtables_multi-iptables-restore.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-restore.c'
object
=
'xtables_multi-iptables-restore.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-restore.obj
`if
test
-f
'iptables-restore.c'
;
then
$(CYGPATH_W)
'iptables-restore.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-restore.c'
;
fi`
xtables_multi-iptables-standalone.o
:
iptables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-standalone.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-standalone.Tpo
-c
-o
xtables_multi-iptables-standalone.o
`test
-f
'iptables-standalone.c'
||
echo
'$(srcdir)/'
`iptables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-standalone.Tpo
$(DEPDIR)/xtables_multi-iptables-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-standalone.c'
object
=
'xtables_multi-iptables-standalone.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-standalone.o
`test
-f
'iptables-standalone.c'
||
echo
'$(srcdir)/'
`iptables-standalone.c
xtables_multi-iptables-standalone.obj
:
iptables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables-standalone.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables-standalone.Tpo
-c
-o
xtables_multi-iptables-standalone.obj
`if
test
-f
'iptables-standalone.c'
;
then
$(CYGPATH_W)
'iptables-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-standalone.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables-standalone.Tpo
$(DEPDIR)/xtables_multi-iptables-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables-standalone.c'
object
=
'xtables_multi-iptables-standalone.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables-standalone.obj
`if
test
-f
'iptables-standalone.c'
;
then
$(CYGPATH_W)
'iptables-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables-standalone.c'
;
fi`
xtables_multi-iptables.o
:
iptables.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables.Tpo
-c
-o
xtables_multi-iptables.o
`test
-f
'iptables.c'
||
echo
'$(srcdir)/'
`iptables.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables.Tpo
$(DEPDIR)/xtables_multi-iptables.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables.c'
object
=
'xtables_multi-iptables.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables.o
`test
-f
'iptables.c'
||
echo
'$(srcdir)/'
`iptables.c
xtables_multi-iptables.obj
:
iptables.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-iptables.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-iptables.Tpo
-c
-o
xtables_multi-iptables.obj
`if
test
-f
'iptables.c'
;
then
$(CYGPATH_W)
'iptables.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-iptables.Tpo
$(DEPDIR)/xtables_multi-iptables.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'iptables.c'
object
=
'xtables_multi-iptables.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-iptables.obj
`if
test
-f
'iptables.c'
;
then
$(CYGPATH_W)
'iptables.c'
;
else
$(CYGPATH_W)
'$(srcdir)/iptables.c'
;
fi`
xtables_multi-ip6tables-save.o
:
ip6tables-save.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables-save.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables-save.Tpo
-c
-o
xtables_multi-ip6tables-save.o
`test
-f
'ip6tables-save.c'
||
echo
'$(srcdir)/'
`ip6tables-save.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables-save.Tpo
$(DEPDIR)/xtables_multi-ip6tables-save.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables-save.c'
object
=
'xtables_multi-ip6tables-save.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables-save.o
`test
-f
'ip6tables-save.c'
||
echo
'$(srcdir)/'
`ip6tables-save.c
xtables_multi-ip6tables-save.obj
:
ip6tables-save.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables-save.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables-save.Tpo
-c
-o
xtables_multi-ip6tables-save.obj
`if
test
-f
'ip6tables-save.c'
;
then
$(CYGPATH_W)
'ip6tables-save.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables-save.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables-save.Tpo
$(DEPDIR)/xtables_multi-ip6tables-save.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables-save.c'
object
=
'xtables_multi-ip6tables-save.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables-save.obj
`if
test
-f
'ip6tables-save.c'
;
then
$(CYGPATH_W)
'ip6tables-save.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables-save.c'
;
fi`
xtables_multi-ip6tables-restore.o
:
ip6tables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables-restore.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables-restore.Tpo
-c
-o
xtables_multi-ip6tables-restore.o
`test
-f
'ip6tables-restore.c'
||
echo
'$(srcdir)/'
`ip6tables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables-restore.Tpo
$(DEPDIR)/xtables_multi-ip6tables-restore.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables-restore.c'
object
=
'xtables_multi-ip6tables-restore.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables-restore.o
`test
-f
'ip6tables-restore.c'
||
echo
'$(srcdir)/'
`ip6tables-restore.c
xtables_multi-ip6tables-restore.obj
:
ip6tables-restore.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables-restore.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables-restore.Tpo
-c
-o
xtables_multi-ip6tables-restore.obj
`if
test
-f
'ip6tables-restore.c'
;
then
$(CYGPATH_W)
'ip6tables-restore.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables-restore.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables-restore.Tpo
$(DEPDIR)/xtables_multi-ip6tables-restore.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables-restore.c'
object
=
'xtables_multi-ip6tables-restore.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables-restore.obj
`if
test
-f
'ip6tables-restore.c'
;
then
$(CYGPATH_W)
'ip6tables-restore.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables-restore.c'
;
fi`
xtables_multi-ip6tables-standalone.o
:
ip6tables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables-standalone.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables-standalone.Tpo
-c
-o
xtables_multi-ip6tables-standalone.o
`test
-f
'ip6tables-standalone.c'
||
echo
'$(srcdir)/'
`ip6tables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables-standalone.Tpo
$(DEPDIR)/xtables_multi-ip6tables-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables-standalone.c'
object
=
'xtables_multi-ip6tables-standalone.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables-standalone.o
`test
-f
'ip6tables-standalone.c'
||
echo
'$(srcdir)/'
`ip6tables-standalone.c
xtables_multi-ip6tables-standalone.obj
:
ip6tables-standalone.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables-standalone.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables-standalone.Tpo
-c
-o
xtables_multi-ip6tables-standalone.obj
`if
test
-f
'ip6tables-standalone.c'
;
then
$(CYGPATH_W)
'ip6tables-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables-standalone.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables-standalone.Tpo
$(DEPDIR)/xtables_multi-ip6tables-standalone.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables-standalone.c'
object
=
'xtables_multi-ip6tables-standalone.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables-standalone.obj
`if
test
-f
'ip6tables-standalone.c'
;
then
$(CYGPATH_W)
'ip6tables-standalone.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables-standalone.c'
;
fi`
xtables_multi-ip6tables.o
:
ip6tables.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables.Tpo
-c
-o
xtables_multi-ip6tables.o
`test
-f
'ip6tables.c'
||
echo
'$(srcdir)/'
`ip6tables.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables.Tpo
$(DEPDIR)/xtables_multi-ip6tables.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables.c'
object
=
'xtables_multi-ip6tables.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables.o
`test
-f
'ip6tables.c'
||
echo
'$(srcdir)/'
`ip6tables.c
xtables_multi-ip6tables.obj
:
ip6tables.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-ip6tables.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-ip6tables.Tpo
-c
-o
xtables_multi-ip6tables.obj
`if
test
-f
'ip6tables.c'
;
then
$(CYGPATH_W)
'ip6tables.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-ip6tables.Tpo
$(DEPDIR)/xtables_multi-ip6tables.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'ip6tables.c'
object
=
'xtables_multi-ip6tables.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-ip6tables.obj
`if
test
-f
'ip6tables.c'
;
then
$(CYGPATH_W)
'ip6tables.c'
;
else
$(CYGPATH_W)
'$(srcdir)/ip6tables.c'
;
fi`
xtables_multi-xshared.o
:
xshared.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-xshared.o
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-xshared.Tpo
-c
-o
xtables_multi-xshared.o
`test
-f
'xshared.c'
||
echo
'$(srcdir)/'
`xshared.c
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-xshared.Tpo
$(DEPDIR)/xtables_multi-xshared.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xshared.c'
object
=
'xtables_multi-xshared.o'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-xshared.o
`test
-f
'xshared.c'
||
echo
'$(srcdir)/'
`xshared.c
xtables_multi-xshared.obj
:
xshared.c
@am__fastdepCC_TRUE@
$(AM_V_CC)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-MT
xtables_multi-xshared.obj
-MD
-MP
-MF
$(DEPDIR)/xtables_multi-xshared.Tpo
-c
-o
xtables_multi-xshared.obj
`if
test
-f
'xshared.c'
;
then
$(CYGPATH_W)
'xshared.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xshared.c'
;
fi`
@am__fastdepCC_TRUE@
$(AM_V_at)$(am__mv)
$(DEPDIR)/xtables_multi-xshared.Tpo
$(DEPDIR)/xtables_multi-xshared.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@
$(AM_V_CC)source
=
'xshared.c'
object
=
'xtables_multi-xshared.obj'
libtool
=
no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@
DEPDIR
=
$(DEPDIR)
$(CCDEPMODE)
$(depcomp)
@AMDEPBACKSLASH@
@am__fastdepCC_FALSE@
$(AM_V_CC@am__nodep@)$(CC)
$(DEFS)
$(DEFAULT_INCLUDES)
$(INCLUDES)
$(AM_CPPFLAGS)
$(CPPFLAGS)
$(xtables_multi_CFLAGS)
$(CFLAGS)
-c
-o
xtables_multi-xshared.obj
`if
test
-f
'xshared.c'
;
then
$(CYGPATH_W)
'xshared.c'
;
else
$(CYGPATH_W)
'$(srcdir)/xshared.c'
;
fi`
.l.c
:
$(AM_V_LEX)$(am__skiplex)
$(SHELL)
$(YLWRAP)
$<
$(LEX_OUTPUT_ROOT)
.c
$@
--
$(LEXCOMPILE)
.y.c
:
$(AM_V_YACC)$(am__skipyacc)
$(SHELL)
$(YLWRAP)
$<
y.tab.c
$@
y.tab.h
`
echo
$@
|
$(am__yacc_c2h)
`
y.output
$*
.output
--
$(YACCCOMPILE)
mostlyclean-libtool
:
-
rm
-f
*
.lo
clean-libtool
:
-
rm
-rf
.libs _libs
install-man1
:
$(man_MANS)
@
$(NORMAL_INSTALL)
@
list1
=
''
;
\
list2
=
'
$(man_MANS)
'
;
\
test
-n
"
$(man1dir)
"
\
&&
test
-n
"
`
echo
$$
list1
$$
list2
`
"
\
||
exit
0
;
\
echo
"
$(MKDIR_P)
'
$(DESTDIR)$(man1dir)
'"
;
\
$(MKDIR_P)
"
$(DESTDIR)$(man1dir)
"
||
exit
1
;
\
{
for
i
in
$$
list1
;
do
echo
"
$$
i"
;
done
;
\
if
test
-n
"
$$
list2"
;
then
\
for
i
in
$$
list2
;
do
echo
"
$$
i"
;
done
\
|
sed
-n
'/\.1[a-z]*$$/p'
;
\
fi
;
\
}
|
while
read
p
;
do
\
if
test
-f
$$
p
;
then
d
=
;
else
d
=
"
$(srcdir)
/"
;
fi
;
\
echo
"
$$
d
$$
p"
;
echo
"
$$
p"
;
\
done
|
\
sed
-e
'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x'
\
-e
's,\.[0-9a-z]*$$,,;
$(transform)
;G;s,\n,.,'
|
\
sed
'N;N;s,\n, ,g'
|
{
\
list
=
;
while
read
file base inst
;
do
\
if
test
"
$$
base"
=
"
$$
inst"
;
then
list
=
"
$$
list
$$
file"
;
else
\
echo
"
$(INSTALL_DATA)
'
$$
file' '
$(DESTDIR)$(man1dir)
/
$$
inst'"
;
\
$(INSTALL_DATA)
"
$$
file"
"
$(DESTDIR)$(man1dir)
/
$$
inst"
||
exit
$$
?
;
\
fi
;
\
done
;
\
for
i
in
$$
list
;
do
echo
"
$$
i"
;
done
|
$(am__base_list)
|
\
while
read
files
;
do
\
test
-z
"
$$
files"
||
{
\
echo
"
$(INSTALL_DATA)
$$
files '
$(DESTDIR)$(man1dir)
'"
;
\
$(INSTALL_DATA)
$$
files
"
$(DESTDIR)$(man1dir)
"
||
exit
$$
?
;
}
;
\
done
;
}
uninstall-man1
:
@
$(NORMAL_UNINSTALL)
@
list
=
''
;
test
-n
"
$(man1dir)
"
||
exit
0
;
\
files
=
`
{
for
i
in
$$
list
;
do
echo
"
$$
i"
;
done
;
\
l2
=
'
$(man_MANS)
'
;
for
i
in
$$
l2
;
do
echo
"
$$
i"
;
done
|
\
sed
-n
'/\.1[a-z]*$$/p'
;
\
}
|
sed
-e
's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x'
\
-e
's,\.[0-9a-z]*$$,,;
$(transform)
;G;s,\n,.,'
`
;
\
dir
=
'
$(DESTDIR)$(man1dir)
'
;
$(am__uninstall_files_from_dir)
install-man8
:
$(man_MANS)
@
$(NORMAL_INSTALL)
@
list1
=
''
;
\
list2
=
'
$(man_MANS)
'
;
\
test
-n
"
$(man8dir)
"
\
&&
test
-n
"
`
echo
$$
list1
$$
list2
`
"
\
||
exit
0
;
\
echo
"
$(MKDIR_P)
'
$(DESTDIR)$(man8dir)
'"
;
\
$(MKDIR_P)
"
$(DESTDIR)$(man8dir)
"
||
exit
1
;
\
{
for
i
in
$$
list1
;
do
echo
"
$$
i"
;
done
;
\
if
test
-n
"
$$
list2"
;
then
\
for
i
in
$$
list2
;
do
echo
"
$$
i"
;
done
\
|
sed
-n
'/\.8[a-z]*$$/p'
;
\
fi
;
\
}
|
while
read
p
;
do
\
if
test
-f
$$
p
;
then
d
=
;
else
d
=
"
$(srcdir)
/"
;
fi
;
\
echo
"
$$
d
$$
p"
;
echo
"
$$
p"
;
\
done
|
\
sed
-e
'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x'
\
-e
's,\.[0-9a-z]*$$,,;
$(transform)
;G;s,\n,.,'
|
\
sed
'N;N;s,\n, ,g'
|
{
\
list
=
;
while
read
file base inst
;
do
\
if
test
"
$$
base"
=
"
$$
inst"
;
then
list
=
"
$$
list
$$
file"
;
else
\
echo
"
$(INSTALL_DATA)
'
$$
file' '
$(DESTDIR)$(man8dir)
/
$$
inst'"
;
\
$(INSTALL_DATA)
"
$$
file"
"
$(DESTDIR)$(man8dir)
/
$$
inst"
||
exit
$$
?
;
\
fi
;
\
done
;
\
for
i
in
$$
list
;
do
echo
"
$$
i"
;
done
|
$(am__base_list)
|
\
while
read
files
;
do
\
test
-z
"
$$
files"
||
{
\
echo
"
$(INSTALL_DATA)
$$
files '
$(DESTDIR)$(man8dir)
'"
;
\
$(INSTALL_DATA)
$$
files
"
$(DESTDIR)$(man8dir)
"
||
exit
$$
?
;
}
;
\
done
;
}
uninstall-man8
:
@
$(NORMAL_UNINSTALL)
@
list
=
''
;
test
-n
"
$(man8dir)
"
||
exit
0
;
\
files
=
`
{
for
i
in
$$
list
;
do
echo
"
$$
i"
;
done
;
\
l2
=
'
$(man_MANS)
'
;
for
i
in
$$
l2
;
do
echo
"
$$
i"
;
done
|
\
sed
-n
'/\.8[a-z]*$$/p'
;
\
}
|
sed
-e
's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x'
\
-e
's,\.[0-9a-z]*$$,,;
$(transform)
;G;s,\n,.,'
`
;
\
dir
=
'
$(DESTDIR)$(man8dir)
'
;
$(am__uninstall_files_from_dir)
install-pkgconfigDATA
:
$(pkgconfig_DATA)
@
$(NORMAL_INSTALL)
@
list
=
'
$(pkgconfig_DATA)
'
;
test
-n
"
$(pkgconfigdir)
"
||
list
=
;
\
if
test
-n
"
$$
list"
;
then
\
echo
"
$(MKDIR_P)
'
$(DESTDIR)$(pkgconfigdir)
'"
;
\
$(MKDIR_P)
"
$(DESTDIR)$(pkgconfigdir)
"
||
exit
1
;
\
fi
;
\
for
p
in
$$
list
;
do
\
if
test
-f
"
$$
p"
;
then
d
=
;
else
d
=
"
$(srcdir)
/"
;
fi
;
\
echo
"
$$
d
$$
p"
;
\
done
|
$(am__base_list)
|
\
while
read
files
;
do
\
echo
"
$(INSTALL_DATA)
$$
files '
$(DESTDIR)$(pkgconfigdir)
'"
;
\
$(INSTALL_DATA)
$$
files
"
$(DESTDIR)$(pkgconfigdir)
"
||
exit
$$
?
;
\
done
uninstall-pkgconfigDATA
:
@
$(NORMAL_UNINSTALL)
@
list
=
'
$(pkgconfig_DATA)
'
;
test
-n
"
$(pkgconfigdir)
"
||
list
=
;
\
files
=
`
for
p
in
$$
list
;
do
echo
$$
p
;
done
|
sed
-e
's|^.*/||'
`
;
\
dir
=
'
$(DESTDIR)$(pkgconfigdir)
'
;
$(am__uninstall_files_from_dir)
ID
:
$(am__tagged_files)
$(am__define_uniq_tagged_files)
;
mkid
-fID
$$
unique
tags
:
tags-am
TAGS
:
tags
tags-am
:
$(TAGS_DEPENDENCIES) $(am__tagged_files)
set
x
;
\
here
=
`
pwd
`
;
\
$(am__define_uniq_tagged_files)
;
\
shift
;
\
if
test
-z
"
$(ETAGS_ARGS)$$
*
$$
unique"
;
then
:
;
else
\
test
-n
"
$$
unique"
||
unique
=
$$
empty_fix
;
\
if
test
$$
# -gt 0; then
\
$(ETAGS)
$(ETAGSFLAGS)
$(AM_ETAGSFLAGS)
$(ETAGS_ARGS)
\
"
$$
@"
$$
unique
;
\
else
\
$(ETAGS)
$(ETAGSFLAGS)
$(AM_ETAGSFLAGS)
$(ETAGS_ARGS)
\
$$
unique
;
\
fi
;
\
fi
ctags
:
ctags-am
CTAGS
:
ctags
ctags-am
:
$(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files)
;
\
test
-z
"
$(CTAGS_ARGS)$$
unique"
\
||
$(CTAGS)
$(CTAGSFLAGS)
$(AM_CTAGSFLAGS)
$(CTAGS_ARGS)
\
$$
unique
GTAGS
:
here
=
`
$(am__cd)
$(top_builddir)
&&
pwd
`
\
&&
$(am__cd)
$(top_srcdir)
\
&&
gtags
-i
$(GTAGS_ARGS)
"
$$
here"
cscopelist
:
cscopelist-am
cscopelist-am
:
$(am__tagged_files)
list
=
'
$(am__tagged_files)
'
;
\
case
"
$(srcdir)
"
in
\
[
\\
/]
*
|
?:[
\\
/]
*
)
sdir
=
"
$(srcdir)
"
;;
\
*
)
sdir
=
$(subdir)
/
$(srcdir)
;;
\
esac
;
\
for
i
in
$$
list
;
do
\
if
test
-f
"
$$
i"
;
then
\
echo
"
$(subdir)
/
$$
i"
;
\
else
\
echo
"
$$
sdir/
$$
i"
;
\
fi
;
\
done
>>
$(top_builddir)
/cscope.files
distclean-tags
:
-
rm
-f
TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir
:
$(DISTFILES)
@
srcdirstrip
=
`
echo
"
$(srcdir)
"
|
sed
's/[].[^$$\\*]/\\\\&/g'
`
;
\
topsrcdirstrip
=
`
echo
"
$(top_srcdir)
"
|
sed
's/[].[^$$\\*]/\\\\&/g'
`
;
\
list
=
'
$(DISTFILES)
'
;
\
dist_files
=
`
for
file
in
$$
list
;
do
echo
$$
file
;
done
|
\
sed
-e
"s|^
$$
srcdirstrip/||;t"
\
-e
"s|^
$$
topsrcdirstrip/|
$(top_builddir)
/|;t"
`
;
\
case
$$
dist_files
in
\
*
/
*
)
$(MKDIR_P)
`
echo
"
$$
dist_files"
|
\
sed
'/\//!d;s|^|
$(distdir)
/|;s,/[^/]*$$,,'
|
\
sort
-u
`
;;
\
esac
;
\
for
file
in
$$
dist_files
;
do
\
if
test
-f
$$
file
||
test
-d
$$
file
;
then
d
=
.
;
else
d
=
$(srcdir)
;
fi
;
\
if
test
-d
$$
d/
$$
file
;
then
\
dir
=
`
echo
"/
$$
file"
|
sed
-e
's,/[^/]*$$,,'
`
;
\
if
test
-d
"
$(distdir)
/
$$
file"
;
then
\
find
"
$(distdir)
/
$$
file"
-type
d
!
-perm
-700
-exec
chmod
u+rwx
{}
\;
;
\
fi
;
\
if
test
-d
$(srcdir)
/
$$
file
&&
test
$$
d
!=
$(srcdir)
;
then
\
cp
-fpR
$(srcdir)
/
$$
file
"
$(distdir)$$
dir"
||
exit
1
;
\
find
"
$(distdir)
/
$$
file"
-type
d
!
-perm
-700
-exec
chmod
u+rwx
{}
\;
;
\
fi
;
\
cp
-fpR
$$
d/
$$
file
"
$(distdir)$$
dir"
||
exit
1
;
\
else
\
test
-f
"
$(distdir)
/
$$
file"
\
||
cp
-p
$$
d/
$$
file
"
$(distdir)
/
$$
file"
\
||
exit
1
;
\
fi
;
\
done
check-am
:
all-am
check
:
check-am
all-am
:
Makefile $(PROGRAMS) $(MANS) $(DATA)
installdirs
:
for
dir
in
"
$(DESTDIR)$(sbindir)
"
"
$(DESTDIR)$(man1dir)
"
"
$(DESTDIR)$(man8dir)
"
"
$(DESTDIR)$(pkgconfigdir)
"
;
do
\
test
-z
"
$$
dir"
||
$(MKDIR_P)
"
$$
dir"
;
\
done
install
:
install-am
install-exec
:
install-exec-am
install-data
:
install-data-am
uninstall
:
uninstall-am
install-am
:
all-am
@
$(MAKE)
$(AM_MAKEFLAGS)
install-exec-am install-data-am
installcheck
:
installcheck-am
install-strip
:
if
test
-z
'
$(STRIP)
'
;
then
\
$(MAKE)
$(AM_MAKEFLAGS)
INSTALL_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
\
install_sh_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
INSTALL_STRIP_FLAG
=
-s
\
install
;
\
else
\
$(MAKE)
$(AM_MAKEFLAGS)
INSTALL_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
\
install_sh_PROGRAM
=
"
$(INSTALL_STRIP_PROGRAM)
"
INSTALL_STRIP_FLAG
=
-s
\
"INSTALL_PROGRAM_ENV=STRIPPROG='
$(STRIP)
'"
install
;
\
fi
mostlyclean-generic
:
clean-generic
:
-
test
-z
"
$(CLEANFILES)
"
||
rm
-f
$(CLEANFILES)
distclean-generic
:
-
test
-z
"
$(CONFIG_CLEAN_FILES)
"
||
rm
-f
$(CONFIG_CLEAN_FILES)
-
test
.
=
"
$(srcdir)
"
||
test
-z
"
$(CONFIG_CLEAN_VPATH_FILES)
"
||
rm
-f
$(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic
:
@
echo
"This command is intended for maintainers to use"
@
echo
"it deletes files that may require special tools to rebuild."
-
rm
-f
xtables-config-parser.c
-
rm
-f
xtables-config-parser.h
-
rm
-f
xtables-config-syntax.c
clean
:
clean-am
clean-am
:
clean-generic clean-libtool clean-sbinPROGRAMS
\
mostlyclean-am
distclean
:
distclean-am
-
rm
-rf
./
$(DEPDIR)
-
rm
-f
Makefile
distclean-am
:
clean-am distclean-compile distclean-generic
\
distclean-tags
dvi
:
dvi-am
dvi-am
:
html
:
html-am
html-am
:
info
:
info-am
info-am
:
install-data-am
:
install-man install-pkgconfigDATA
install-dvi
:
install-dvi-am
install-dvi-am
:
install-exec-am
:
install-sbinPROGRAMS
@
$(NORMAL_INSTALL)
$(MAKE)
$(AM_MAKEFLAGS)
install-exec-hook
install-html
:
install-html-am
install-html-am
:
install-info
:
install-info-am
install-info-am
:
install-man
:
install-man1 install-man8
install-pdf
:
install-pdf-am
install-pdf-am
:
install-ps
:
install-ps-am
install-ps-am
:
installcheck-am
:
maintainer-clean
:
maintainer-clean-am
-
rm
-rf
./
$(DEPDIR)
-
rm
-f
Makefile
maintainer-clean-am
:
distclean-am maintainer-clean-generic
mostlyclean
:
mostlyclean-am
mostlyclean-am
:
mostlyclean-compile mostlyclean-generic
\
mostlyclean-libtool
pdf
:
pdf-am
pdf-am
:
ps
:
ps-am
ps-am
:
uninstall-am
:
uninstall-man uninstall-pkgconfigDATA
\
uninstall-sbinPROGRAMS
uninstall-man
:
uninstall-man1 uninstall-man8
.MAKE
:
install-am install-exec-am install-strip
.PHONY
:
CTAGS GTAGS TAGS all all-am check check-am clean clean-generic
\
clean-libtool clean-sbinPROGRAMS cscopelist-am ctags ctags-am
\
distclean distclean-compile distclean-generic
\
distclean-libtool distclean-tags distdir dvi dvi-am html
\
html-am info info-am install install-am install-data
\
install-data-am install-dvi install-dvi-am install-exec
\
install-exec-am install-exec-hook install-html install-html-am
\
install-info install-info-am install-man install-man1
\
install-man8 install-pdf install-pdf-am install-pkgconfigDATA
\
install-ps install-ps-am install-sbinPROGRAMS install-strip
\
installcheck installcheck-am installdirs maintainer-clean
\
maintainer-clean-generic mostlyclean mostlyclean-compile
\
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am
\
tags tags-am uninstall uninstall-am uninstall-man
\
uninstall-man1 uninstall-man8 uninstall-pkgconfigDATA
\
uninstall-sbinPROGRAMS
# yacc and lex generate dirty code
@ENABLE_NFTABLES_TRUE@xtables_compat_multi-xtables-config-parser.o xtables_compat_multi-xtables-config-syntax.o
:
AM_CFLAGS += -Wno-missing-prototypes -Wno-missing-declarations -Wno-implicit-function-declaration -Wno-nested-externs -Wno-undef -Wno-redundant-decls
iptables-extensions.8
:
iptables-extensions.8.tmpl ../extensions/matches.man ../extensions/targets.man
${AM_VERBOSE_GEN}
sed
\
-e
'/@MATCH@/ r ../extensions/matches.man'
\
-e
'/@TARGET@/ r ../extensions/targets.man'
$<
>
$@
;
# Using if..fi avoids an ugly "error (ignored)" message :)
install-exec-hook
:
-
if
test
-z
"
${DESTDIR}
"
;
then
/sbin/ldconfig
;
fi
;
${INSTALL}
-dm0755
"
${DESTDIR}${bindir}
"
;
for
i
in
${vx_bin_links}
;
do
${LN_S}
-f
"
${sbindir}
/xtables-multi"
"
${DESTDIR}${bindir}
/
$$
i"
;
done
;
for
i
in
${v4_sbin_links}
;
do
${LN_S}
-f
xtables-multi
"
${DESTDIR}${sbindir}
/
$$
i"
;
done
;
for
i
in
${v6_sbin_links}
;
do
${LN_S}
-f
xtables-multi
"
${DESTDIR}${sbindir}
/
$$
i"
;
done
;
for
i
in
${x_sbin_links}
;
do
${LN_S}
-f
xtables-compat-multi
"
${DESTDIR}${sbindir}
/
$$
i"
;
done
;
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT
:
iptables/ip6tables-restore.c
View file @
7b095084
...
@@ -43,13 +43,14 @@ static void print_usage(const char *name, const char *version) __attribute__((no
...
@@ -43,13 +43,14 @@ static void print_usage(const char *name, const char *version) __attribute__((no
static
void
print_usage
(
const
char
*
name
,
const
char
*
version
)
static
void
print_usage
(
const
char
*
name
,
const
char
*
version
)
{
{
fprintf
(
stderr
,
"Usage: %s [-c] [-v] [-t] [-h]
\n
"
fprintf
(
stderr
,
"Usage: %s [-c] [-v] [-t] [-h]
[-n] [-T table] [-M command]
\n
"
" [ --counters ]
\n
"
" [ --counters ]
\n
"
" [ --verbose ]
\n
"
" [ --verbose ]
\n
"
" [ --test ]
\n
"
" [ --test ]
\n
"
" [ --help ]
\n
"
" [ --help ]
\n
"
" [ --noflush ]
\n
"
" [ --noflush ]
\n
"
" [ --modprobe=<command>]
\n
"
,
name
);
" [ --table=<TABLE> ]
\n
"
" [ --modprobe=<command> ]
\n
"
,
name
);
exit
(
1
);
exit
(
1
);
}
}
...
...
iptables/ip6tables.c
View file @
7b095084
...
@@ -103,6 +103,7 @@ static struct option original_opts[] = {
...
@@ -103,6 +103,7 @@ static struct option original_opts[] = {
{.
name
=
"out-interface"
,
.
has_arg
=
1
,
.
val
=
'o'
},
{.
name
=
"out-interface"
,
.
has_arg
=
1
,
.
val
=
'o'
},
{.
name
=
"verbose"
,
.
has_arg
=
0
,
.
val
=
'v'
},
{.
name
=
"verbose"
,
.
has_arg
=
0
,
.
val
=
'v'
},
{.
name
=
"wait"
,
.
has_arg
=
2
,
.
val
=
'w'
},
{.
name
=
"wait"
,
.
has_arg
=
2
,
.
val
=
'w'
},
{.
name
=
"wait-interval"
,
.
has_arg
=
2
,
.
val
=
'W'
},
{.
name
=
"exact"
,
.
has_arg
=
0
,
.
val
=
'x'
},
{.
name
=
"exact"
,
.
has_arg
=
0
,
.
val
=
'x'
},
{.
name
=
"version"
,
.
has_arg
=
0
,
.
val
=
'V'
},
{.
name
=
"version"
,
.
has_arg
=
0
,
.
val
=
'V'
},
{.
name
=
"help"
,
.
has_arg
=
2
,
.
val
=
'h'
},
{.
name
=
"help"
,
.
has_arg
=
2
,
.
val
=
'h'
},
...
@@ -259,7 +260,10 @@ exit_printhelp(const struct xtables_rule_match *matches)
...
@@ -259,7 +260,10 @@ exit_printhelp(const struct xtables_rule_match *matches)
" network interface name ([+] for wildcard)
\n
"
" network interface name ([+] for wildcard)
\n
"
" --table -t table table to manipulate (default: `filter')
\n
"
" --table -t table table to manipulate (default: `filter')
\n
"
" --verbose -v verbose mode
\n
"
" --verbose -v verbose mode
\n
"
" --wait -w [seconds] wait for the xtables lock
\n
"
" --wait -w [seconds] maximum wait to acquire xtables lock before give up
\n
"
" --wait-interval -W [usecs] wait time to try to acquire xtables lock
\n
"
" interval to wait for xtables lock
\n
"
" default is 1 second
\n
"
" --line-numbers print line numbers when listing
\n
"
" --line-numbers print line numbers when listing
\n
"
" --exact -x expand numbers (display exact values)
\n
"
" --exact -x expand numbers (display exact values)
\n
"
/*"[!] --fragment -f match second or further fragments only\n"*/
/*"[!] --fragment -f match second or further fragments only\n"*/
...
@@ -1325,6 +1329,10 @@ int do_command6(int argc, char *argv[], char **table,
...
@@ -1325,6 +1329,10 @@ int do_command6(int argc, char *argv[], char **table,
int
verbose
=
0
;
int
verbose
=
0
;
int
wait
=
0
;
int
wait
=
0
;
struct
timeval
wait_interval
=
{
.
tv_sec
=
1
,
};
bool
wait_interval_set
=
false
;
const
char
*
chain
=
NULL
;
const
char
*
chain
=
NULL
;
const
char
*
shostnetworkmask
=
NULL
,
*
dhostnetworkmask
=
NULL
;
const
char
*
shostnetworkmask
=
NULL
,
*
dhostnetworkmask
=
NULL
;
const
char
*
policy
=
NULL
,
*
newname
=
NULL
;
const
char
*
policy
=
NULL
,
*
newname
=
NULL
;
...
@@ -1360,7 +1368,7 @@ int do_command6(int argc, char *argv[], char **table,
...
@@ -1360,7 +1368,7 @@ int do_command6(int argc, char *argv[], char **table,
opts
=
xt_params
->
orig_opts
;
opts
=
xt_params
->
orig_opts
;
while
((
cs
.
c
=
getopt_long
(
argc
,
argv
,
while
((
cs
.
c
=
getopt_long
(
argc
,
argv
,
"-:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:bvw::nt:m:xc:g:46"
,
"-:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:bvw::
W::
nt:m:xc:g:46"
,
opts
,
NULL
))
!=
-
1
)
{
opts
,
NULL
))
!=
-
1
)
{
switch
(
cs
.
c
)
{
switch
(
cs
.
c
)
{
/*
/*
...
@@ -1616,6 +1624,23 @@ int do_command6(int argc, char *argv[], char **table,
...
@@ -1616,6 +1624,23 @@ int do_command6(int argc, char *argv[], char **table,
"wait seconds not numeric"
);
"wait seconds not numeric"
);
break
;
break
;
case
'W'
:
if
(
restore
)
{
xtables_error
(
PARAMETER_PROBLEM
,
"You cannot use `-W' from "
"ip6tables-restore"
);
}
if
(
optarg
)
parse_wait_interval
(
optarg
,
&
wait_interval
);
else
if
(
optind
<
argc
&&
argv
[
optind
][
0
]
!=
'-'
&&
argv
[
optind
][
0
]
!=
'!'
)
parse_wait_interval
(
argv
[
optind
++
],
&
wait_interval
);
wait_interval_set
=
true
;
break
;
case
'm'
:
case
'm'
:
command_match
(
&
cs
);
command_match
(
&
cs
);
break
;
break
;
...
@@ -1720,6 +1745,17 @@ int do_command6(int argc, char *argv[], char **table,
...
@@ -1720,6 +1745,17 @@ int do_command6(int argc, char *argv[], char **table,
cs
.
invert
=
FALSE
;
cs
.
invert
=
FALSE
;
}
}
if
(
!
wait
&&
wait_interval_set
)
xtables_error
(
PARAMETER_PROBLEM
,
"--wait-interval only makes sense with --wait
\n
"
);
if
(
strcmp
(
*
table
,
"nat"
)
==
0
&&
((
policy
!=
NULL
&&
strcmp
(
policy
,
"DROP"
)
==
0
)
||
(
cs
.
jumpto
!=
NULL
&&
strcmp
(
cs
.
jumpto
,
"DROP"
)
==
0
)))
xtables_error
(
PARAMETER_PROBLEM
,
"
\n
The
\"
nat
\"
table is not intended for filtering, "
"the use of DROP is therefore inhibited.
\n\n
"
);
for
(
matchp
=
cs
.
matches
;
matchp
;
matchp
=
matchp
->
next
)
for
(
matchp
=
cs
.
matches
;
matchp
;
matchp
=
matchp
->
next
)
xtables_option_mfcall
(
matchp
->
match
);
xtables_option_mfcall
(
matchp
->
match
);
if
(
cs
.
target
!=
NULL
)
if
(
cs
.
target
!=
NULL
)
...
@@ -1763,7 +1799,7 @@ int do_command6(int argc, char *argv[], char **table,
...
@@ -1763,7 +1799,7 @@ int do_command6(int argc, char *argv[], char **table,
generic_opt_check
(
command
,
cs
.
options
);
generic_opt_check
(
command
,
cs
.
options
);
/* Attempt to acquire the xtables lock */
/* Attempt to acquire the xtables lock */
if
(
!
restore
&&
!
xtables_lock
(
wait
))
{
if
(
!
restore
&&
!
xtables_lock
(
wait
,
&
wait_interval
))
{
fprintf
(
stderr
,
"Another app is currently holding the xtables lock. "
);
fprintf
(
stderr
,
"Another app is currently holding the xtables lock. "
);
if
(
wait
==
0
)
if
(
wait
==
0
)
fprintf
(
stderr
,
"Perhaps you want to use the -w option?
\n
"
);
fprintf
(
stderr
,
"Perhaps you want to use the -w option?
\n
"
);
...
...
iptables/iptables-restore.c
View file @
7b095084
...
@@ -42,14 +42,14 @@ static void print_usage(const char *name, const char *version) __attribute__((no
...
@@ -42,14 +42,14 @@ static void print_usage(const char *name, const char *version) __attribute__((no
static
void
print_usage
(
const
char
*
name
,
const
char
*
version
)
static
void
print_usage
(
const
char
*
name
,
const
char
*
version
)
{
{
fprintf
(
stderr
,
"Usage: %s [-c] [-v] [-t] [-h]
\n
"
fprintf
(
stderr
,
"Usage: %s [-c] [-v] [-t] [-h]
[-n] [-T table] [-M command]
\n
"
" [ --counters ]
\n
"
" [ --counters ]
\n
"
" [ --verbose ]
\n
"
" [ --verbose ]
\n
"
" [ --test ]
\n
"
" [ --test ]
\n
"
" [ --help ]
\n
"
" [ --help ]
\n
"
" [ --noflush ]
\n
"
" [ --noflush ]
\n
"
" [ --table=<TABLE> ]
\n
"
" [ --table=<TABLE> ]
\n
"
" [ --modprobe=<command>]
\n
"
,
name
);
" [ --modprobe=<command>
]
\n
"
,
name
);
exit
(
1
);
exit
(
1
);
}
}
...
...
iptables/iptables.8.in
View file @
7b095084
...
@@ -103,8 +103,9 @@ the built-in chains \fBINPUT\fP (for packets destined to local sockets),
...
@@ -103,8 +103,9 @@ the built-in chains \fBINPUT\fP (for packets destined to local sockets),
.TP
.TP
\fBnat\fP:
\fBnat\fP:
This table is consulted when a packet that creates a new
This table is consulted when a packet that creates a new
connection is encountered. It consists of three built-ins: \fBPREROUTING\fP
connection is encountered. It consists of four built-ins: \fBPREROUTING\fP
(for altering packets as soon as they come in), \fBOUTPUT\fP
(for altering packets as soon as they come in), \fBINPUT\fP (for altering
packets destined for local sockets), \fBOUTPUT\fP
(for altering locally-generated packets before routing), and \fBPOSTROUTING\fP
(for altering locally-generated packets before routing), and \fBPOSTROUTING\fP
(for altering packets as they are about to go out).
(for altering packets as they are about to go out).
IPv6 NAT support is available since kernel 3.7.
IPv6 NAT support is available since kernel 3.7.
...
@@ -194,6 +195,8 @@ arguments given. The exact rules are suppressed until you use
...
@@ -194,6 +195,8 @@ arguments given. The exact rules are suppressed until you use
.nf
.nf
iptables \-L \-v
iptables \-L \-v
.fi
.fi
or
\fBiptables\-save\fP(8).
.TP
.TP
\fB\-S\fP, \fB\-\-list\-rules\fP [\fIchain\fP]
\fB\-S\fP, \fB\-\-list\-rules\fP [\fIchain\fP]
Print all rules in the selected chain. If no chain is selected, all
Print all rules in the selected chain. If no chain is selected, all
...
@@ -367,6 +370,13 @@ the program will exit if the lock cannot be obtained. This option will
...
@@ -367,6 +370,13 @@ the program will exit if the lock cannot be obtained. This option will
make the program wait (indefinitely or for optional \fIseconds\fP) until
make the program wait (indefinitely or for optional \fIseconds\fP) until
the exclusive lock can be obtained.
the exclusive lock can be obtained.
.TP
.TP
\fB\-W\fP, \fB\-\-wait-interval\fP \fImicroseconds\fP
Interval to wait per each iteration.
When running latency sensitive applications, waiting for the xtables lock
for extended durations may not be acceptable. This option will make each
iteration take the amount of time specified. The default interval is
1 second. This option only works with \fB\-w\fP.
.TP
\fB\-n\fP, \fB\-\-numeric\fP
\fB\-n\fP, \fB\-\-numeric\fP
Numeric output.
Numeric output.
IP addresses and port numbers will be printed in numeric format.
IP addresses and port numbers will be printed in numeric format.
...
...
iptables/iptables.c
View file @
7b095084
...
@@ -100,6 +100,7 @@ static struct option original_opts[] = {
...
@@ -100,6 +100,7 @@ static struct option original_opts[] = {
{.
name
=
"out-interface"
,
.
has_arg
=
1
,
.
val
=
'o'
},
{.
name
=
"out-interface"
,
.
has_arg
=
1
,
.
val
=
'o'
},
{.
name
=
"verbose"
,
.
has_arg
=
0
,
.
val
=
'v'
},
{.
name
=
"verbose"
,
.
has_arg
=
0
,
.
val
=
'v'
},
{.
name
=
"wait"
,
.
has_arg
=
2
,
.
val
=
'w'
},
{.
name
=
"wait"
,
.
has_arg
=
2
,
.
val
=
'w'
},
{.
name
=
"wait-interval"
,
.
has_arg
=
2
,
.
val
=
'W'
},
{.
name
=
"exact"
,
.
has_arg
=
0
,
.
val
=
'x'
},
{.
name
=
"exact"
,
.
has_arg
=
0
,
.
val
=
'x'
},
{.
name
=
"fragments"
,
.
has_arg
=
0
,
.
val
=
'f'
},
{.
name
=
"fragments"
,
.
has_arg
=
0
,
.
val
=
'f'
},
{.
name
=
"version"
,
.
has_arg
=
0
,
.
val
=
'V'
},
{.
name
=
"version"
,
.
has_arg
=
0
,
.
val
=
'V'
},
...
@@ -253,7 +254,9 @@ exit_printhelp(const struct xtables_rule_match *matches)
...
@@ -253,7 +254,9 @@ exit_printhelp(const struct xtables_rule_match *matches)
" network interface name ([+] for wildcard)
\n
"
" network interface name ([+] for wildcard)
\n
"
" --table -t table table to manipulate (default: `filter')
\n
"
" --table -t table table to manipulate (default: `filter')
\n
"
" --verbose -v verbose mode
\n
"
" --verbose -v verbose mode
\n
"
" --wait -w [seconds] wait for the xtables lock
\n
"
" --wait -w [seconds] maximum wait to acquire xtables lock before give up
\n
"
" --wait-interval -W [usecs] wait time to try to acquire xtables lock
\n
"
" default is 1 second
\n
"
" --line-numbers print line numbers when listing
\n
"
" --line-numbers print line numbers when listing
\n
"
" --exact -x expand numbers (display exact values)
\n
"
" --exact -x expand numbers (display exact values)
\n
"
"[!] --fragment -f match second or further fragments only
\n
"
"[!] --fragment -f match second or further fragments only
\n
"
...
@@ -1318,7 +1321,10 @@ int do_command4(int argc, char *argv[], char **table,
...
@@ -1318,7 +1321,10 @@ int do_command4(int argc, char *argv[], char **table,
unsigned
int
nsaddrs
=
0
,
ndaddrs
=
0
;
unsigned
int
nsaddrs
=
0
,
ndaddrs
=
0
;
struct
in_addr
*
saddrs
=
NULL
,
*
smasks
=
NULL
;
struct
in_addr
*
saddrs
=
NULL
,
*
smasks
=
NULL
;
struct
in_addr
*
daddrs
=
NULL
,
*
dmasks
=
NULL
;
struct
in_addr
*
daddrs
=
NULL
,
*
dmasks
=
NULL
;
struct
timeval
wait_interval
=
{
.
tv_sec
=
1
,
};
bool
wait_interval_set
=
false
;
int
verbose
=
0
;
int
verbose
=
0
;
int
wait
=
0
;
int
wait
=
0
;
const
char
*
chain
=
NULL
;
const
char
*
chain
=
NULL
;
...
@@ -1355,7 +1361,7 @@ int do_command4(int argc, char *argv[], char **table,
...
@@ -1355,7 +1361,7 @@ int do_command4(int argc, char *argv[], char **table,
opterr
=
0
;
opterr
=
0
;
opts
=
xt_params
->
orig_opts
;
opts
=
xt_params
->
orig_opts
;
while
((
cs
.
c
=
getopt_long
(
argc
,
argv
,
while
((
cs
.
c
=
getopt_long
(
argc
,
argv
,
"-:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:fbvw::nt:m:xc:g:46"
,
"-:A:C:D:R:I:L::S::M:F::Z::N:X::E:P:Vh::o:p:s:d:j:i:fbvw::
W::
nt:m:xc:g:46"
,
opts
,
NULL
))
!=
-
1
)
{
opts
,
NULL
))
!=
-
1
)
{
switch
(
cs
.
c
)
{
switch
(
cs
.
c
)
{
/*
/*
...
@@ -1609,6 +1615,23 @@ int do_command4(int argc, char *argv[], char **table,
...
@@ -1609,6 +1615,23 @@ int do_command4(int argc, char *argv[], char **table,
"wait seconds not numeric"
);
"wait seconds not numeric"
);
break
;
break
;
case
'W'
:
if
(
restore
)
{
xtables_error
(
PARAMETER_PROBLEM
,
"You cannot use `-W' from "
"iptables-restore"
);
}
if
(
optarg
)
parse_wait_interval
(
optarg
,
&
wait_interval
);
else
if
(
optind
<
argc
&&
argv
[
optind
][
0
]
!=
'-'
&&
argv
[
optind
][
0
]
!=
'!'
)
parse_wait_interval
(
argv
[
optind
++
],
&
wait_interval
);
wait_interval_set
=
true
;
break
;
case
'm'
:
case
'm'
:
command_match
(
&
cs
);
command_match
(
&
cs
);
break
;
break
;
...
@@ -1709,6 +1732,10 @@ int do_command4(int argc, char *argv[], char **table,
...
@@ -1709,6 +1732,10 @@ int do_command4(int argc, char *argv[], char **table,
cs
.
invert
=
FALSE
;
cs
.
invert
=
FALSE
;
}
}
if
(
!
wait
&&
wait_interval_set
)
xtables_error
(
PARAMETER_PROBLEM
,
"--wait-interval only makes sense with --wait
\n
"
);
if
(
strcmp
(
*
table
,
"nat"
)
==
0
&&
if
(
strcmp
(
*
table
,
"nat"
)
==
0
&&
((
policy
!=
NULL
&&
strcmp
(
policy
,
"DROP"
)
==
0
)
||
((
policy
!=
NULL
&&
strcmp
(
policy
,
"DROP"
)
==
0
)
||
(
cs
.
jumpto
!=
NULL
&&
strcmp
(
cs
.
jumpto
,
"DROP"
)
==
0
)))
(
cs
.
jumpto
!=
NULL
&&
strcmp
(
cs
.
jumpto
,
"DROP"
)
==
0
)))
...
@@ -1759,7 +1786,7 @@ int do_command4(int argc, char *argv[], char **table,
...
@@ -1759,7 +1786,7 @@ int do_command4(int argc, char *argv[], char **table,
generic_opt_check
(
command
,
cs
.
options
);
generic_opt_check
(
command
,
cs
.
options
);
/* Attempt to acquire the xtables lock */
/* Attempt to acquire the xtables lock */
if
(
!
restore
&&
!
xtables_lock
(
wait
))
{
if
(
!
restore
&&
!
xtables_lock
(
wait
,
&
wait_interval
))
{
fprintf
(
stderr
,
"Another app is currently holding the xtables lock. "
);
fprintf
(
stderr
,
"Another app is currently holding the xtables lock. "
);
if
(
wait
==
0
)
if
(
wait
==
0
)
fprintf
(
stderr
,
"Perhaps you want to use the -w option?
\n
"
);
fprintf
(
stderr
,
"Perhaps you want to use the -w option?
\n
"
);
...
...
iptables/nft-ipv4.c
View file @
7b095084
/*
/*
* (C) 2012-201
3
by Pablo Neira Ayuso <pablo@netfilter.org>
* (C) 2012-201
4
by Pablo Neira Ayuso <pablo@netfilter.org>
* (C) 2013 by Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
* (C) 2013 by Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#include <netinet/in.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <netinet/ip.h>
#include <netinet/ip.h>
#include <netdb.h>
#include <xtables.h>
#include <xtables.h>
...
@@ -30,6 +31,7 @@ static int nft_ipv4_add(struct nftnl_rule *r, void *data)
...
@@ -30,6 +31,7 @@ static int nft_ipv4_add(struct nftnl_rule *r, void *data)
struct
iptables_command_state
*
cs
=
data
;
struct
iptables_command_state
*
cs
=
data
;
struct
xtables_rule_match
*
matchp
;
struct
xtables_rule_match
*
matchp
;
uint32_t
op
;
uint32_t
op
;
int
ret
;
if
(
cs
->
fw
.
ip
.
iniface
[
0
]
!=
'\0'
)
{
if
(
cs
->
fw
.
ip
.
iniface
[
0
]
!=
'\0'
)
{
op
=
nft_invflags2cmp
(
cs
->
fw
.
ip
.
invflags
,
IPT_INV_VIA_IN
);
op
=
nft_invflags2cmp
(
cs
->
fw
.
ip
.
invflags
,
IPT_INV_VIA_IN
);
...
@@ -73,8 +75,16 @@ static int nft_ipv4_add(struct nftnl_rule *r, void *data)
...
@@ -73,8 +75,16 @@ static int nft_ipv4_add(struct nftnl_rule *r, void *data)
add_compat
(
r
,
cs
->
fw
.
ip
.
proto
,
cs
->
fw
.
ip
.
invflags
);
add_compat
(
r
,
cs
->
fw
.
ip
.
proto
,
cs
->
fw
.
ip
.
invflags
);
for
(
matchp
=
cs
->
matches
;
matchp
;
matchp
=
matchp
->
next
)
{
for
(
matchp
=
cs
->
matches
;
matchp
;
matchp
=
matchp
->
next
)
{
if
(
add_match
(
r
,
matchp
->
match
->
m
)
<
0
)
/* Use nft built-in comments support instead of comment match */
break
;
if
(
strcmp
(
matchp
->
match
->
name
,
"comment"
)
==
0
)
{
ret
=
add_comment
(
r
,
(
char
*
)
matchp
->
match
->
m
->
data
);
if
(
ret
<
0
)
return
ret
;
}
else
{
ret
=
add_match
(
r
,
matchp
->
match
->
m
);
if
(
ret
<
0
)
return
ret
;
}
}
}
/* Counters need to me added before the target, otherwise they are
/* Counters need to me added before the target, otherwise they are
...
@@ -428,6 +438,65 @@ static void nft_ipv4_save_counters(const void *data)
...
@@ -428,6 +438,65 @@ static void nft_ipv4_save_counters(const void *data)
save_counters
(
cs
->
counters
.
pcnt
,
cs
->
counters
.
bcnt
);
save_counters
(
cs
->
counters
.
pcnt
,
cs
->
counters
.
bcnt
);
}
}
static
int
nft_ipv4_xlate
(
const
void
*
data
,
struct
xt_xlate
*
xl
)
{
const
struct
iptables_command_state
*
cs
=
data
;
const
char
*
comment
;
int
ret
;
xlate_ifname
(
xl
,
"iifname"
,
cs
->
fw
.
ip
.
iniface
,
cs
->
fw
.
ip
.
invflags
&
IPT_INV_VIA_IN
);
xlate_ifname
(
xl
,
"oifname"
,
cs
->
fw
.
ip
.
outiface
,
cs
->
fw
.
ip
.
invflags
&
IPT_INV_VIA_OUT
);
if
(
cs
->
fw
.
ip
.
flags
&
IPT_F_FRAG
)
{
xt_xlate_add
(
xl
,
"ip frag-off %s%x "
,
cs
->
fw
.
ip
.
invflags
&
IPT_INV_FRAG
?
""
:
"!= "
,
0
);
}
if
(
cs
->
fw
.
ip
.
proto
!=
0
)
{
const
struct
protoent
*
pent
=
getprotobynumber
(
cs
->
fw
.
ip
.
proto
);
char
protonum
[
strlen
(
"255"
)
+
1
];
if
(
!
xlate_find_match
(
cs
,
pent
->
p_name
))
{
snprintf
(
protonum
,
sizeof
(
protonum
),
"%u"
,
cs
->
fw
.
ip
.
proto
);
protonum
[
sizeof
(
protonum
)
-
1
]
=
'\0'
;
xt_xlate_add
(
xl
,
"ip protocol %s%s "
,
cs
->
fw
.
ip
.
invflags
&
IPT_INV_PROTO
?
"!= "
:
""
,
pent
?
pent
->
p_name
:
protonum
);
}
}
if
(
cs
->
fw
.
ip
.
src
.
s_addr
!=
0
)
{
xt_xlate_add
(
xl
,
"ip saddr %s%s "
,
cs
->
fw
.
ip
.
invflags
&
IPT_INV_SRCIP
?
"!= "
:
""
,
inet_ntoa
(
cs
->
fw
.
ip
.
src
));
}
if
(
cs
->
fw
.
ip
.
dst
.
s_addr
!=
0
)
{
xt_xlate_add
(
xl
,
"ip daddr %s%s "
,
cs
->
fw
.
ip
.
invflags
&
IPT_INV_DSTIP
?
"!= "
:
""
,
inet_ntoa
(
cs
->
fw
.
ip
.
dst
));
}
ret
=
xlate_matches
(
cs
,
xl
);
if
(
!
ret
)
return
ret
;
/* Always add counters per rule, as in iptables */
xt_xlate_add
(
xl
,
"counter "
);
comment
=
xt_xlate_get_comment
(
xl
);
if
(
comment
)
xt_xlate_add
(
xl
,
"comment %s"
,
comment
);
ret
=
xlate_action
(
cs
,
!!
(
cs
->
fw
.
ip
.
flags
&
IPT_F_GOTO
),
xl
);
return
ret
;
}
struct
nft_family_ops
nft_family_ops_ipv4
=
{
struct
nft_family_ops
nft_family_ops_ipv4
=
{
.
add
=
nft_ipv4_add
,
.
add
=
nft_ipv4_add
,
.
is_same
=
nft_ipv4_is_same
,
.
is_same
=
nft_ipv4_is_same
,
...
@@ -442,4 +511,5 @@ struct nft_family_ops nft_family_ops_ipv4 = {
...
@@ -442,4 +511,5 @@ struct nft_family_ops nft_family_ops_ipv4 = {
.
post_parse
=
nft_ipv4_post_parse
,
.
post_parse
=
nft_ipv4_post_parse
,
.
parse_target
=
nft_ipv4_parse_target
,
.
parse_target
=
nft_ipv4_parse_target
,
.
rule_find
=
nft_ipv4_rule_find
,
.
rule_find
=
nft_ipv4_rule_find
,
.
xlate
=
nft_ipv4_xlate
,
};
};
iptables/nft-ipv6.c
View file @
7b095084
/*
/*
* (C) 2012-201
3
by Pablo Neira Ayuso <pablo@netfilter.org>
* (C) 2012-201
4
by Pablo Neira Ayuso <pablo@netfilter.org>
* (C) 2013 by Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
* (C) 2013 by Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#include <sys/socket.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <arpa/inet.h>
#include <netinet/ip6.h>
#include <netinet/ip6.h>
#include <netdb.h>
#include <xtables.h>
#include <xtables.h>
...
@@ -29,6 +30,7 @@ static int nft_ipv6_add(struct nftnl_rule *r, void *data)
...
@@ -29,6 +30,7 @@ static int nft_ipv6_add(struct nftnl_rule *r, void *data)
struct
iptables_command_state
*
cs
=
data
;
struct
iptables_command_state
*
cs
=
data
;
struct
xtables_rule_match
*
matchp
;
struct
xtables_rule_match
*
matchp
;
uint32_t
op
;
uint32_t
op
;
int
ret
;
if
(
cs
->
fw6
.
ipv6
.
iniface
[
0
]
!=
'\0'
)
{
if
(
cs
->
fw6
.
ipv6
.
iniface
[
0
]
!=
'\0'
)
{
op
=
nft_invflags2cmp
(
cs
->
fw6
.
ipv6
.
invflags
,
IPT_INV_VIA_IN
);
op
=
nft_invflags2cmp
(
cs
->
fw6
.
ipv6
.
invflags
,
IPT_INV_VIA_IN
);
...
@@ -61,8 +63,16 @@ static int nft_ipv6_add(struct nftnl_rule *r, void *data)
...
@@ -61,8 +63,16 @@ static int nft_ipv6_add(struct nftnl_rule *r, void *data)
add_compat
(
r
,
cs
->
fw6
.
ipv6
.
proto
,
cs
->
fw6
.
ipv6
.
invflags
);
add_compat
(
r
,
cs
->
fw6
.
ipv6
.
proto
,
cs
->
fw6
.
ipv6
.
invflags
);
for
(
matchp
=
cs
->
matches
;
matchp
;
matchp
=
matchp
->
next
)
{
for
(
matchp
=
cs
->
matches
;
matchp
;
matchp
=
matchp
->
next
)
{
if
(
add_match
(
r
,
matchp
->
match
->
m
)
<
0
)
/* Use nft built-in comments support instead of comment match */
break
;
if
(
strcmp
(
matchp
->
match
->
name
,
"comment"
)
==
0
)
{
ret
=
add_comment
(
r
,
(
char
*
)
matchp
->
match
->
m
->
data
);
if
(
ret
<
0
)
return
ret
;
}
else
{
ret
=
add_match
(
r
,
matchp
->
match
->
m
);
if
(
ret
<
0
)
return
ret
;
}
}
}
/* Counters need to me added before the target, otherwise they are
/* Counters need to me added before the target, otherwise they are
...
@@ -134,7 +144,7 @@ static void nft_ipv6_parse_payload(struct nft_xt_ctx *ctx,
...
@@ -134,7 +144,7 @@ static void nft_ipv6_parse_payload(struct nft_xt_ctx *ctx,
}
}
if
(
inv
)
if
(
inv
)
cs
->
fw6
.
ipv6
.
invflags
|=
IPT_INV_SRCIP
;
cs
->
fw6
.
ipv6
.
invflags
|=
IP
6
T_INV_SRCIP
;
break
;
break
;
case
offsetof
(
struct
ip6_hdr
,
ip6_dst
):
case
offsetof
(
struct
ip6_hdr
,
ip6_dst
):
get_cmp_data
(
e
,
&
addr
,
sizeof
(
addr
),
&
inv
);
get_cmp_data
(
e
,
&
addr
,
sizeof
(
addr
),
&
inv
);
...
@@ -147,14 +157,14 @@ static void nft_ipv6_parse_payload(struct nft_xt_ctx *ctx,
...
@@ -147,14 +157,14 @@ static void nft_ipv6_parse_payload(struct nft_xt_ctx *ctx,
}
}
if
(
inv
)
if
(
inv
)
cs
->
fw6
.
ipv6
.
invflags
|=
IPT_INV_DSTIP
;
cs
->
fw6
.
ipv6
.
invflags
|=
IP
6
T_INV_DSTIP
;
break
;
break
;
case
offsetof
(
struct
ip6_hdr
,
ip6_nxt
):
case
offsetof
(
struct
ip6_hdr
,
ip6_nxt
):
get_cmp_data
(
e
,
&
proto
,
sizeof
(
proto
),
&
inv
);
get_cmp_data
(
e
,
&
proto
,
sizeof
(
proto
),
&
inv
);
cs
->
fw6
.
ipv6
.
flags
|=
IP6T_F_PROTO
;
cs
->
fw6
.
ipv6
.
flags
|=
IP6T_F_PROTO
;
cs
->
fw6
.
ipv6
.
proto
=
proto
;
cs
->
fw6
.
ipv6
.
proto
=
proto
;
if
(
inv
)
if
(
inv
)
cs
->
fw6
.
ipv6
.
invflags
|=
IPT_INV_PROTO
;
cs
->
fw6
.
ipv6
.
invflags
|=
IP
6
T_INV_PROTO
;
default:
default:
DEBUGP
(
"unknown payload offset %d
\n
"
,
ctx
->
payload
.
offset
);
DEBUGP
(
"unknown payload offset %d
\n
"
,
ctx
->
payload
.
offset
);
break
;
break
;
...
@@ -185,7 +195,7 @@ static void print_ipv6_addr(const struct iptables_command_state *cs,
...
@@ -185,7 +195,7 @@ static void print_ipv6_addr(const struct iptables_command_state *cs,
{
{
char
buf
[
BUFSIZ
];
char
buf
[
BUFSIZ
];
fputc
(
cs
->
fw6
.
ipv6
.
invflags
&
IPT_INV_SRCIP
?
'!'
:
' '
,
stdout
);
fputc
(
cs
->
fw6
.
ipv6
.
invflags
&
IP
6
T_INV_SRCIP
?
'!'
:
' '
,
stdout
);
if
(
IN6_IS_ADDR_UNSPECIFIED
(
&
cs
->
fw6
.
ipv6
.
src
)
if
(
IN6_IS_ADDR_UNSPECIFIED
(
&
cs
->
fw6
.
ipv6
.
src
)
&&
!
(
format
&
FMT_NUMERIC
))
&&
!
(
format
&
FMT_NUMERIC
))
printf
(
FMT
(
"%-19s "
,
"%s "
),
"anywhere"
);
printf
(
FMT
(
"%-19s "
,
"%s "
),
"anywhere"
);
...
@@ -201,7 +211,7 @@ static void print_ipv6_addr(const struct iptables_command_state *cs,
...
@@ -201,7 +211,7 @@ static void print_ipv6_addr(const struct iptables_command_state *cs,
}
}
fputc
(
cs
->
fw6
.
ipv6
.
invflags
&
IPT_INV_DSTIP
?
'!'
:
' '
,
stdout
);
fputc
(
cs
->
fw6
.
ipv6
.
invflags
&
IP
6
T_INV_DSTIP
?
'!'
:
' '
,
stdout
);
if
(
IN6_IS_ADDR_UNSPECIFIED
(
&
cs
->
fw6
.
ipv6
.
dst
)
if
(
IN6_IS_ADDR_UNSPECIFIED
(
&
cs
->
fw6
.
ipv6
.
dst
)
&&
!
(
format
&
FMT_NUMERIC
))
&&
!
(
format
&
FMT_NUMERIC
))
printf
(
FMT
(
"%-19s "
,
"-> %s"
),
"anywhere"
);
printf
(
FMT
(
"%-19s "
,
"-> %s"
),
"anywhere"
);
...
@@ -265,9 +275,9 @@ static void nft_ipv6_save_firewall(const void *data, unsigned int format)
...
@@ -265,9 +275,9 @@ static void nft_ipv6_save_firewall(const void *data, unsigned int format)
cs
->
fw6
.
ipv6
.
outiface_mask
);
cs
->
fw6
.
ipv6
.
outiface_mask
);
save_ipv6_addr
(
's'
,
&
cs
->
fw6
.
ipv6
.
src
,
save_ipv6_addr
(
's'
,
&
cs
->
fw6
.
ipv6
.
src
,
cs
->
fw6
.
ipv6
.
invflags
&
IPT_INV_SRCIP
);
cs
->
fw6
.
ipv6
.
invflags
&
IP
6
T_INV_SRCIP
);
save_ipv6_addr
(
'd'
,
&
cs
->
fw6
.
ipv6
.
dst
,
save_ipv6_addr
(
'd'
,
&
cs
->
fw6
.
ipv6
.
dst
,
cs
->
fw6
.
ipv6
.
invflags
&
IPT_INV_DSTIP
);
cs
->
fw6
.
ipv6
.
invflags
&
IP
6
T_INV_DSTIP
);
save_matches_and_target
(
cs
->
matches
,
cs
->
target
,
save_matches_and_target
(
cs
->
matches
,
cs
->
target
,
cs
->
jumpto
,
cs
->
fw6
.
ipv6
.
flags
,
&
cs
->
fw6
);
cs
->
jumpto
,
cs
->
fw6
.
ipv6
.
flags
,
&
cs
->
fw6
);
...
@@ -376,6 +386,66 @@ static void nft_ipv6_save_counters(const void *data)
...
@@ -376,6 +386,66 @@ static void nft_ipv6_save_counters(const void *data)
save_counters
(
cs
->
counters
.
pcnt
,
cs
->
counters
.
bcnt
);
save_counters
(
cs
->
counters
.
pcnt
,
cs
->
counters
.
bcnt
);
}
}
static
void
xlate_ipv6_addr
(
const
char
*
selector
,
const
struct
in6_addr
*
addr
,
int
invert
,
struct
xt_xlate
*
xl
)
{
char
addr_str
[
INET6_ADDRSTRLEN
];
if
(
!
invert
&&
IN6_IS_ADDR_UNSPECIFIED
(
addr
))
return
;
inet_ntop
(
AF_INET6
,
addr
,
addr_str
,
INET6_ADDRSTRLEN
);
xt_xlate_add
(
xl
,
"%s %s%s "
,
selector
,
invert
?
"!= "
:
""
,
addr_str
);
}
static
int
nft_ipv6_xlate
(
const
void
*
data
,
struct
xt_xlate
*
xl
)
{
const
struct
iptables_command_state
*
cs
=
data
;
const
char
*
comment
;
int
ret
;
xlate_ifname
(
xl
,
"iifname"
,
cs
->
fw6
.
ipv6
.
iniface
,
cs
->
fw6
.
ipv6
.
invflags
&
IP6T_INV_VIA_IN
);
xlate_ifname
(
xl
,
"oifname"
,
cs
->
fw6
.
ipv6
.
outiface
,
cs
->
fw6
.
ipv6
.
invflags
&
IP6T_INV_VIA_OUT
);
if
(
cs
->
fw6
.
ipv6
.
proto
!=
0
)
{
const
struct
protoent
*
pent
=
getprotobynumber
(
cs
->
fw6
.
ipv6
.
proto
);
char
protonum
[
strlen
(
"255"
)
+
1
];
if
(
!
xlate_find_match
(
cs
,
pent
->
p_name
))
{
snprintf
(
protonum
,
sizeof
(
protonum
),
"%u"
,
cs
->
fw6
.
ipv6
.
proto
);
protonum
[
sizeof
(
protonum
)
-
1
]
=
'\0'
;
xt_xlate_add
(
xl
,
"meta l4proto %s%s "
,
cs
->
fw6
.
ipv6
.
invflags
&
IP6T_INV_PROTO
?
"!= "
:
""
,
pent
?
pent
->
p_name
:
protonum
);
}
}
xlate_ipv6_addr
(
"ip6 saddr"
,
&
cs
->
fw6
.
ipv6
.
src
,
cs
->
fw6
.
ipv6
.
invflags
&
IP6T_INV_SRCIP
,
xl
);
xlate_ipv6_addr
(
"ip6 daddr"
,
&
cs
->
fw6
.
ipv6
.
dst
,
cs
->
fw6
.
ipv6
.
invflags
&
IP6T_INV_DSTIP
,
xl
);
ret
=
xlate_matches
(
cs
,
xl
);
if
(
!
ret
)
return
ret
;
/* Always add counters per rule, as in iptables */
xt_xlate_add
(
xl
,
"counter "
);
comment
=
xt_xlate_get_comment
(
xl
);
if
(
comment
)
xt_xlate_add
(
xl
,
"comment %s"
,
comment
);
ret
=
xlate_action
(
cs
,
!!
(
cs
->
fw6
.
ipv6
.
flags
&
IP6T_F_GOTO
),
xl
);
return
ret
;
}
struct
nft_family_ops
nft_family_ops_ipv6
=
{
struct
nft_family_ops
nft_family_ops_ipv6
=
{
.
add
=
nft_ipv6_add
,
.
add
=
nft_ipv6_add
,
.
is_same
=
nft_ipv6_is_same
,
.
is_same
=
nft_ipv6_is_same
,
...
@@ -390,4 +460,5 @@ struct nft_family_ops nft_family_ops_ipv6 = {
...
@@ -390,4 +460,5 @@ struct nft_family_ops nft_family_ops_ipv6 = {
.
post_parse
=
nft_ipv6_post_parse
,
.
post_parse
=
nft_ipv6_post_parse
,
.
parse_target
=
nft_ipv6_parse_target
,
.
parse_target
=
nft_ipv6_parse_target
,
.
rule_find
=
nft_ipv6_rule_find
,
.
rule_find
=
nft_ipv6_rule_find
,
.
xlate
=
nft_ipv6_xlate
,
};
};
iptables/nft-shared.c
View file @
7b095084
...
@@ -525,6 +525,32 @@ void nft_rule_to_iptables_command_state(struct nftnl_rule *r,
...
@@ -525,6 +525,32 @@ void nft_rule_to_iptables_command_state(struct nftnl_rule *r,
nftnl_expr_iter_destroy
(
iter
);
nftnl_expr_iter_destroy
(
iter
);
if
(
nftnl_rule_is_set
(
r
,
NFTNL_RULE_USERDATA
))
{
const
void
*
data
;
uint32_t
len
;
struct
xtables_match
*
match
;
struct
xt_entry_match
*
m
;
data
=
nftnl_rule_get_data
(
r
,
NFTNL_RULE_USERDATA
,
&
len
);
match
=
xtables_find_match
(
"comment"
,
XTF_TRY_LOAD
,
&
cs
->
matches
);
if
(
match
==
NULL
)
return
;
m
=
calloc
(
1
,
sizeof
(
struct
xt_entry_match
)
+
len
);
if
(
m
==
NULL
)
{
fprintf
(
stderr
,
"OOM"
);
exit
(
EXIT_FAILURE
);
}
memcpy
(
&
m
->
data
,
get_comment
(
data
,
len
),
len
);
m
->
u
.
match_size
=
len
+
XT_ALIGN
(
sizeof
(
struct
xt_entry_match
));
m
->
u
.
user
.
revision
=
0
;
strcpy
(
m
->
u
.
user
.
name
,
match
->
name
);
match
->
m
=
m
;
}
if
(
cs
->
target
!=
NULL
)
if
(
cs
->
target
!=
NULL
)
cs
->
jumpto
=
cs
->
target
->
name
;
cs
->
jumpto
=
cs
->
target
->
name
;
else
if
(
cs
->
jumpto
!=
NULL
)
else
if
(
cs
->
jumpto
!=
NULL
)
...
...
iptables/nft-shared.h
View file @
7b095084
...
@@ -37,6 +37,7 @@
...
@@ -37,6 +37,7 @@
#define FMT(tab,notab) ((format) & FMT_NOTABLE ? (notab) : (tab))
#define FMT(tab,notab) ((format) & FMT_NOTABLE ? (notab) : (tab))
struct
xtables_args
;
struct
xtables_args
;
struct
xt_xlate
;
enum
{
enum
{
NFT_XT_CTX_PAYLOAD
=
(
1
<<
0
),
NFT_XT_CTX_PAYLOAD
=
(
1
<<
0
),
...
@@ -101,6 +102,7 @@ struct nft_family_ops {
...
@@ -101,6 +102,7 @@ struct nft_family_ops {
void
(
*
parse_target
)(
struct
xtables_target
*
t
,
void
*
data
);
void
(
*
parse_target
)(
struct
xtables_target
*
t
,
void
*
data
);
bool
(
*
rule_find
)(
struct
nft_family_ops
*
ops
,
struct
nftnl_rule
*
r
,
bool
(
*
rule_find
)(
struct
nft_family_ops
*
ops
,
struct
nftnl_rule
*
r
,
void
*
data
);
void
*
data
);
int
(
*
xlate
)(
const
void
*
data
,
struct
xt_xlate
*
xl
);
};
};
void
add_meta
(
struct
nftnl_rule
*
r
,
uint32_t
key
);
void
add_meta
(
struct
nftnl_rule
*
r
,
uint32_t
key
);
...
@@ -217,4 +219,54 @@ struct xtables_args {
...
@@ -217,4 +219,54 @@ struct xtables_args {
#define CMD_ZERO_NUM 0x2000U
#define CMD_ZERO_NUM 0x2000U
#define CMD_CHECK 0x4000U
#define CMD_CHECK 0x4000U
struct
nft_xt_cmd_parse
{
unsigned
int
command
;
unsigned
int
rulenum
;
char
*
table
;
char
*
chain
;
char
*
newname
;
char
*
policy
;
bool
restore
;
int
verbose
;
};
void
do_parse
(
struct
nft_handle
*
h
,
int
argc
,
char
*
argv
[],
struct
nft_xt_cmd_parse
*
p
,
struct
iptables_command_state
*
cs
,
struct
xtables_args
*
args
);
struct
nft_xt_restore_parse
{
FILE
*
in
;
int
testing
;
const
char
*
tablename
;
};
struct
nftnl_chain_list
;
struct
nft_xt_restore_cb
{
void
(
*
table_new
)(
struct
nft_handle
*
h
,
const
char
*
table
);
struct
nftnl_chain_list
*
(
*
chain_list
)(
struct
nft_handle
*
h
);
int
(
*
chains_purge
)(
struct
nft_handle
*
h
,
const
char
*
table
,
struct
nftnl_chain_list
*
clist
);
void
(
*
chain_del
)(
struct
nftnl_chain_list
*
clist
,
const
char
*
curtable
,
const
char
*
chain
);
int
(
*
chain_set
)(
struct
nft_handle
*
h
,
const
char
*
table
,
const
char
*
chain
,
const
char
*
policy
,
const
struct
xt_counters
*
counters
);
int
(
*
chain_user_add
)(
struct
nft_handle
*
h
,
const
char
*
chain
,
const
char
*
table
);
int
(
*
rule_flush
)(
struct
nft_handle
*
h
,
const
char
*
chain
,
const
char
*
table
);
int
(
*
do_command
)(
struct
nft_handle
*
h
,
int
argc
,
char
*
argv
[],
char
**
table
,
bool
restore
);
int
(
*
commit
)(
struct
nft_handle
*
h
);
int
(
*
abort
)(
struct
nft_handle
*
h
);
};
void
xtables_restore_parse
(
struct
nft_handle
*
h
,
struct
nft_xt_restore_parse
*
p
,
struct
nft_xt_restore_cb
*
cb
,
int
argc
,
char
*
argv
[]);
#endif
#endif
iptables/nft.c
View file @
7b095084
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
#include <libnftnl/rule.h>
#include <libnftnl/rule.h>
#include <libnftnl/expr.h>
#include <libnftnl/expr.h>
#include <libnftnl/set.h>
#include <libnftnl/set.h>
#include <libnftnl/udata.h>
#include <netinet/in.h>
/* inet_ntoa */
#include <netinet/in.h>
/* inet_ntoa */
#include <arpa/inet.h>
#include <arpa/inet.h>
...
@@ -779,8 +780,18 @@ int nft_init(struct nft_handle *h, struct builtin_table *t)
...
@@ -779,8 +780,18 @@ int nft_init(struct nft_handle *h, struct builtin_table *t)
return
0
;
return
0
;
}
}
static
void
flush_rule_cache
(
struct
nft_handle
*
h
)
{
if
(
!
h
->
rule_cache
)
return
;
nftnl_rule_list_free
(
h
->
rule_cache
);
h
->
rule_cache
=
NULL
;
}
void
nft_fini
(
struct
nft_handle
*
h
)
void
nft_fini
(
struct
nft_handle
*
h
)
{
{
flush_rule_cache
(
h
);
mnl_socket_close
(
h
->
nl
);
mnl_socket_close
(
h
->
nl
);
free
(
mnl_nlmsg_batch_head
(
h
->
batch
));
free
(
mnl_nlmsg_batch_head
(
h
->
batch
));
mnl_nlmsg_batch_stop
(
h
->
batch
);
mnl_nlmsg_batch_stop
(
h
->
batch
);
...
@@ -1007,6 +1018,63 @@ int add_counters(struct nftnl_rule *r, uint64_t packets, uint64_t bytes)
...
@@ -1007,6 +1018,63 @@ int add_counters(struct nftnl_rule *r, uint64_t packets, uint64_t bytes)
return
0
;
return
0
;
}
}
enum
udata_type
{
UDATA_TYPE_COMMENT
,
__UDATA_TYPE_MAX
,
};
#define UDATA_TYPE_MAX (__UDATA_TYPE_MAX - 1)
int
add_comment
(
struct
nftnl_rule
*
r
,
const
char
*
comment
)
{
struct
nftnl_udata_buf
*
udata
;
udata
=
nftnl_udata_buf_alloc
(
NFT_USERDATA_MAXLEN
);
if
(
!
udata
)
return
-
ENOMEM
;
if
(
!
nftnl_udata_put_strz
(
udata
,
UDATA_TYPE_COMMENT
,
comment
))
return
-
ENOMEM
;
nftnl_rule_set_data
(
r
,
NFTNL_RULE_USERDATA
,
nftnl_udata_buf_data
(
udata
),
nftnl_udata_buf_len
(
udata
));
nftnl_udata_buf_free
(
udata
);
return
0
;
}
static
int
parse_udata_cb
(
const
struct
nftnl_udata
*
attr
,
void
*
data
)
{
unsigned
char
*
value
=
nftnl_udata_get
(
attr
);
uint8_t
type
=
nftnl_udata_type
(
attr
);
uint8_t
len
=
nftnl_udata_len
(
attr
);
const
struct
nftnl_udata
**
tb
=
data
;
switch
(
type
)
{
case
UDATA_TYPE_COMMENT
:
if
(
value
[
len
-
1
]
!=
'\0'
)
return
-
1
;
break
;
default:
return
0
;
}
tb
[
type
]
=
attr
;
return
0
;
}
char
*
get_comment
(
const
void
*
data
,
uint32_t
data_len
)
{
const
struct
nftnl_udata
*
tb
[
UDATA_TYPE_MAX
+
1
]
=
{};
if
(
nftnl_udata_parse
(
data
,
data_len
,
parse_udata_cb
,
tb
)
<
0
)
return
NULL
;
if
(
!
tb
[
UDATA_TYPE_COMMENT
])
return
NULL
;
return
nftnl_udata_get
(
tb
[
UDATA_TYPE_COMMENT
]);
}
void
add_compat
(
struct
nftnl_rule
*
r
,
uint32_t
proto
,
bool
inv
)
void
add_compat
(
struct
nftnl_rule
*
r
,
uint32_t
proto
,
bool
inv
)
{
{
nftnl_rule_set_u32
(
r
,
NFTNL_RULE_COMPAT_PROTO
,
proto
);
nftnl_rule_set_u32
(
r
,
NFTNL_RULE_COMPAT_PROTO
,
proto
);
...
@@ -1063,6 +1131,7 @@ nft_rule_append(struct nft_handle *h, const char *chain, const char *table,
...
@@ -1063,6 +1131,7 @@ nft_rule_append(struct nft_handle *h, const char *chain, const char *table,
if
(
batch_rule_add
(
h
,
type
,
r
)
<
0
)
if
(
batch_rule_add
(
h
,
type
,
r
)
<
0
)
nftnl_rule_free
(
r
);
nftnl_rule_free
(
r
);
flush_rule_cache
(
h
);
return
1
;
return
1
;
}
}
...
@@ -1226,6 +1295,9 @@ static struct nftnl_rule_list *nft_rule_list_get(struct nft_handle *h)
...
@@ -1226,6 +1295,9 @@ static struct nftnl_rule_list *nft_rule_list_get(struct nft_handle *h)
struct
nftnl_rule_list
*
list
;
struct
nftnl_rule_list
*
list
;
int
ret
;
int
ret
;
if
(
h
->
rule_cache
)
return
h
->
rule_cache
;
list
=
nftnl_rule_list_alloc
();
list
=
nftnl_rule_list_alloc
();
if
(
list
==
NULL
)
if
(
list
==
NULL
)
return
0
;
return
0
;
...
@@ -1239,6 +1311,7 @@ static struct nftnl_rule_list *nft_rule_list_get(struct nft_handle *h)
...
@@ -1239,6 +1311,7 @@ static struct nftnl_rule_list *nft_rule_list_get(struct nft_handle *h)
return
NULL
;
return
NULL
;
}
}
h
->
rule_cache
=
list
;
return
list
;
return
list
;
}
}
...
@@ -1275,7 +1348,6 @@ next:
...
@@ -1275,7 +1348,6 @@ next:
}
}
nftnl_rule_list_iter_destroy
(
iter
);
nftnl_rule_list_iter_destroy
(
iter
);
nftnl_rule_list_free
(
list
);
/* the core expects 1 for success and 0 for error */
/* the core expects 1 for success and 0 for error */
return
1
;
return
1
;
...
@@ -1338,6 +1410,7 @@ next:
...
@@ -1338,6 +1410,7 @@ next:
}
}
nftnl_chain_list_iter_destroy
(
iter
);
nftnl_chain_list_iter_destroy
(
iter
);
flush_rule_cache
(
h
);
err:
err:
nftnl_chain_list_free
(
list
);
nftnl_chain_list_free
(
list
);
...
@@ -1708,16 +1781,6 @@ static int __nft_rule_del(struct nft_handle *h, struct nftnl_rule_list *list,
...
@@ -1708,16 +1781,6 @@ static int __nft_rule_del(struct nft_handle *h, struct nftnl_rule_list *list,
return
1
;
return
1
;
}
}
struct
nftnl_rule_list
*
nft_rule_list_create
(
struct
nft_handle
*
h
)
{
return
nft_rule_list_get
(
h
);
}
void
nft_rule_list_destroy
(
struct
nftnl_rule_list
*
list
)
{
nftnl_rule_list_free
(
list
);
}
static
struct
nftnl_rule
*
static
struct
nftnl_rule
*
nft_rule_find
(
struct
nft_handle
*
h
,
struct
nftnl_rule_list
*
list
,
nft_rule_find
(
struct
nft_handle
*
h
,
struct
nftnl_rule_list
*
list
,
const
char
*
chain
,
const
char
*
table
,
void
*
data
,
int
rulenum
)
const
char
*
chain
,
const
char
*
table
,
void
*
data
,
int
rulenum
)
...
@@ -1773,7 +1836,7 @@ int nft_rule_check(struct nft_handle *h, const char *chain,
...
@@ -1773,7 +1836,7 @@ int nft_rule_check(struct nft_handle *h, const char *chain,
nft_fn
=
nft_rule_check
;
nft_fn
=
nft_rule_check
;
list
=
nft_rule_list_
create
(
h
);
list
=
nft_rule_list_
get
(
h
);
if
(
list
==
NULL
)
if
(
list
==
NULL
)
return
0
;
return
0
;
...
@@ -1781,8 +1844,6 @@ int nft_rule_check(struct nft_handle *h, const char *chain,
...
@@ -1781,8 +1844,6 @@ int nft_rule_check(struct nft_handle *h, const char *chain,
if
(
ret
==
0
)
if
(
ret
==
0
)
errno
=
ENOENT
;
errno
=
ENOENT
;
nft_rule_list_destroy
(
list
);
return
ret
;
return
ret
;
}
}
...
@@ -1795,7 +1856,7 @@ int nft_rule_delete(struct nft_handle *h, const char *chain,
...
@@ -1795,7 +1856,7 @@ int nft_rule_delete(struct nft_handle *h, const char *chain,
nft_fn
=
nft_rule_delete
;
nft_fn
=
nft_rule_delete
;
list
=
nft_rule_list_
create
(
h
);
list
=
nft_rule_list_
get
(
h
);
if
(
list
==
NULL
)
if
(
list
==
NULL
)
return
0
;
return
0
;
...
@@ -1807,7 +1868,7 @@ int nft_rule_delete(struct nft_handle *h, const char *chain,
...
@@ -1807,7 +1868,7 @@ int nft_rule_delete(struct nft_handle *h, const char *chain,
}
else
}
else
errno
=
ENOENT
;
errno
=
ENOENT
;
nft
_rule_
list_destroy
(
list
);
flush
_rule_
cache
(
h
);
return
ret
;
return
ret
;
}
}
...
@@ -1831,6 +1892,7 @@ nft_rule_add(struct nft_handle *h, const char *chain,
...
@@ -1831,6 +1892,7 @@ nft_rule_add(struct nft_handle *h, const char *chain,
return
0
;
return
0
;
}
}
flush_rule_cache
(
h
);
return
1
;
return
1
;
}
}
...
@@ -1848,7 +1910,7 @@ int nft_rule_insert(struct nft_handle *h, const char *chain,
...
@@ -1848,7 +1910,7 @@ int nft_rule_insert(struct nft_handle *h, const char *chain,
nft_fn
=
nft_rule_insert
;
nft_fn
=
nft_rule_insert
;
if
(
rulenum
>
0
)
{
if
(
rulenum
>
0
)
{
list
=
nft_rule_list_
create
(
h
);
list
=
nft_rule_list_
get
(
h
);
if
(
list
==
NULL
)
if
(
list
==
NULL
)
goto
err
;
goto
err
;
...
@@ -1860,7 +1922,7 @@ int nft_rule_insert(struct nft_handle *h, const char *chain,
...
@@ -1860,7 +1922,7 @@ int nft_rule_insert(struct nft_handle *h, const char *chain,
r
=
nft_rule_find
(
h
,
list
,
chain
,
table
,
data
,
r
=
nft_rule_find
(
h
,
list
,
chain
,
table
,
data
,
rulenum
-
1
);
rulenum
-
1
);
if
(
r
!=
NULL
)
{
if
(
r
!=
NULL
)
{
nft
_rule_
list_destroy
(
list
);
flush
_rule_
cache
(
h
);
return
nft_rule_append
(
h
,
chain
,
table
,
data
,
return
nft_rule_append
(
h
,
chain
,
table
,
data
,
0
,
verbose
);
0
,
verbose
);
}
}
...
@@ -1872,12 +1934,12 @@ int nft_rule_insert(struct nft_handle *h, const char *chain,
...
@@ -1872,12 +1934,12 @@ int nft_rule_insert(struct nft_handle *h, const char *chain,
handle
=
nftnl_rule_get_u64
(
r
,
NFTNL_RULE_HANDLE
);
handle
=
nftnl_rule_get_u64
(
r
,
NFTNL_RULE_HANDLE
);
DEBUGP
(
"adding after rule handle %"
PRIu64
"
\n
"
,
handle
);
DEBUGP
(
"adding after rule handle %"
PRIu64
"
\n
"
,
handle
);
nft
_rule_
list_destroy
(
list
);
flush
_rule_
cache
(
h
);
}
}
return
nft_rule_add
(
h
,
chain
,
table
,
data
,
handle
,
verbose
);
return
nft_rule_add
(
h
,
chain
,
table
,
data
,
handle
,
verbose
);
err:
err:
nft
_rule_
list_destroy
(
list
);
flush
_rule_
cache
(
h
);
return
0
;
return
0
;
}
}
...
@@ -1890,7 +1952,7 @@ int nft_rule_delete_num(struct nft_handle *h, const char *chain,
...
@@ -1890,7 +1952,7 @@ int nft_rule_delete_num(struct nft_handle *h, const char *chain,
nft_fn
=
nft_rule_delete_num
;
nft_fn
=
nft_rule_delete_num
;
list
=
nft_rule_list_
create
(
h
);
list
=
nft_rule_list_
get
(
h
);
if
(
list
==
NULL
)
if
(
list
==
NULL
)
return
0
;
return
0
;
...
@@ -1905,7 +1967,7 @@ int nft_rule_delete_num(struct nft_handle *h, const char *chain,
...
@@ -1905,7 +1967,7 @@ int nft_rule_delete_num(struct nft_handle *h, const char *chain,
}
else
}
else
errno
=
ENOENT
;
errno
=
ENOENT
;
nft
_rule_
list_destroy
(
list
);
flush
_rule_
cache
(
h
);
return
ret
;
return
ret
;
}
}
...
@@ -1919,7 +1981,7 @@ int nft_rule_replace(struct nft_handle *h, const char *chain,
...
@@ -1919,7 +1981,7 @@ int nft_rule_replace(struct nft_handle *h, const char *chain,
nft_fn
=
nft_rule_replace
;
nft_fn
=
nft_rule_replace
;
list
=
nft_rule_list_
create
(
h
);
list
=
nft_rule_list_
get
(
h
);
if
(
list
==
NULL
)
if
(
list
==
NULL
)
return
0
;
return
0
;
...
@@ -1935,7 +1997,7 @@ int nft_rule_replace(struct nft_handle *h, const char *chain,
...
@@ -1935,7 +1997,7 @@ int nft_rule_replace(struct nft_handle *h, const char *chain,
}
else
}
else
errno
=
ENOENT
;
errno
=
ENOENT
;
nft
_rule_
list_destroy
(
list
);
flush
_rule_
cache
(
h
);
return
ret
;
return
ret
;
}
}
...
@@ -1989,8 +2051,6 @@ next:
...
@@ -1989,8 +2051,6 @@ next:
nftnl_rule_list_iter_destroy
(
iter
);
nftnl_rule_list_iter_destroy
(
iter
);
err:
err:
nftnl_rule_list_free
(
list
);
if
(
ret
==
0
)
if
(
ret
==
0
)
errno
=
ENOENT
;
errno
=
ENOENT
;
...
@@ -2198,7 +2258,7 @@ int nft_rule_zero_counters(struct nft_handle *h, const char *chain,
...
@@ -2198,7 +2258,7 @@ int nft_rule_zero_counters(struct nft_handle *h, const char *chain,
nft_fn
=
nft_rule_delete
;
nft_fn
=
nft_rule_delete
;
list
=
nft_rule_list_
create
(
h
);
list
=
nft_rule_list_
get
(
h
);
if
(
list
==
NULL
)
if
(
list
==
NULL
)
return
0
;
return
0
;
...
@@ -2218,7 +2278,7 @@ int nft_rule_zero_counters(struct nft_handle *h, const char *chain,
...
@@ -2218,7 +2278,7 @@ int nft_rule_zero_counters(struct nft_handle *h, const char *chain,
false
);
false
);
error:
error:
nft
_rule_
list_destroy
(
list
);
flush
_rule_
cache
(
h
);
return
ret
;
return
ret
;
}
}
...
@@ -2650,3 +2710,197 @@ uint32_t nft_invflags2cmp(uint32_t invflags, uint32_t flag)
...
@@ -2650,3 +2710,197 @@ uint32_t nft_invflags2cmp(uint32_t invflags, uint32_t flag)
return
NFT_CMP_EQ
;
return
NFT_CMP_EQ
;
}
}
#define NFT_COMPAT_EXPR_MAX 8
static
const
char
*
supported_exprs
[
NFT_COMPAT_EXPR_MAX
]
=
{
"match"
,
"target"
,
"payload"
,
"meta"
,
"cmp"
,
"bitwise"
,
"counter"
,
"immediate"
};
static
int
nft_is_expr_compatible
(
const
char
*
name
)
{
int
i
;
for
(
i
=
0
;
i
<
NFT_COMPAT_EXPR_MAX
;
i
++
)
{
if
(
strcmp
(
supported_exprs
[
i
],
name
)
==
0
)
return
0
;
}
return
1
;
}
static
int
nft_is_rule_compatible
(
struct
nftnl_rule
*
rule
)
{
struct
nftnl_expr_iter
*
iter
;
struct
nftnl_expr
*
expr
;
int
ret
=
0
;
iter
=
nftnl_expr_iter_create
(
rule
);
if
(
iter
==
NULL
)
return
-
1
;
expr
=
nftnl_expr_iter_next
(
iter
);
while
(
expr
!=
NULL
)
{
const
char
*
name
=
nftnl_expr_get_str
(
expr
,
NFTNL_EXPR_NAME
);
if
(
nft_is_expr_compatible
(
name
)
==
0
)
{
expr
=
nftnl_expr_iter_next
(
iter
);
continue
;
}
ret
=
1
;
break
;
}
nftnl_expr_iter_destroy
(
iter
);
return
ret
;
}
static
int
nft_is_chain_compatible
(
const
char
*
table
,
const
char
*
chain
)
{
const
char
*
cur_table
;
struct
builtin_chain
*
chains
;
int
i
,
j
;
for
(
i
=
0
;
i
<
TABLES_MAX
;
i
++
)
{
cur_table
=
xtables_ipv4
[
i
].
name
;
chains
=
xtables_ipv4
[
i
].
chains
;
if
(
strcmp
(
table
,
cur_table
)
!=
0
)
continue
;
for
(
j
=
0
;
j
<
NF_INET_NUMHOOKS
&&
chains
[
j
].
name
;
j
++
)
{
if
(
strcmp
(
chain
,
chains
[
j
].
name
)
==
0
)
return
0
;
}
}
return
1
;
}
static
int
nft_are_chains_compatible
(
struct
nft_handle
*
h
)
{
struct
nftnl_chain_list
*
list
;
struct
nftnl_chain_list_iter
*
iter
;
struct
nftnl_chain
*
chain
;
int
ret
=
0
;
list
=
nftnl_chain_list_get
(
h
);
if
(
list
==
NULL
)
return
-
1
;
iter
=
nftnl_chain_list_iter_create
(
list
);
if
(
iter
==
NULL
)
return
-
1
;
chain
=
nftnl_chain_list_iter_next
(
iter
);
while
(
chain
!=
NULL
)
{
if
(
!
nft_chain_builtin
(
chain
))
goto
next
;
const
char
*
table
=
nftnl_chain_get
(
chain
,
NFTNL_CHAIN_TABLE
);
const
char
*
name
=
nftnl_chain_get
(
chain
,
NFTNL_CHAIN_NAME
);
if
(
nft_is_chain_compatible
(
table
,
name
)
==
1
)
{
ret
=
1
;
break
;
}
next:
chain
=
nftnl_chain_list_iter_next
(
iter
);
}
nftnl_chain_list_iter_destroy
(
iter
);
nftnl_chain_list_free
(
list
);
return
ret
;
}
static
int
nft_is_table_compatible
(
const
char
*
name
)
{
int
i
;
for
(
i
=
0
;
i
<
TABLES_MAX
;
i
++
)
{
if
(
strcmp
(
xtables_ipv4
[
i
].
name
,
name
)
==
0
)
return
0
;
}
return
1
;
}
static
int
nft_are_tables_compatible
(
struct
nft_handle
*
h
)
{
struct
nftnl_table_list
*
list
;
struct
nftnl_table_list_iter
*
iter
;
struct
nftnl_table
*
table
;
int
ret
=
0
;
list
=
nftnl_table_list_get
(
h
);
if
(
list
==
NULL
)
return
-
1
;
iter
=
nftnl_table_list_iter_create
(
list
);
if
(
iter
==
NULL
)
return
-
1
;
table
=
nftnl_table_list_iter_next
(
iter
);
while
(
table
!=
NULL
)
{
const
char
*
name
=
nftnl_table_get
(
table
,
NFTNL_TABLE_NAME
);
if
(
nft_is_table_compatible
(
name
)
==
0
)
{
table
=
nftnl_table_list_iter_next
(
iter
);
continue
;
}
ret
=
1
;
break
;
}
nftnl_table_list_iter_destroy
(
iter
);
nftnl_table_list_free
(
list
);
return
ret
;
}
int
nft_is_ruleset_compatible
(
struct
nft_handle
*
h
)
{
struct
nftnl_rule_list
*
list
;
struct
nftnl_rule_list_iter
*
iter
;
struct
nftnl_rule
*
rule
;
int
ret
=
0
;
ret
=
nft_are_tables_compatible
(
h
);
if
(
ret
!=
0
)
return
ret
;
ret
=
nft_are_chains_compatible
(
h
);
if
(
ret
!=
0
)
return
ret
;
list
=
nft_rule_list_get
(
h
);
if
(
list
==
NULL
)
return
-
1
;
iter
=
nftnl_rule_list_iter_create
(
list
);
if
(
iter
==
NULL
)
return
-
1
;
rule
=
nftnl_rule_list_iter_next
(
iter
);
while
(
rule
!=
NULL
)
{
ret
=
nft_is_rule_compatible
(
rule
);
if
(
ret
!=
0
)
break
;
rule
=
nftnl_rule_list_iter_next
(
iter
);
}
nftnl_rule_list_iter_destroy
(
iter
);
return
ret
;
}
iptables/nft.h
View file @
7b095084
...
@@ -35,6 +35,7 @@ struct nft_handle {
...
@@ -35,6 +35,7 @@ struct nft_handle {
struct
mnl_nlmsg_batch
*
batch
;
struct
mnl_nlmsg_batch
*
batch
;
struct
nft_family_ops
*
ops
;
struct
nft_family_ops
*
ops
;
struct
builtin_table
*
tables
;
struct
builtin_table
*
tables
;
struct
nftnl_rule_list
*
rule_cache
;
bool
restore
;
bool
restore
;
bool
batch_support
;
bool
batch_support
;
};
};
...
@@ -92,9 +93,6 @@ int nft_rule_save(struct nft_handle *h, const char *table, bool counters);
...
@@ -92,9 +93,6 @@ int nft_rule_save(struct nft_handle *h, const char *table, bool counters);
int
nft_rule_flush
(
struct
nft_handle
*
h
,
const
char
*
chain
,
const
char
*
table
);
int
nft_rule_flush
(
struct
nft_handle
*
h
,
const
char
*
chain
,
const
char
*
table
);
int
nft_rule_zero_counters
(
struct
nft_handle
*
h
,
const
char
*
chain
,
const
char
*
table
,
int
rulenum
);
int
nft_rule_zero_counters
(
struct
nft_handle
*
h
,
const
char
*
chain
,
const
char
*
table
,
int
rulenum
);
struct
nftnl_rule_list
*
nft_rule_list_create
(
struct
nft_handle
*
h
);
void
nft_rule_list_destroy
(
struct
nftnl_rule_list
*
list
);
/*
/*
* Operations used in userspace tools
* Operations used in userspace tools
*/
*/
...
@@ -104,6 +102,8 @@ int add_match(struct nftnl_rule *r, struct xt_entry_match *m);
...
@@ -104,6 +102,8 @@ int add_match(struct nftnl_rule *r, struct xt_entry_match *m);
int
add_target
(
struct
nftnl_rule
*
r
,
struct
xt_entry_target
*
t
);
int
add_target
(
struct
nftnl_rule
*
r
,
struct
xt_entry_target
*
t
);
int
add_jumpto
(
struct
nftnl_rule
*
r
,
const
char
*
name
,
int
verdict
);
int
add_jumpto
(
struct
nftnl_rule
*
r
,
const
char
*
name
,
int
verdict
);
int
add_action
(
struct
nftnl_rule
*
r
,
struct
iptables_command_state
*
cs
,
bool
goto_set
);
int
add_action
(
struct
nftnl_rule
*
r
,
struct
iptables_command_state
*
cs
,
bool
goto_set
);
int
add_comment
(
struct
nftnl_rule
*
r
,
const
char
*
comment
);
char
*
get_comment
(
const
void
*
data
,
uint32_t
data_len
);
enum
nft_rule_print
{
enum
nft_rule_print
{
NFT_RULE_APPEND
,
NFT_RULE_APPEND
,
...
@@ -155,6 +155,18 @@ enum {
...
@@ -155,6 +155,18 @@ enum {
int
nft_xtables_config_load
(
struct
nft_handle
*
h
,
const
char
*
filename
,
uint32_t
flags
);
int
nft_xtables_config_load
(
struct
nft_handle
*
h
,
const
char
*
filename
,
uint32_t
flags
);
/*
* Translation from iptables to nft
*/
struct
xt_buf
;
bool
xlate_find_match
(
const
struct
iptables_command_state
*
cs
,
const
char
*
p_name
);
int
xlate_matches
(
const
struct
iptables_command_state
*
cs
,
struct
xt_xlate
*
xl
);
int
xlate_action
(
const
struct
iptables_command_state
*
cs
,
bool
goto_set
,
struct
xt_xlate
*
xl
);
void
xlate_ifname
(
struct
xt_xlate
*
xl
,
const
char
*
nftmeta
,
const
char
*
ifname
,
bool
invert
);
/*
/*
* ARP
* ARP
*/
*/
...
@@ -170,4 +182,6 @@ int nft_arp_rule_insert(struct nft_handle *h, const char *chain,
...
@@ -170,4 +182,6 @@ int nft_arp_rule_insert(struct nft_handle *h, const char *chain,
void
nft_rule_to_arpt_entry
(
struct
nftnl_rule
*
r
,
struct
arpt_entry
*
fw
);
void
nft_rule_to_arpt_entry
(
struct
nftnl_rule
*
r
,
struct
arpt_entry
*
fw
);
int
nft_is_ruleset_compatible
(
struct
nft_handle
*
h
);
#endif
#endif
iptables/xshared.c
View file @
7b095084
...
@@ -9,12 +9,15 @@
...
@@ -9,12 +9,15 @@
#include <sys/file.h>
#include <sys/file.h>
#include <sys/socket.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/un.h>
#include <sys/time.h>
#include <unistd.h>
#include <unistd.h>
#include <fcntl.h>
#include <fcntl.h>
#include <xtables.h>
#include <xtables.h>
#include <math.h>
#include "xshared.h"
#include "xshared.h"
#define XT_LOCK_NAME "/run/xtables.lock"
#define XT_LOCK_NAME "/run/xtables.lock"
#define BASE_MICROSECONDS 100000
/*
/*
* Print out any special helps. A user might like to be able to add a --help
* Print out any special helps. A user might like to be able to add a --help
...
@@ -244,9 +247,15 @@ void xs_init_match(struct xtables_match *match)
...
@@ -244,9 +247,15 @@ void xs_init_match(struct xtables_match *match)
match
->
init
(
match
->
m
);
match
->
init
(
match
->
m
);
}
}
bool
xtables_lock
(
int
wait
)
bool
xtables_lock
(
int
wait
,
struct
timeval
*
wait_interval
)
{
{
int
fd
,
waited
=
0
,
i
=
0
;
struct
timeval
time_left
,
wait_time
,
waited_time
;
int
fd
,
i
=
0
;
time_left
.
tv_sec
=
wait
;
time_left
.
tv_usec
=
0
;
waited_time
.
tv_sec
=
0
;
waited_time
.
tv_usec
=
0
;
fd
=
open
(
XT_LOCK_NAME
,
O_CREAT
,
0600
);
fd
=
open
(
XT_LOCK_NAME
,
O_CREAT
,
0600
);
if
(
fd
<
0
)
if
(
fd
<
0
)
...
@@ -255,12 +264,43 @@ bool xtables_lock(int wait)
...
@@ -255,12 +264,43 @@ bool xtables_lock(int wait)
while
(
1
)
{
while
(
1
)
{
if
(
flock
(
fd
,
LOCK_EX
|
LOCK_NB
)
==
0
)
if
(
flock
(
fd
,
LOCK_EX
|
LOCK_NB
)
==
0
)
return
true
;
return
true
;
else
if
(
wait
>=
0
&&
waited
>=
wait
)
if
(
++
i
%
10
==
0
)
{
return
false
;
if
(
wait
!=
-
1
)
if
(
++
i
%
2
==
0
)
fprintf
(
stderr
,
"Another app is currently holding the xtables lock; "
"still %lds %ldus time ahead to have a chance to grab the lock...
\n
"
,
time_left
.
tv_sec
,
time_left
.
tv_usec
);
else
fprintf
(
stderr
,
"Another app is currently holding the xtables lock; "
fprintf
(
stderr
,
"Another app is currently holding the xtables lock; "
"waiting (%ds) for it to exit...
\n
"
,
waited
);
"waiting for it to exit...
\n
"
);
waited
++
;
}
sleep
(
1
);
wait_time
=
*
wait_interval
;
select
(
0
,
NULL
,
NULL
,
NULL
,
&
wait_time
);
if
(
wait
==
-
1
)
continue
;
timeradd
(
&
waited_time
,
wait_interval
,
&
waited_time
);
timersub
(
&
time_left
,
wait_interval
,
&
time_left
);
if
(
!
timerisset
(
&
time_left
))
return
false
;
}
}
void
parse_wait_interval
(
const
char
*
str
,
struct
timeval
*
wait_interval
)
{
unsigned
int
usec
;
int
ret
;
ret
=
sscanf
(
str
,
"%u"
,
&
usec
);
if
(
ret
==
1
)
{
if
(
usec
>
999999
)
xtables_error
(
PARAMETER_PROBLEM
,
"too long usec wait %u > 999999 usec"
,
usec
);
wait_interval
->
tv_sec
=
0
;
wait_interval
->
tv_usec
=
usec
;
return
;
}
}
xtables_error
(
PARAMETER_PROBLEM
,
"wait interval not numeric"
);
}
}
iptables/xshared.h
View file @
7b095084
...
@@ -63,6 +63,7 @@ struct iptables_command_state {
...
@@ -63,6 +63,7 @@ struct iptables_command_state {
int
proto_used
;
int
proto_used
;
const
char
*
jumpto
;
const
char
*
jumpto
;
char
**
argv
;
char
**
argv
;
bool
restore
;
};
};
typedef
int
(
*
mainfunc_t
)(
int
,
char
**
);
typedef
int
(
*
mainfunc_t
)(
int
,
char
**
);
...
@@ -85,7 +86,9 @@ extern struct xtables_match *load_proto(struct iptables_command_state *);
...
@@ -85,7 +86,9 @@ extern struct xtables_match *load_proto(struct iptables_command_state *);
extern
int
subcmd_main
(
int
,
char
**
,
const
struct
subcommand
*
);
extern
int
subcmd_main
(
int
,
char
**
,
const
struct
subcommand
*
);
extern
void
xs_init_target
(
struct
xtables_target
*
);
extern
void
xs_init_target
(
struct
xtables_target
*
);
extern
void
xs_init_match
(
struct
xtables_match
*
);
extern
void
xs_init_match
(
struct
xtables_match
*
);
extern
bool
xtables_lock
(
int
wait
);
bool
xtables_lock
(
int
wait
,
struct
timeval
*
wait_interval
);
void
parse_wait_interval
(
const
char
*
str
,
struct
timeval
*
wait_interval
);
extern
const
struct
xtables_afinfo
*
afinfo
;
extern
const
struct
xtables_afinfo
*
afinfo
;
...
...
iptables/xtables-arp.c
View file @
7b095084
...
@@ -587,22 +587,30 @@ check_inverse(const char option[], int *invert, int *optidx, int argc)
...
@@ -587,22 +587,30 @@ check_inverse(const char option[], int *invert, int *optidx, int argc)
static
struct
in_addr
*
static
struct
in_addr
*
host_to_addr
(
const
char
*
name
,
unsigned
int
*
naddr
)
host_to_addr
(
const
char
*
name
,
unsigned
int
*
naddr
)
{
{
struct
hostent
*
host
;
struct
in_addr
*
addr
;
struct
in_addr
*
addr
;
struct
addrinfo
hints
;
struct
addrinfo
*
res
,
*
p
;
int
err
;
unsigned
int
i
;
unsigned
int
i
;
*
naddr
=
0
;
memset
(
&
hints
,
0
,
sizeof
(
hints
));
if
((
host
=
gethostbyname
(
name
))
!=
NULL
)
{
hints
.
ai_flags
=
AI_CANONNAME
;
if
(
host
->
h_addrtype
!=
AF_INET
||
hints
.
ai_family
=
AF_INET
;
host
->
h_length
!=
sizeof
(
struct
in_addr
))
hints
.
ai_socktype
=
SOCK_RAW
;
return
(
struct
in_addr
*
)
NULL
;
while
(
host
->
h_addr_list
[
*
naddr
]
!=
(
char
*
)
NULL
)
*
naddr
=
0
;
err
=
getaddrinfo
(
name
,
NULL
,
&
hints
,
&
res
);
if
(
err
!=
0
)
return
NULL
;
else
{
for
(
p
=
res
;
p
!=
NULL
;
p
=
p
->
ai_next
)
(
*
naddr
)
++
;
(
*
naddr
)
++
;
addr
=
xtables_calloc
(
*
naddr
,
sizeof
(
struct
in_addr
));
addr
=
xtables_calloc
(
*
naddr
,
sizeof
(
struct
in_addr
));
for
(
i
=
0
;
i
<
*
naddr
;
i
++
)
for
(
i
=
0
,
p
=
res
;
p
!=
NULL
;
p
=
p
->
ai_next
)
inaddrcpy
(
&
(
addr
[
i
]),
memcpy
(
&
addr
[
i
++
],
(
struct
in_addr
*
)
host
->
h_addr_list
[
i
]);
&
((
const
struct
sockaddr_in
*
)
p
->
ai_addr
)
->
sin_addr
,
sizeof
(
struct
in_addr
));
freeaddrinfo
(
res
);
return
addr
;
return
addr
;
}
}
...
@@ -727,7 +735,7 @@ parse_interface(const char *arg, char *vianame, unsigned char *mask)
...
@@ -727,7 +735,7 @@ parse_interface(const char *arg, char *vianame, unsigned char *mask)
if
(
!
isalnum
(
vianame
[
i
])
if
(
!
isalnum
(
vianame
[
i
])
&&
vianame
[
i
]
!=
'_'
&&
vianame
[
i
]
!=
'_'
&&
vianame
[
i
]
!=
'.'
)
{
&&
vianame
[
i
]
!=
'.'
)
{
printf
(
"Warning: w
i
erd character in interface"
printf
(
"Warning: we
i
rd character in interface"
" `%s' (No aliases, :, ! or *).
\n
"
,
" `%s' (No aliases, :, ! or *).
\n
"
,
vianame
);
vianame
);
break
;
break
;
...
...
iptables/xtables-compat-multi.c
View file @
7b095084
...
@@ -26,6 +26,10 @@ static const struct subcommand multi_subcommands[] = {
...
@@ -26,6 +26,10 @@ static const struct subcommand multi_subcommands[] = {
{
"ip6tables-restore"
,
xtables_ip6_restore_main
},
{
"ip6tables-restore"
,
xtables_ip6_restore_main
},
{
"ip6tables-compat-save"
,
xtables_ip6_save_main
},
{
"ip6tables-compat-save"
,
xtables_ip6_save_main
},
{
"ip6tables-compat-restore"
,
xtables_ip6_restore_main
},
{
"ip6tables-compat-restore"
,
xtables_ip6_restore_main
},
{
"iptables-translate"
,
xtables_ip4_xlate_main
},
{
"ip6tables-translate"
,
xtables_ip6_xlate_main
},
{
"iptables-restore-translate"
,
xtables_ip4_xlate_restore_main
},
{
"ip6tables-restore-translate"
,
xtables_ip6_xlate_restore_main
},
{
"arptables"
,
xtables_arp_main
},
{
"arptables"
,
xtables_arp_main
},
{
"arptables-compat"
,
xtables_arp_main
},
{
"arptables-compat"
,
xtables_arp_main
},
{
"ebtables-compat"
,
xtables_eb_main
},
{
"ebtables-compat"
,
xtables_eb_main
},
...
...
iptables/xtables-multi.h
View file @
7b095084
...
@@ -9,6 +9,10 @@ extern int xtables_ip4_restore_main(int, char **);
...
@@ -9,6 +9,10 @@ extern int xtables_ip4_restore_main(int, char **);
extern
int
xtables_ip6_main
(
int
,
char
**
);
extern
int
xtables_ip6_main
(
int
,
char
**
);
extern
int
xtables_ip6_save_main
(
int
,
char
**
);
extern
int
xtables_ip6_save_main
(
int
,
char
**
);
extern
int
xtables_ip6_restore_main
(
int
,
char
**
);
extern
int
xtables_ip6_restore_main
(
int
,
char
**
);
extern
int
xtables_ip4_xlate_main
(
int
,
char
**
);
extern
int
xtables_ip6_xlate_main
(
int
,
char
**
);
extern
int
xtables_ip4_xlate_restore_main
(
int
,
char
**
);
extern
int
xtables_ip6_xlate_restore_main
(
int
,
char
**
);
extern
int
xtables_arp_main
(
int
,
char
**
);
extern
int
xtables_arp_main
(
int
,
char
**
);
extern
int
xtables_eb_main
(
int
,
char
**
);
extern
int
xtables_eb_main
(
int
,
char
**
);
extern
int
xtables_config_main
(
int
,
char
**
);
extern
int
xtables_config_main
(
int
,
char
**
);
...
...
iptables/xtables-restore.c
View file @
7b095084
...
@@ -46,14 +46,16 @@ static void print_usage(const char *name, const char *version) __attribute__((no
...
@@ -46,14 +46,16 @@ static void print_usage(const char *name, const char *version) __attribute__((no
static
void
print_usage
(
const
char
*
name
,
const
char
*
version
)
static
void
print_usage
(
const
char
*
name
,
const
char
*
version
)
{
{
fprintf
(
stderr
,
"Usage: %s [-c] [-v] [-t] [-h]
\n
"
fprintf
(
stderr
,
"Usage: %s [-c] [-v] [-t] [-h]
[-n] [-T table] [-M command] [-4] [-6]
\n
"
" [ --counters ]
\n
"
" [ --counters ]
\n
"
" [ --verbose ]
\n
"
" [ --verbose ]
\n
"
" [ --test ]
\n
"
" [ --test ]
\n
"
" [ --help ]
\n
"
" [ --help ]
\n
"
" [ --noflush ]
\n
"
" [ --noflush ]
\n
"
" [ --table=<TABLE> ]
\n
"
" [ --table=<TABLE> ]
\n
"
" [ --modprobe=<command>]
\n
"
,
name
);
" [ --modprobe=<command> ]
\n
"
" [ --ipv4 ]
\n
"
" [ --ipv6 ]
\n
"
,
name
);
exit
(
1
);
exit
(
1
);
}
}
...
@@ -159,107 +161,64 @@ static void add_param_to_argv(char *parsestart)
...
@@ -159,107 +161,64 @@ static void add_param_to_argv(char *parsestart)
}
}
}
}
static
struct
nftnl_chain_list
*
get_chain_list
(
struct
nft_handle
*
h
)
{
struct
nftnl_chain_list
*
chain_list
;
chain_list
=
nft_chain_dump
(
h
);
if
(
chain_list
==
NULL
)
xtables_error
(
OTHER_PROBLEM
,
"cannot retrieve chain list
\n
"
);
return
chain_list
;
}
static
void
chain_delete
(
struct
nftnl_chain_list
*
clist
,
const
char
*
curtable
,
const
char
*
chain
)
{
struct
nftnl_chain
*
chain_obj
;
chain_obj
=
nft_chain_list_find
(
clist
,
curtable
,
chain
);
/* This chain has been found, delete from list. Later
* on, unvisited chains will be purged out.
*/
if
(
chain_obj
!=
NULL
)
nftnl_chain_list_del
(
chain_obj
);
}
struct
nft_xt_restore_cb
restore_cb
=
{
.
chain_list
=
get_chain_list
,
.
commit
=
nft_commit
,
.
abort
=
nft_abort
,
.
chains_purge
=
nft_table_purge_chains
,
.
rule_flush
=
nft_rule_flush
,
.
chain_del
=
chain_delete
,
.
do_command
=
do_commandx
,
.
chain_set
=
nft_chain_set
,
.
chain_user_add
=
nft_chain_user_add
,
};
static
const
struct
xtc_ops
xtc_ops
=
{
static
const
struct
xtc_ops
xtc_ops
=
{
.
strerror
=
nft_strerror
,
.
strerror
=
nft_strerror
,
};
};
static
int
void
xtables_restore_parse
(
struct
nft_handle
*
h
,
xtables_restore_main
(
int
family
,
const
char
*
progname
,
int
argc
,
char
*
argv
[])
struct
nft_xt_restore_parse
*
p
,
struct
nft_xt_restore_cb
*
cb
,
int
argc
,
char
*
argv
[])
{
{
struct
nft_handle
h
=
{
.
family
=
family
,
.
restore
=
true
,
};
char
buffer
[
10240
];
char
buffer
[
10240
];
int
c
;
int
in_table
=
0
;
char
curtable
[
XT_TABLE_MAXNAMELEN
+
1
];
char
curtable
[
XT_TABLE_MAXNAMELEN
+
1
];
FILE
*
in
;
int
in_table
=
0
,
testing
=
0
;
const
char
*
tablename
=
NULL
;
const
struct
xtc_ops
*
ops
=
&
xtc_ops
;
const
struct
xtc_ops
*
ops
=
&
xtc_ops
;
struct
nftnl_chain_list
*
chain_list
;
struct
nftnl_chain_list
*
chain_list
=
NULL
;
struct
nftnl_chain
*
chain_obj
;
line
=
0
;
line
=
0
;
xtables_globals
.
program_name
=
progname
;
if
(
cb
->
chain_list
)
c
=
xtables_init_all
(
&
xtables_globals
,
family
);
chain_list
=
cb
->
chain_list
(
h
);
if
(
c
<
0
)
{
fprintf
(
stderr
,
"%s/%s Failed to initialize xtables
\n
"
,
xtables_globals
.
program_name
,
xtables_globals
.
program_version
);
exit
(
1
);
}
#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
init_extensions
();
init_extensions4
();
#endif
if
(
nft_init
(
&
h
,
xtables_ipv4
)
<
0
)
{
fprintf
(
stderr
,
"%s/%s Failed to initialize nft: %s
\n
"
,
xtables_globals
.
program_name
,
xtables_globals
.
program_version
,
strerror
(
errno
));
exit
(
EXIT_FAILURE
);
}
while
((
c
=
getopt_long
(
argc
,
argv
,
"bcvthnM:T:46"
,
options
,
NULL
))
!=
-
1
)
{
switch
(
c
)
{
case
'b'
:
fprintf
(
stderr
,
"-b/--binary option is not implemented
\n
"
);
break
;
case
'c'
:
counters
=
1
;
break
;
case
'v'
:
verbose
=
1
;
break
;
case
't'
:
testing
=
1
;
break
;
case
'h'
:
print_usage
(
"xtables-restore"
,
IPTABLES_VERSION
);
break
;
case
'n'
:
noflush
=
1
;
break
;
case
'M'
:
xtables_modprobe_program
=
optarg
;
break
;
case
'T'
:
tablename
=
optarg
;
break
;
case
'4'
:
h
.
family
=
AF_INET
;
break
;
case
'6'
:
h
.
family
=
AF_INET6
;
xtables_set_nfproto
(
AF_INET6
);
break
;
}
}
if
(
optind
==
argc
-
1
)
{
in
=
fopen
(
argv
[
optind
],
"re"
);
if
(
!
in
)
{
fprintf
(
stderr
,
"Can't open %s: %s
\n
"
,
argv
[
optind
],
strerror
(
errno
));
exit
(
1
);
}
}
else
if
(
optind
<
argc
)
{
fprintf
(
stderr
,
"Unknown arguments found on commandline
\n
"
);
exit
(
1
);
}
else
in
=
stdin
;
chain_list
=
nft_chain_dump
(
&
h
);
if
(
chain_list
==
NULL
)
xtables_error
(
OTHER_PROBLEM
,
"cannot retrieve chain list
\n
"
);
/* Grab standard input. */
/* Grab standard input. */
while
(
fgets
(
buffer
,
sizeof
(
buffer
),
in
))
{
while
(
fgets
(
buffer
,
sizeof
(
buffer
),
p
->
in
))
{
int
ret
=
0
;
int
ret
=
0
;
line
++
;
line
++
;
...
@@ -270,22 +229,24 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -270,22 +229,24 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
fputs
(
buffer
,
stdout
);
fputs
(
buffer
,
stdout
);
continue
;
continue
;
}
else
if
((
strcmp
(
buffer
,
"COMMIT
\n
"
)
==
0
)
&&
(
in_table
))
{
}
else
if
((
strcmp
(
buffer
,
"COMMIT
\n
"
)
==
0
)
&&
(
in_table
))
{
if
(
!
testing
)
{
if
(
!
p
->
testing
)
{
/* Commit per table, although we support
/* Commit per table, although we support
* global commit at once, stick by now to
* global commit at once, stick by now to
* the existing behaviour.
* the existing behaviour.
*/
*/
DEBUGP
(
"Calling commit
\n
"
);
DEBUGP
(
"Calling commit
\n
"
);
ret
=
nft_commit
(
&
h
);
if
(
cb
->
commit
)
ret
=
cb
->
commit
(
h
);
}
else
{
}
else
{
DEBUGP
(
"Not calling commit, testing
\n
"
);
DEBUGP
(
"Not calling commit, testing
\n
"
);
ret
=
nft_abort
(
&
h
);
if
(
cb
->
abort
)
ret
=
cb
->
abort
(
h
);
}
}
in_table
=
0
;
in_table
=
0
;
/* Purge out unused chains in this table */
/* Purge out unused chains in this table */
if
(
!
testing
)
if
(
!
p
->
testing
&&
cb
->
chains_purge
)
nft_table_purge_chains
(
&
h
,
curtable
,
chain_list
);
cb
->
chains_purge
(
h
,
curtable
,
chain_list
);
}
else
if
((
buffer
[
0
]
==
'*'
)
&&
(
!
in_table
))
{
}
else
if
((
buffer
[
0
]
==
'*'
)
&&
(
!
in_table
))
{
/* New table */
/* New table */
...
@@ -302,18 +263,22 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -302,18 +263,22 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
strncpy
(
curtable
,
table
,
XT_TABLE_MAXNAMELEN
);
strncpy
(
curtable
,
table
,
XT_TABLE_MAXNAMELEN
);
curtable
[
XT_TABLE_MAXNAMELEN
]
=
'\0'
;
curtable
[
XT_TABLE_MAXNAMELEN
]
=
'\0'
;
if
(
tablename
&&
(
strcmp
(
tablename
,
table
)
!=
0
))
if
(
p
->
tablename
&&
(
strcmp
(
p
->
tablename
,
table
)
!=
0
))
continue
;
continue
;
if
(
noflush
==
0
)
{
if
(
noflush
==
0
)
{
DEBUGP
(
"Cleaning all chains of table '%s'
\n
"
,
DEBUGP
(
"Cleaning all chains of table '%s'
\n
"
,
table
);
table
);
nft_rule_flush
(
&
h
,
NULL
,
table
);
if
(
cb
->
rule_flush
)
cb
->
rule_flush
(
h
,
NULL
,
table
);
}
}
ret
=
1
;
ret
=
1
;
in_table
=
1
;
in_table
=
1
;
if
(
cb
->
table_new
)
cb
->
table_new
(
h
,
table
);
}
else
if
((
buffer
[
0
]
==
':'
)
&&
(
in_table
))
{
}
else
if
((
buffer
[
0
]
==
':'
)
&&
(
in_table
))
{
/* New chain. */
/* New chain. */
char
*
policy
,
*
chain
=
NULL
;
char
*
policy
,
*
chain
=
NULL
;
...
@@ -328,13 +293,8 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -328,13 +293,8 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
exit
(
1
);
exit
(
1
);
}
}
chain_obj
=
nft_chain_list_find
(
chain_list
,
if
(
cb
->
chain_del
)
curtable
,
chain
);
cb
->
chain_del
(
chain_list
,
curtable
,
chain
);
/* This chain has been found, delete from list. Later
* on, unvisited chains will be purged out.
*/
if
(
chain_obj
!=
NULL
)
nftnl_chain_list_del
(
chain_obj
);
if
(
strlen
(
chain
)
>=
XT_EXTENSION_MAXNAMELEN
)
if
(
strlen
(
chain
)
>=
XT_EXTENSION_MAXNAMELEN
)
xtables_error
(
PARAMETER_PROBLEM
,
xtables_error
(
PARAMETER_PROBLEM
,
...
@@ -362,7 +322,8 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -362,7 +322,8 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
"for chain '%s'
\n
"
,
chain
);
"for chain '%s'
\n
"
,
chain
);
}
}
if
(
nft_chain_set
(
&
h
,
curtable
,
chain
,
policy
,
&
count
)
<
0
)
{
if
(
cb
->
chain_set
&&
cb
->
chain_set
(
h
,
curtable
,
chain
,
policy
,
&
count
)
<
0
)
{
xtables_error
(
OTHER_PROBLEM
,
xtables_error
(
OTHER_PROBLEM
,
"Can't set policy `%s'"
"Can't set policy `%s'"
" on `%s' line %u: %s
\n
"
,
" on `%s' line %u: %s
\n
"
,
...
@@ -374,7 +335,8 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -374,7 +335,8 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
ret
=
1
;
ret
=
1
;
}
else
{
}
else
{
if
(
nft_chain_user_add
(
&
h
,
chain
,
curtable
)
<
0
)
{
if
(
cb
->
chain_user_add
&&
cb
->
chain_user_add
(
h
,
chain
,
curtable
)
<
0
)
{
if
(
errno
==
EEXIST
)
if
(
errno
==
EEXIST
)
continue
;
continue
;
...
@@ -441,10 +403,14 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -441,10 +403,14 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
for
(
a
=
0
;
a
<
newargc
;
a
++
)
for
(
a
=
0
;
a
<
newargc
;
a
++
)
DEBUGP
(
"argv[%u]: %s
\n
"
,
a
,
newargv
[
a
]);
DEBUGP
(
"argv[%u]: %s
\n
"
,
a
,
newargv
[
a
]);
ret
=
do_command
x
(
&
h
,
newargc
,
newargv
,
ret
=
cb
->
do_command
(
h
,
newargc
,
newargv
,
&
newargv
[
2
],
true
);
&
newargv
[
2
],
true
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ret
=
nft_abort
(
&
h
);
if
(
cb
->
abort
)
ret
=
cb
->
abort
(
h
);
else
ret
=
0
;
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
fprintf
(
stderr
,
"failed to abort "
fprintf
(
stderr
,
"failed to abort "
"commit operation
\n
"
);
"commit operation
\n
"
);
...
@@ -455,7 +421,7 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -455,7 +421,7 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
free_argv
();
free_argv
();
fflush
(
stdout
);
fflush
(
stdout
);
}
}
if
(
tablename
&&
(
strcmp
(
tablename
,
curtable
)
!=
0
))
if
(
p
->
tablename
&&
(
strcmp
(
p
->
tablename
,
curtable
)
!=
0
))
continue
;
continue
;
if
(
!
ret
)
{
if
(
!
ret
)
{
fprintf
(
stderr
,
"%s: line %u failed
\n
"
,
fprintf
(
stderr
,
"%s: line %u failed
\n
"
,
...
@@ -468,8 +434,95 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
...
@@ -468,8 +434,95 @@ xtables_restore_main(int family, const char *progname, int argc, char *argv[])
xt_params
->
program_name
,
line
+
1
);
xt_params
->
program_name
,
line
+
1
);
exit
(
1
);
exit
(
1
);
}
}
}
static
int
xtables_restore_main
(
int
family
,
const
char
*
progname
,
int
argc
,
char
*
argv
[])
{
struct
nft_handle
h
=
{
.
family
=
family
,
.
restore
=
true
,
};
int
c
;
struct
nft_xt_restore_parse
p
=
{};
line
=
0
;
xtables_globals
.
program_name
=
progname
;
c
=
xtables_init_all
(
&
xtables_globals
,
family
);
if
(
c
<
0
)
{
fprintf
(
stderr
,
"%s/%s Failed to initialize xtables
\n
"
,
xtables_globals
.
program_name
,
xtables_globals
.
program_version
);
exit
(
1
);
}
#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS)
init_extensions
();
init_extensions4
();
#endif
if
(
nft_init
(
&
h
,
xtables_ipv4
)
<
0
)
{
fprintf
(
stderr
,
"%s/%s Failed to initialize nft: %s
\n
"
,
xtables_globals
.
program_name
,
xtables_globals
.
program_version
,
strerror
(
errno
));
exit
(
EXIT_FAILURE
);
}
while
((
c
=
getopt_long
(
argc
,
argv
,
"bcvthnM:T:46"
,
options
,
NULL
))
!=
-
1
)
{
switch
(
c
)
{
case
'b'
:
fprintf
(
stderr
,
"-b/--binary option is not implemented
\n
"
);
break
;
case
'c'
:
counters
=
1
;
break
;
case
'v'
:
verbose
=
1
;
break
;
case
't'
:
p
.
testing
=
1
;
break
;
case
'h'
:
print_usage
(
"xtables-restore"
,
IPTABLES_VERSION
);
break
;
case
'n'
:
noflush
=
1
;
break
;
case
'M'
:
xtables_modprobe_program
=
optarg
;
break
;
case
'T'
:
p
.
tablename
=
optarg
;
break
;
case
'4'
:
h
.
family
=
AF_INET
;
break
;
case
'6'
:
h
.
family
=
AF_INET6
;
xtables_set_nfproto
(
AF_INET6
);
break
;
}
}
if
(
optind
==
argc
-
1
)
{
p
.
in
=
fopen
(
argv
[
optind
],
"re"
);
if
(
!
p
.
in
)
{
fprintf
(
stderr
,
"Can't open %s: %s
\n
"
,
argv
[
optind
],
strerror
(
errno
));
exit
(
1
);
}
}
else
if
(
optind
<
argc
)
{
fprintf
(
stderr
,
"Unknown arguments found on commandline
\n
"
);
exit
(
1
);
}
else
{
p
.
in
=
stdin
;
}
xtables_restore_parse
(
&
h
,
&
p
,
&
restore_cb
,
argc
,
argv
);
fclose
(
in
);
fclose
(
p
.
in
);
return
0
;
return
0
;
}
}
...
...
Prev
1
…
7
8
9
10
11
12
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment