Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
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
5 years ago
by
Arturo Borrero Gonzalez
Browse files
Options
Download
Email Patches
Plain Diff
New upstream version 1.8.4
parent
89c92f0c
master
debian/buster-backports
upstream
upstream/1.8.7
upstream/1.8.6
upstream/1.8.5
upstream/1.8.4
debian/1.8.7-1
debian/1.8.6-1
debian/1.8.5-3
debian/1.8.5-3_bpo10+1
debian/1.8.5-2
debian/1.8.5-1
debian/1.8.4-3
debian/1.8.4-2
debian/1.8.4-1
No related merge requests found
Changes
87
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
libiptc/libip4tc.c
+0
-174
libiptc/libip4tc.c
libiptc/libip6tc.c
+1
-177
libiptc/libip6tc.c
libiptc/libiptc.c
+2
-16
libiptc/libiptc.c
libxtables/Makefile.in
+4
-10
libxtables/Makefile.in
m4/ax_check_linker_flags.m4
+0
-78
m4/ax_check_linker_flags.m4
utils/Makefile.in
+4
-10
utils/Makefile.in
utils/nfnl_osf.c
+9
-6
utils/nfnl_osf.c
with
20 additions
and
471 deletions
+20
-471
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
This diff is collapsed.
Click to expand it.
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*/
This diff is collapsed.
Click to expand it.
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
)
...
...
This diff is collapsed.
Click to expand it.
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@
...
...
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
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@
...
...
This diff is collapsed.
Click to expand it.
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
));
...
...
This diff is collapsed.
Click to expand it.
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
Menu
Projects
Groups
Snippets
Help