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
290749d4
Commit
290749d4
authored
Dec 03, 2019
by
Arturo Borrero Gonzalez
Browse files
New upstream version 1.8.4
parent
89c92f0c
Changes
87
Hide whitespace changes
Inline
Side-by-side
libiptc/libip4tc.c
View file @
290749d4
...
...
@@ -308,178 +308,4 @@ check_entry(const STRUCT_ENTRY *e, unsigned int *i, unsigned int *off,
(*i)++;
return 0;
}
#ifdef IPTC_DEBUG
/* Do every conceivable sanity check on the handle */
static void
do_check(struct xtc_handle *h, unsigned int line)
{
unsigned int i, n;
unsigned int user_offset; /* Offset of first user chain */
int was_return;
assert(h->changed == 0 || h->changed == 1);
if (strcmp(h->info.name, "filter") == 0) {
assert(h->info.valid_hooks
== (1 << NF_IP_LOCAL_IN
| 1 << NF_IP_FORWARD
| 1 << NF_IP_LOCAL_OUT));
/* Hooks should be first three */
assert(h->info.hook_entry[NF_IP_LOCAL_IN] == 0);
n = get_chain_end(h, 0);
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_FORWARD] == n);
n = get_chain_end(h, n);
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n);
user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
} else if (strcmp(h->info.name, "nat") == 0) {
assert((h->info.valid_hooks
== (1 << NF_IP_PRE_ROUTING
| 1 << NF_IP_POST_ROUTING
| 1 << NF_IP_LOCAL_OUT)) ||
(h->info.valid_hooks
== (1 << NF_IP_PRE_ROUTING
| 1 << NF_IP_LOCAL_IN
| 1 << NF_IP_POST_ROUTING
| 1 << NF_IP_LOCAL_OUT)));
assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0);
n = get_chain_end(h, 0);
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_POST_ROUTING] == n);
n = get_chain_end(h, n);
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n);
user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
if (h->info.valid_hooks & (1 << NF_IP_LOCAL_IN)) {
n = get_chain_end(h, n);
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_LOCAL_IN] == n);
user_offset = h->info.hook_entry[NF_IP_LOCAL_IN];
}
} else if (strcmp(h->info.name, "mangle") == 0) {
/* This code is getting ugly because linux < 2.4.18-pre6 had
* two mangle hooks, linux >= 2.4.18-pre6 has five mangle hooks
* */
assert((h->info.valid_hooks
== (1 << NF_IP_PRE_ROUTING
| 1 << NF_IP_LOCAL_OUT)) ||
(h->info.valid_hooks
== (1 << NF_IP_PRE_ROUTING
| 1 << NF_IP_LOCAL_IN
| 1 << NF_IP_FORWARD
| 1 << NF_IP_LOCAL_OUT
| 1 << NF_IP_POST_ROUTING)));
/* Hooks should be first five */
assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0);
n = get_chain_end(h, 0);
if (h->info.valid_hooks & (1 << NF_IP_LOCAL_IN)) {
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_LOCAL_IN] == n);
n = get_chain_end(h, n);
}
if (h->info.valid_hooks & (1 << NF_IP_FORWARD)) {
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_FORWARD] == n);
n = get_chain_end(h, n);
}
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n);
user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
if (h->info.valid_hooks & (1 << NF_IP_POST_ROUTING)) {
n = get_chain_end(h, n);
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_POST_ROUTING] == n);
user_offset = h->info.hook_entry[NF_IP_POST_ROUTING];
}
} else if (strcmp(h->info.name, "raw") == 0) {
assert(h->info.valid_hooks
== (1 << NF_IP_PRE_ROUTING
| 1 << NF_IP_LOCAL_OUT));
/* Hooks should be first three */
assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0);
n = get_chain_end(h, n);
n += get_entry(h, n)->next_offset;
assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n);
user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT];
} else {
fprintf(stderr, "Unknown table `%s'\n", h->info.name);
abort();
}
/* User chain == end of last builtin + policy entry */
user_offset = get_chain_end(h, user_offset);
user_offset += get_entry(h, user_offset)->next_offset;
/* Overflows should be end of entry chains, and unconditional
policy nodes. */
for (i = 0; i < NUMHOOKS; i++) {
STRUCT_ENTRY *e;
STRUCT_STANDARD_TARGET *t;
if (!(h->info.valid_hooks & (1 << i)))
continue;
assert(h->info.underflow[i]
== get_chain_end(h, h->info.hook_entry[i]));
e = get_entry(h, get_chain_end(h, h->info.hook_entry[i]));
assert(unconditional(&e->ip));
assert(e->target_offset == sizeof(*e));
t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e);
assert(t->target.u.target_size == ALIGN(sizeof(*t)));
assert(e->next_offset == sizeof(*e) + ALIGN(sizeof(*t)));
assert(strcmp(t->target.u.user.name, STANDARD_TARGET)==0);
assert(t->verdict == -NF_DROP-1 || t->verdict == -NF_ACCEPT-1);
/* Hooks and underflows must be valid entries */
entry2index(h, get_entry(h, h->info.hook_entry[i]));
entry2index(h, get_entry(h, h->info.underflow[i]));
}
assert(h->info.size
>= h->info.num_entries * (sizeof(STRUCT_ENTRY)
+sizeof(STRUCT_STANDARD_TARGET)));
assert(h->entries.size
>= (h->new_number
* (sizeof(STRUCT_ENTRY)
+ sizeof(STRUCT_STANDARD_TARGET))));
assert(strcmp(h->info.name, h->entries.name) == 0);
i = 0; n = 0;
was_return = 0;
/* Check all the entries. */
ENTRY_ITERATE(h->entries.entrytable, h->entries.size,
check_entry, &i, &n, user_offset, &was_return, h);
assert(i == h->new_number);
assert(n == h->entries.size);
/* Final entry must be error node */
assert(strcmp(GET_TARGET(index2entry(h, h->new_number-1))
->u.user.name,
ERROR_TARGET) == 0);
}
#endif /*IPTC_DEBUG*/
#endif
libiptc/libip6tc.c
View file @
290749d4
...
...
@@ -244,6 +244,7 @@ is_same(const STRUCT_ENTRY *a, const STRUCT_ENTRY *b,
return
mptr
;
}
#if 0
/* All zeroes == unconditional rule. */
static inline int
unconditional(const struct ip6t_ip6 *ipv6)
...
...
@@ -256,181 +257,4 @@ unconditional(const struct ip6t_ip6 *ipv6)
return (i == sizeof(*ipv6));
}
#ifdef IPTC_DEBUG
/* Do every conceivable sanity check on the handle */
static
void
do_check
(
struct
xtc_handle
*
h
,
unsigned
int
line
)
{
unsigned
int
i
,
n
;
unsigned
int
user_offset
;
/* Offset of first user chain */
int
was_return
;
assert
(
h
->
changed
==
0
||
h
->
changed
==
1
);
if
(
strcmp
(
h
->
info
.
name
,
"filter"
)
==
0
)
{
assert
(
h
->
info
.
valid_hooks
==
(
1
<<
NF_IP6_LOCAL_IN
|
1
<<
NF_IP6_FORWARD
|
1
<<
NF_IP6_LOCAL_OUT
));
/* Hooks should be first three */
assert
(
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_IN
]
==
0
);
n
=
get_chain_end
(
h
,
0
);
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_FORWARD
]
==
n
);
n
=
get_chain_end
(
h
,
n
);
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
]
==
n
);
user_offset
=
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
];
}
else
if
(
strcmp
(
h
->
info
.
name
,
"nat"
)
==
0
)
{
assert
((
h
->
info
.
valid_hooks
==
(
1
<<
NF_IP6_PRE_ROUTING
|
1
<<
NF_IP6_LOCAL_OUT
|
1
<<
NF_IP6_POST_ROUTING
))
||
(
h
->
info
.
valid_hooks
==
(
1
<<
NF_IP6_PRE_ROUTING
|
1
<<
NF_IP6_LOCAL_IN
|
1
<<
NF_IP6_LOCAL_OUT
|
1
<<
NF_IP6_POST_ROUTING
)));
assert
(
h
->
info
.
hook_entry
[
NF_IP6_PRE_ROUTING
]
==
0
);
n
=
get_chain_end
(
h
,
0
);
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_POST_ROUTING
]
==
n
);
n
=
get_chain_end
(
h
,
n
);
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
]
==
n
);
user_offset
=
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
];
if
(
h
->
info
.
valid_hooks
&
(
1
<<
NF_IP6_LOCAL_IN
))
{
n
=
get_chain_end
(
h
,
n
);
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_IN
]
==
n
);
user_offset
=
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_IN
];
}
}
else
if
(
strcmp
(
h
->
info
.
name
,
"mangle"
)
==
0
)
{
/* This code is getting ugly because linux < 2.4.18-pre6 had
* two mangle hooks, linux >= 2.4.18-pre6 has five mangle hooks
* */
assert
((
h
->
info
.
valid_hooks
==
(
1
<<
NF_IP6_PRE_ROUTING
|
1
<<
NF_IP6_LOCAL_OUT
))
||
(
h
->
info
.
valid_hooks
==
(
1
<<
NF_IP6_PRE_ROUTING
|
1
<<
NF_IP6_LOCAL_IN
|
1
<<
NF_IP6_FORWARD
|
1
<<
NF_IP6_LOCAL_OUT
|
1
<<
NF_IP6_POST_ROUTING
)));
/* Hooks should be first five */
assert
(
h
->
info
.
hook_entry
[
NF_IP6_PRE_ROUTING
]
==
0
);
n
=
get_chain_end
(
h
,
0
);
if
(
h
->
info
.
valid_hooks
&
(
1
<<
NF_IP6_LOCAL_IN
))
{
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_IN
]
==
n
);
n
=
get_chain_end
(
h
,
n
);
}
if
(
h
->
info
.
valid_hooks
&
(
1
<<
NF_IP6_FORWARD
))
{
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_FORWARD
]
==
n
);
n
=
get_chain_end
(
h
,
n
);
}
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
]
==
n
);
user_offset
=
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
];
if
(
h
->
info
.
valid_hooks
&
(
1
<<
NF_IP6_POST_ROUTING
))
{
n
=
get_chain_end
(
h
,
n
);
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_POST_ROUTING
]
==
n
);
user_offset
=
h
->
info
.
hook_entry
[
NF_IP6_POST_ROUTING
];
}
}
else
if
(
strcmp
(
h
->
info
.
name
,
"raw"
)
==
0
)
{
assert
(
h
->
info
.
valid_hooks
==
(
1
<<
NF_IP6_PRE_ROUTING
|
1
<<
NF_IP6_LOCAL_OUT
));
/* Hooks should be first three */
assert
(
h
->
info
.
hook_entry
[
NF_IP6_PRE_ROUTING
]
==
0
);
n
=
get_chain_end
(
h
,
n
);
n
+=
get_entry
(
h
,
n
)
->
next_offset
;
assert
(
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
]
==
n
);
user_offset
=
h
->
info
.
hook_entry
[
NF_IP6_LOCAL_OUT
];
}
else
{
fprintf
(
stderr
,
"Unknown table `%s'
\n
"
,
h
->
info
.
name
);
abort
();
}
/* User chain == end of last builtin + policy entry */
user_offset
=
get_chain_end
(
h
,
user_offset
);
user_offset
+=
get_entry
(
h
,
user_offset
)
->
next_offset
;
/* Overflows should be end of entry chains, and unconditional
policy nodes. */
for
(
i
=
0
;
i
<
NUMHOOKS
;
i
++
)
{
STRUCT_ENTRY
*
e
;
STRUCT_STANDARD_TARGET
*
t
;
if
(
!
(
h
->
info
.
valid_hooks
&
(
1
<<
i
)))
continue
;
assert
(
h
->
info
.
underflow
[
i
]
==
get_chain_end
(
h
,
h
->
info
.
hook_entry
[
i
]));
e
=
get_entry
(
h
,
get_chain_end
(
h
,
h
->
info
.
hook_entry
[
i
]));
assert
(
unconditional
(
&
e
->
ipv6
));
assert
(
e
->
target_offset
==
sizeof
(
*
e
));
t
=
(
STRUCT_STANDARD_TARGET
*
)
GET_TARGET
(
e
);
printf
(
"target_size=%u, align=%u
\n
"
,
t
->
target
.
u
.
target_size
,
ALIGN
(
sizeof
(
*
t
)));
assert
(
t
->
target
.
u
.
target_size
==
ALIGN
(
sizeof
(
*
t
)));
assert
(
e
->
next_offset
==
sizeof
(
*
e
)
+
ALIGN
(
sizeof
(
*
t
)));
assert
(
strcmp
(
t
->
target
.
u
.
user
.
name
,
STANDARD_TARGET
)
==
0
);
assert
(
t
->
verdict
==
-
NF_DROP
-
1
||
t
->
verdict
==
-
NF_ACCEPT
-
1
);
/* Hooks and underflows must be valid entries */
iptcb_entry2index
(
h
,
get_entry
(
h
,
h
->
info
.
hook_entry
[
i
]));
iptcb_entry2index
(
h
,
get_entry
(
h
,
h
->
info
.
underflow
[
i
]));
}
assert
(
h
->
info
.
size
>=
h
->
info
.
num_entries
*
(
sizeof
(
STRUCT_ENTRY
)
+
sizeof
(
STRUCT_STANDARD_TARGET
)));
assert
(
h
->
entries
.
size
>=
(
h
->
new_number
*
(
sizeof
(
STRUCT_ENTRY
)
+
sizeof
(
STRUCT_STANDARD_TARGET
))));
assert
(
strcmp
(
h
->
info
.
name
,
h
->
entries
.
name
)
==
0
);
i
=
0
;
n
=
0
;
was_return
=
0
;
#if 0
/* Check all the entries. */
ENTRY_ITERATE(h->entries.entrytable, h->entries.size,
check_entry, &i, &n, user_offset, &was_return, h);
assert(i == h->new_number);
assert(n == h->entries.size);
/* Final entry must be error node */
assert(strcmp(GET_TARGET(index2entry(h, h->new_number-1))
->u.user.name,
ERROR_TARGET) == 0);
#endif
}
#endif
/*IPTC_DEBUG*/
libiptc/libiptc.c
View file @
290749d4
...
...
@@ -160,7 +160,7 @@ static struct chain_head *iptcc_alloc_chain_head(const char *name, int hooknum)
return
NULL
;
memset
(
c
,
0
,
sizeof
(
*
c
));
strncpy
(
c
->
name
,
name
,
TABLE_MAXNAMELEN
);
strncpy
(
c
->
name
,
name
,
TABLE_MAXNAMELEN
-
1
);
c
->
hooknum
=
hooknum
;
INIT_LIST_HEAD
(
&
c
->
rules
);
...
...
@@ -188,14 +188,6 @@ set_changed(struct xtc_handle *h)
h
->
changed
=
1
;
}
#ifdef IPTC_DEBUG
static
void
do_check
(
struct
xtc_handle
*
h
,
unsigned
int
line
);
#define CHECK(h) do { if (!getenv("IPTC_NO_CHECK")) do_check((h), __LINE__); } while(0)
#else
#define CHECK(h)
#endif
/**********************************************************************
* iptc blob utility functions (iptcb_*)
**********************************************************************/
...
...
@@ -1370,7 +1362,6 @@ retry:
if
(
parse_table
(
h
)
<
0
)
goto
error
;
CHECK
(
h
);
return
h
;
error:
TC_FREE
(
h
);
...
...
@@ -1417,7 +1408,6 @@ void
TC_DUMP_ENTRIES
(
struct
xtc_handle
*
const
handle
)
{
iptc_fn
=
TC_DUMP_ENTRIES
;
CHECK
(
handle
);
printf
(
"libiptc v%s. %u bytes.
\n
"
,
XTABLES_VERSION
,
handle
->
entries
->
size
);
...
...
@@ -2152,7 +2142,6 @@ TC_READ_COUNTER(const IPT_CHAINLABEL chain,
struct
rule_head
*
r
;
iptc_fn
=
TC_READ_COUNTER
;
CHECK
(
*
handle
);
if
(
!
(
c
=
iptcc_find_label
(
chain
,
handle
)))
{
errno
=
ENOENT
;
...
...
@@ -2176,7 +2165,6 @@ TC_ZERO_COUNTER(const IPT_CHAINLABEL chain,
struct
rule_head
*
r
;
iptc_fn
=
TC_ZERO_COUNTER
;
CHECK
(
handle
);
if
(
!
(
c
=
iptcc_find_label
(
chain
,
handle
)))
{
errno
=
ENOENT
;
...
...
@@ -2207,7 +2195,6 @@ TC_SET_COUNTER(const IPT_CHAINLABEL chain,
STRUCT_ENTRY
*
e
;
iptc_fn
=
TC_SET_COUNTER
;
CHECK
(
handle
);
if
(
!
(
c
=
iptcc_find_label
(
chain
,
handle
)))
{
errno
=
ENOENT
;
...
...
@@ -2398,7 +2385,7 @@ int TC_RENAME_CHAIN(const IPT_CHAINLABEL oldname,
iptcc_chain_index_delete_chain
(
c
,
handle
);
/* Change the name of the chain */
strncpy
(
c
->
name
,
newname
,
sizeof
(
IPT_CHAINLABEL
));
strncpy
(
c
->
name
,
newname
,
sizeof
(
IPT_CHAINLABEL
)
-
1
);
/* Insert sorted into to list again */
iptc_insert_chain
(
handle
,
c
);
...
...
@@ -2532,7 +2519,6 @@ TC_COMMIT(struct xtc_handle *handle)
unsigned
int
new_size
;
iptc_fn
=
TC_COMMIT
;
CHECK
(
*
handle
);
/* Don't commit if nothing changed. */
if
(
!
handle
->
changed
)
...
...
libxtables/Makefile.in
View file @
290749d4
...
...
@@ -95,10 +95,10 @@ host_triplet = @host@
@ENABLE_SHARED_TRUE@
am__append_2
=
-ldl
subdir
=
libxtables
ACLOCAL_M4
=
$(top_srcdir)
/aclocal.m4
am__aclocal_m4_deps
=
$(top_srcdir)
/m4/
ax_check_linker_flags
.m4
\
$(top_srcdir)
/m4/l
ibtool
.m4
$(top_srcdir)
/m4/lt
options
.m4
\
$(top_srcdir)
/m4/lt
sugar
.m4
$(top_srcdir)
/m4/lt
version
.m4
\
$(top_srcdir)
/m4/lt~obsolete.m4
$(top_srcdir)
/configure.ac
am__aclocal_m4_deps
=
$(top_srcdir)
/m4/
libtool
.m4
\
$(top_srcdir)
/m4/l
toptions
.m4
$(top_srcdir)
/m4/lt
sugar
.m4
\
$(top_srcdir)
/m4/lt
version
.m4
$(top_srcdir)
/m4/lt
~obsolete
.m4
\
$(top_srcdir)
/configure.ac
am__configure_deps
=
$(am__aclocal_m4_deps)
$(CONFIGURE_DEPENDENCIES)
\
$(ACLOCAL_M4)
DIST_COMMON
=
$(srcdir)
/Makefile.am
$(am__DIST_COMMON)
...
...
@@ -246,9 +246,6 @@ 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@
...
...
@@ -282,8 +279,6 @@ 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@
...
...
@@ -328,7 +323,6 @@ 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@
...
...
m4/ax_check_linker_flags.m4
deleted
100644 → 0
View file @
89c92f0c
#http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_check_linker_flags.m4
# ===========================================================================
# http://www.gnu.org/software/autoconf-archive/ax_check_linker_flags.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_CHECK_LINKER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE])
#
# DESCRIPTION
#
# Check whether the given linker FLAGS work with the current language's
# linker, or whether they give an error.
#
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
# success/failure.
#
# NOTE: Based on AX_CHECK_COMPILER_FLAGS.
#
# LICENSE
#
# Copyright (c) 2009 Mike Frysinger <vapier@gentoo.org>
# Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
# Copyright (c) 2009 Matteo Frigo
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, either version 3 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
#serial 6
AC_DEFUN([AX_CHECK_LINKER_FLAGS],
[AC_MSG_CHECKING([whether the linker accepts $1])
dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
AS_LITERAL_IF([$1],
[AC_CACHE_VAL(AS_TR_SH(ax_cv_linker_flags_[$1]), [
ax_save_FLAGS=$LDFLAGS
LDFLAGS="$1"
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
AS_TR_SH(ax_cv_linker_flags_[$1])=yes,
AS_TR_SH(ax_cv_linker_flags_[$1])=no)
LDFLAGS=$ax_save_FLAGS])],
[ax_save_FLAGS=$LDFLAGS
LDFLAGS="$1"
AC_LINK_IFELSE([AC_LANG_PROGRAM()],
eval AS_TR_SH(ax_cv_linker_flags_[$1])=yes,
eval AS_TR_SH(ax_cv_linker_flags_[$1])=no)
LDFLAGS=$ax_save_FLAGS])
eval ax_check_linker_flags=$AS_TR_SH(ax_cv_linker_flags_[$1])
AC_MSG_RESULT($ax_check_linker_flags)
if test "x$ax_check_linker_flags" = xyes; then
m4_default([$2], :)
else
m4_default([$3], :)
fi
])dnl AX_CHECK_LINKER_FLAGS
utils/Makefile.in
View file @
290749d4
...
...
@@ -99,10 +99,10 @@ sbin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
@ENABLE_SYNCONF_TRUE@
am__append_6
=
nfsynproxy
subdir
=
utils
ACLOCAL_M4
=
$(top_srcdir)
/aclocal.m4
am__aclocal_m4_deps
=
$(top_srcdir)
/m4/
ax_check_linker_flags
.m4
\
$(top_srcdir)
/m4/l
ibtool
.m4
$(top_srcdir)
/m4/lt
options
.m4
\
$(top_srcdir)
/m4/lt
sugar
.m4
$(top_srcdir)
/m4/lt
version
.m4
\
$(top_srcdir)
/m4/lt~obsolete.m4
$(top_srcdir)
/configure.ac
am__aclocal_m4_deps
=
$(top_srcdir)
/m4/
libtool
.m4
\
$(top_srcdir)
/m4/l
toptions
.m4
$(top_srcdir)
/m4/lt
sugar
.m4
\
$(top_srcdir)
/m4/lt
version
.m4
$(top_srcdir)
/m4/lt
~obsolete
.m4
\
$(top_srcdir)
/configure.ac
am__configure_deps
=
$(am__aclocal_m4_deps)
$(CONFIGURE_DEPENDENCIES)
\
$(ACLOCAL_M4)
DIST_COMMON
=
$(srcdir)
/Makefile.am
$(am__DIST_COMMON)
...
...
@@ -258,9 +258,6 @@ 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@
...
...
@@ -294,8 +291,6 @@ 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@
...
...
@@ -340,7 +335,6 @@ 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@
...
...
utils/nfnl_osf.c
View file @
290749d4
...
...
@@ -343,31 +343,34 @@ static int osf_load_line(char *buffer, int len, int del)
pend
=
xt_osf_strchr
(
pbeg
,
OSFPDEL
);
if
(
pend
)
{
*
pend
=
'\0'
;
snprintf
(
obuf
,
sizeof
(
obuf
),
"%s,"
,
pbeg
);
i
=
sizeof
(
obuf
);
snprintf
(
obuf
,
i
,
"%.*s,"
,
i
-
2
,
pbeg
);
pbeg
=
pend
+
1
;
}
pend
=
xt_osf_strchr
(
pbeg
,
OSFPDEL
);
if
(
pend
)
{
*
pend
=
'\0'
;
i
=
sizeof
(
f
.
genre
);
if
(
pbeg
[
0
]
==
'@'
||
pbeg
[
0
]
==
'*'
)
snprintf
(
f
.
genre
,
sizeof
(
f
.
genre
),
"%s"
,
pbeg
+
1
);
else
snprintf
(
f
.
genre
,
sizeof
(
f
.
genre
),
"%s"
,
pbeg
);
pbeg
++
;
snprintf
(
f
.
genre
,
i
,
"%.*s"
,
i
-
1
,
pbeg
);
pbeg
=
pend
+
1
;
}
pend
=
xt_osf_strchr
(
pbeg
,
OSFPDEL
);
if
(
pend
)
{
*
pend
=
'\0'
;
snprintf
(
f
.
version
,
sizeof
(
f
.
version
),
"%s"
,
pbeg
);
i
=
sizeof
(
f
.
version
);
snprintf
(
f
.
version
,
i
,
"%.*s"
,
i
-
1
,
pbeg
);
pbeg
=
pend
+
1
;
}
pend
=
xt_osf_strchr
(
pbeg
,
OSFPDEL
);
if
(
pend
)
{
*
pend
=
'\0'
;
snprintf
(
f
.
subtype
,
sizeof
(
f
.
subtype
),
"%s"
,
pbeg
);
i
=
sizeof
(
f
.
subtype
);
snprintf
(
f
.
subtype
,
i
,
"%.*s"
,
i
-
1
,
pbeg
);
}
xt_osf_parse_opt
(
f
.
opt
,
&
f
.
opt_num
,
obuf
,
sizeof
(
obuf
));
...
...
Prev
1
2
3
4
5
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