Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
iproute2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
iproute2
Commits
1ffd7fd2
Commit
1ffd7fd2
authored
Jan 17, 2005
by
net[shemminger]!shemminger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Import patch iproute2.110
(Logical change 1.112)
parent
3e1d2ea6
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1379 additions
and
0 deletions
+1379
-0
ChangeLog
ChangeLog
+5
-0
include/ip6tables.h
include/ip6tables.h
+141
-0
include/iptables.h
include/iptables.h
+155
-0
include/iptables_common.h
include/iptables_common.h
+37
-0
include/libiptc/ipt_kernel_headers.h
include/libiptc/ipt_kernel_headers.h
+27
-0
include/libiptc/libip6tc.h
include/libiptc/libip6tc.h
+154
-0
include/libiptc/libiptc.h
include/libiptc/libiptc.h
+166
-0
include/linux/tc_act/tc_ipt.h
include/linux/tc_act/tc_ipt.h
+21
-0
tc/Makefile
tc/Makefile
+1
-0
tc/m_ipt.c
tc/m_ipt.c
+672
-0
No files found.
ChangeLog
View file @
1ffd7fd2
2005-01-12 Jamal Hadi Salim <hadi@znyx.com>
* Add iptables tc support. This meant borrowing headers
from iptables *ugh*
2004-12-08 Jamal Hadi Salim <hadi@znyx.com>
* Add mirror and redirect actions
...
...
include/ip6tables.h
View file @
1ffd7fd2
#ifndef _IP6TABLES_USER_H
#define _IP6TABLES_USER_H
#include "iptables_common.h"
#include "libiptc/libip6tc.h"
struct
ip6tables_rule_match
{
struct
ip6tables_rule_match
*
next
;
struct
ip6tables_match
*
match
;
};
/* Include file for additions: new matches and targets. */
struct
ip6tables_match
{
struct
ip6tables_match
*
next
;
ip6t_chainlabel
name
;
const
char
*
version
;
/* Size of match data. */
size_t
size
;
/* Size of match data relevent for userspace comparison purposes */
size_t
userspacesize
;
/* Function which prints out usage message. */
void
(
*
help
)(
void
);
/* Initialize the match. */
void
(
*
init
)(
struct
ip6t_entry_match
*
m
,
unsigned
int
*
nfcache
);
/* Function which parses command options; returns true if it
ate an option */
int
(
*
parse
)(
int
c
,
char
**
argv
,
int
invert
,
unsigned
int
*
flags
,
const
struct
ip6t_entry
*
entry
,
unsigned
int
*
nfcache
,
struct
ip6t_entry_match
**
match
);
/* Final check; exit if not ok. */
void
(
*
final_check
)(
unsigned
int
flags
);
/* Prints out the match iff non-NULL: put space at end */
void
(
*
print
)(
const
struct
ip6t_ip6
*
ip
,
const
struct
ip6t_entry_match
*
match
,
int
numeric
);
/* Saves the union ipt_matchinfo in parsable form to stdout. */
void
(
*
save
)(
const
struct
ip6t_ip6
*
ip
,
const
struct
ip6t_entry_match
*
match
);
/* Pointer to list of extra command-line options */
const
struct
option
*
extra_opts
;
/* Ignore these men behind the curtain: */
unsigned
int
option_offset
;
struct
ip6t_entry_match
*
m
;
unsigned
int
mflags
;
#ifdef NO_SHARED_LIBS
unsigned
int
loaded
;
/* simulate loading so options are merged properly */
#endif
};
struct
ip6tables_target
{
struct
ip6tables_target
*
next
;
ip6t_chainlabel
name
;
const
char
*
version
;
/* Size of target data. */
size_t
size
;
/* Size of target data relevent for userspace comparison purposes */
size_t
userspacesize
;
/* Function which prints out usage message. */
void
(
*
help
)(
void
);
/* Initialize the target. */
void
(
*
init
)(
struct
ip6t_entry_target
*
t
,
unsigned
int
*
nfcache
);
/* Function which parses command options; returns true if it
ate an option */
int
(
*
parse
)(
int
c
,
char
**
argv
,
int
invert
,
unsigned
int
*
flags
,
const
struct
ip6t_entry
*
entry
,
struct
ip6t_entry_target
**
target
);
/* Final check; exit if not ok. */
void
(
*
final_check
)(
unsigned
int
flags
);
/* Prints out the target iff non-NULL: put space at end */
void
(
*
print
)(
const
struct
ip6t_ip6
*
ip
,
const
struct
ip6t_entry_target
*
target
,
int
numeric
);
/* Saves the targinfo in parsable form to stdout. */
void
(
*
save
)(
const
struct
ip6t_ip6
*
ip
,
const
struct
ip6t_entry_target
*
target
);
/* Pointer to list of extra command-line options */
struct
option
*
extra_opts
;
/* Ignore these men behind the curtain: */
unsigned
int
option_offset
;
struct
ip6t_entry_target
*
t
;
unsigned
int
tflags
;
unsigned
int
used
;
#ifdef NO_SHARED_LIBS
unsigned
int
loaded
;
/* simulate loading so options are merged properly */
#endif
};
extern
int
line
;
/* Your shared library should call one of these. */
extern
void
register_match6
(
struct
ip6tables_match
*
me
);
extern
void
register_target6
(
struct
ip6tables_target
*
me
);
extern
int
do_command6
(
int
argc
,
char
*
argv
[],
char
**
table
,
ip6tc_handle_t
*
handle
);
/* Keeping track of external matches and targets: linked lists. */
extern
struct
ip6tables_match
*
ip6tables_matches
;
extern
struct
ip6tables_target
*
ip6tables_targets
;
enum
ip6t_tryload
{
DONT_LOAD
,
TRY_LOAD
,
LOAD_MUST_SUCCEED
};
extern
struct
ip6tables_target
*
find_target
(
const
char
*
name
,
enum
ip6t_tryload
);
extern
struct
ip6tables_match
*
find_match
(
const
char
*
name
,
enum
ip6t_tryload
,
struct
ip6tables_rule_match
**
match
);
extern
int
for_each_chain
(
int
(
*
fn
)(
const
ip6t_chainlabel
,
int
,
ip6tc_handle_t
*
),
int
verbose
,
int
builtinstoo
,
ip6tc_handle_t
*
handle
);
extern
int
flush_entries
(
const
ip6t_chainlabel
chain
,
int
verbose
,
ip6tc_handle_t
*
handle
);
extern
int
delete_chain
(
const
ip6t_chainlabel
chain
,
int
verbose
,
ip6tc_handle_t
*
handle
);
extern
int
ip6tables_insmod
(
const
char
*
modname
,
const
char
*
modprobe
);
#endif
/*_IP6TABLES_USER_H*/
include/iptables.h
View file @
1ffd7fd2
#ifndef _IPTABLES_USER_H
#define _IPTABLES_USER_H
#include "iptables_common.h"
#include "libiptc/libiptc.h"
#ifndef IPPROTO_SCTP
#define IPPROTO_SCTP 132
#endif
struct
iptables_rule_match
{
struct
iptables_rule_match
*
next
;
struct
iptables_match
*
match
;
};
/* Include file for additions: new matches and targets. */
struct
iptables_match
{
struct
iptables_match
*
next
;
ipt_chainlabel
name
;
const
char
*
version
;
/* Size of match data. */
size_t
size
;
/* Size of match data relevent for userspace comparison purposes */
size_t
userspacesize
;
/* Function which prints out usage message. */
void
(
*
help
)(
void
);
/* Initialize the match. */
void
(
*
init
)(
struct
ipt_entry_match
*
m
,
unsigned
int
*
nfcache
);
/* Function which parses command options; returns true if it
ate an option */
int
(
*
parse
)(
int
c
,
char
**
argv
,
int
invert
,
unsigned
int
*
flags
,
const
struct
ipt_entry
*
entry
,
unsigned
int
*
nfcache
,
struct
ipt_entry_match
**
match
);
/* Final check; exit if not ok. */
void
(
*
final_check
)(
unsigned
int
flags
);
/* Prints out the match iff non-NULL: put space at end */
void
(
*
print
)(
const
struct
ipt_ip
*
ip
,
const
struct
ipt_entry_match
*
match
,
int
numeric
);
/* Saves the match info in parsable form to stdout. */
void
(
*
save
)(
const
struct
ipt_ip
*
ip
,
const
struct
ipt_entry_match
*
match
);
/* Pointer to list of extra command-line options */
const
struct
option
*
extra_opts
;
/* Ignore these men behind the curtain: */
unsigned
int
option_offset
;
struct
ipt_entry_match
*
m
;
unsigned
int
mflags
;
#ifdef NO_SHARED_LIBS
unsigned
int
loaded
;
/* simulate loading so options are merged properly */
#endif
};
struct
iptables_target
{
struct
iptables_target
*
next
;
ipt_chainlabel
name
;
const
char
*
version
;
/* Size of target data. */
size_t
size
;
/* Size of target data relevent for userspace comparison purposes */
size_t
userspacesize
;
/* Function which prints out usage message. */
void
(
*
help
)(
void
);
/* Initialize the target. */
void
(
*
init
)(
struct
ipt_entry_target
*
t
,
unsigned
int
*
nfcache
);
/* Function which parses command options; returns true if it
ate an option */
int
(
*
parse
)(
int
c
,
char
**
argv
,
int
invert
,
unsigned
int
*
flags
,
const
struct
ipt_entry
*
entry
,
struct
ipt_entry_target
**
target
);
/* Final check; exit if not ok. */
void
(
*
final_check
)(
unsigned
int
flags
);
/* Prints out the target iff non-NULL: put space at end */
void
(
*
print
)(
const
struct
ipt_ip
*
ip
,
const
struct
ipt_entry_target
*
target
,
int
numeric
);
/* Saves the targinfo in parsable form to stdout. */
void
(
*
save
)(
const
struct
ipt_ip
*
ip
,
const
struct
ipt_entry_target
*
target
);
/* Pointer to list of extra command-line options */
struct
option
*
extra_opts
;
/* Ignore these men behind the curtain: */
unsigned
int
option_offset
;
struct
ipt_entry_target
*
t
;
unsigned
int
tflags
;
unsigned
int
used
;
#ifdef NO_SHARED_LIBS
unsigned
int
loaded
;
/* simulate loading so options are merged properly */
#endif
};
extern
int
line
;
/* Your shared library should call one of these. */
extern
void
register_match
(
struct
iptables_match
*
me
);
extern
void
register_target
(
struct
iptables_target
*
me
);
extern
struct
in_addr
*
dotted_to_addr
(
const
char
*
dotted
);
extern
char
*
addr_to_dotted
(
const
struct
in_addr
*
addrp
);
extern
char
*
addr_to_anyname
(
const
struct
in_addr
*
addr
);
extern
char
*
mask_to_dotted
(
const
struct
in_addr
*
mask
);
extern
void
parse_hostnetworkmask
(
const
char
*
name
,
struct
in_addr
**
addrpp
,
struct
in_addr
*
maskp
,
unsigned
int
*
naddrs
);
extern
u_int16_t
parse_protocol
(
const
char
*
s
);
extern
int
do_command
(
int
argc
,
char
*
argv
[],
char
**
table
,
iptc_handle_t
*
handle
);
/* Keeping track of external matches and targets: linked lists. */
extern
struct
iptables_match
*
iptables_matches
;
extern
struct
iptables_target
*
iptables_targets
;
enum
ipt_tryload
{
DONT_LOAD
,
TRY_LOAD
,
LOAD_MUST_SUCCEED
};
extern
struct
iptables_target
*
find_target
(
const
char
*
name
,
enum
ipt_tryload
);
extern
struct
iptables_match
*
find_match
(
const
char
*
name
,
enum
ipt_tryload
,
struct
iptables_rule_match
**
match
);
extern
int
delete_chain
(
const
ipt_chainlabel
chain
,
int
verbose
,
iptc_handle_t
*
handle
);
extern
int
flush_entries
(
const
ipt_chainlabel
chain
,
int
verbose
,
iptc_handle_t
*
handle
);
extern
int
for_each_chain
(
int
(
*
fn
)(
const
ipt_chainlabel
,
int
,
iptc_handle_t
*
),
int
verbose
,
int
builtinstoo
,
iptc_handle_t
*
handle
);
#endif
/*_IPTABLES_USER_H*/
include/iptables_common.h
View file @
1ffd7fd2
#ifndef _IPTABLES_COMMON_H
#define _IPTABLES_COMMON_H
/* Shared definitions between ipv4 and ipv6. */
enum
exittype
{
OTHER_PROBLEM
=
1
,
PARAMETER_PROBLEM
,
VERSION_PROBLEM
};
extern
void
exit_printhelp
(
void
)
__attribute__
((
noreturn
));
extern
void
exit_tryhelp
(
int
)
__attribute__
((
noreturn
));
int
check_inverse
(
const
char
option
[],
int
*
invert
,
int
*
optind
,
int
argc
);
extern
int
string_to_number
(
const
char
*
,
unsigned
int
,
unsigned
int
,
unsigned
int
*
);
extern
int
string_to_number_l
(
const
char
*
,
unsigned
long
int
,
unsigned
long
int
,
unsigned
long
*
);
extern
int
string_to_number_ll
(
const
char
*
,
unsigned
long
long
int
,
unsigned
long
long
int
,
unsigned
long
long
*
);
extern
int
iptables_insmod
(
const
char
*
modname
,
const
char
*
modprobe
);
void
exit_error
(
enum
exittype
,
char
*
,
...)
__attribute__
((
noreturn
,
format
(
printf
,
2
,
3
)));
extern
const
char
*
program_name
,
*
program_version
;
#ifdef NO_SHARED_LIBS
# ifdef _INIT
# define _init _INIT
# endif
extern
void
init_extensions
(
void
);
#endif
#endif
/*_IPTABLES_COMMON_H*/
include/libiptc/ipt_kernel_headers.h
View file @
1ffd7fd2
/* This is the userspace/kernel interface for Generic IP Chains,
required for libc6. */
#ifndef _FWCHAINS_KERNEL_HEADERS_H
#define _FWCHAINS_KERNEL_HEADERS_H
#include <limits.h>
#if defined(__GLIBC__) && __GLIBC__ == 2
#include <netinet/ip.h>
#include <netinet/in.h>
#include <netinet/ip_icmp.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <net/if.h>
#include <sys/types.h>
#else
/* libc5 */
#include <sys/socket.h>
#include <linux/ip.h>
#include <linux/in.h>
#include <linux/if.h>
#include <linux/icmp.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <linux/types.h>
#include <linux/in6.h>
#endif
#endif
include/libiptc/libip6tc.h
View file @
1ffd7fd2
#ifndef _LIBIP6TC_H
#define _LIBIP6TC_H
/* Library which manipulates firewall rules. Version 0.2. */
#include <libiptc/ipt_kernel_headers.h>
#include <linux/netfilter_ipv6/ip6_tables.h>
#ifndef IP6T_MIN_ALIGN
#define IP6T_MIN_ALIGN (__alignof__(struct ip6t_entry))
#endif
#define IP6T_ALIGN(s) (((s) + (IP6T_MIN_ALIGN-1)) & ~(IP6T_MIN_ALIGN-1))
typedef
char
ip6t_chainlabel
[
32
];
#define IP6TC_LABEL_ACCEPT "ACCEPT"
#define IP6TC_LABEL_DROP "DROP"
#define IP6TC_LABEL_QUEUE "QUEUE"
#define IP6TC_LABEL_RETURN "RETURN"
/* Transparent handle type. */
typedef
struct
ip6tc_handle
*
ip6tc_handle_t
;
/* Does this chain exist? */
int
ip6tc_is_chain
(
const
char
*
chain
,
const
ip6tc_handle_t
handle
);
/* Take a snapshot of the rules. Returns NULL on error. */
ip6tc_handle_t
ip6tc_init
(
const
char
*
tablename
);
/* Cleanup after ip6tc_init(). */
void
ip6tc_free
(
ip6tc_handle_t
*
h
);
/* Iterator functions to run through the chains. Returns NULL at end. */
const
char
*
ip6tc_first_chain
(
ip6tc_handle_t
*
handle
);
const
char
*
ip6tc_next_chain
(
ip6tc_handle_t
*
handle
);
/* Get first rule in the given chain: NULL for empty chain. */
const
struct
ip6t_entry
*
ip6tc_first_rule
(
const
char
*
chain
,
ip6tc_handle_t
*
handle
);
/* Returns NULL when rules run out. */
const
struct
ip6t_entry
*
ip6tc_next_rule
(
const
struct
ip6t_entry
*
prev
,
ip6tc_handle_t
*
handle
);
/* Returns a pointer to the target name of this position. */
const
char
*
ip6tc_get_target
(
const
struct
ip6t_entry
*
e
,
ip6tc_handle_t
*
handle
);
/* Is this a built-in chain? */
int
ip6tc_builtin
(
const
char
*
chain
,
const
ip6tc_handle_t
handle
);
/* Get the policy of a given built-in chain */
const
char
*
ip6tc_get_policy
(
const
char
*
chain
,
struct
ip6t_counters
*
counters
,
ip6tc_handle_t
*
handle
);
/* These functions return TRUE for OK or 0 and set errno. If errno ==
0, it means there was a version error (ie. upgrade libiptc). */
/* Rule numbers start at 1 for the first rule. */
/* Insert the entry `fw' in chain `chain' into position `rulenum'. */
int
ip6tc_insert_entry
(
const
ip6t_chainlabel
chain
,
const
struct
ip6t_entry
*
e
,
unsigned
int
rulenum
,
ip6tc_handle_t
*
handle
);
/* Atomically replace rule `rulenum' in `chain' with `fw'. */
int
ip6tc_replace_entry
(
const
ip6t_chainlabel
chain
,
const
struct
ip6t_entry
*
e
,
unsigned
int
rulenum
,
ip6tc_handle_t
*
handle
);
/* Append entry `fw' to chain `chain'. Equivalent to insert with
rulenum = length of chain. */
int
ip6tc_append_entry
(
const
ip6t_chainlabel
chain
,
const
struct
ip6t_entry
*
e
,
ip6tc_handle_t
*
handle
);
/* Delete the first rule in `chain' which matches `fw'. */
int
ip6tc_delete_entry
(
const
ip6t_chainlabel
chain
,
const
struct
ip6t_entry
*
origfw
,
unsigned
char
*
matchmask
,
ip6tc_handle_t
*
handle
);
/* Delete the rule in position `rulenum' in `chain'. */
int
ip6tc_delete_num_entry
(
const
ip6t_chainlabel
chain
,
unsigned
int
rulenum
,
ip6tc_handle_t
*
handle
);
/* Check the packet `fw' on chain `chain'. Returns the verdict, or
NULL and sets errno. */
const
char
*
ip6tc_check_packet
(
const
ip6t_chainlabel
chain
,
struct
ip6t_entry
*
,
ip6tc_handle_t
*
handle
);
/* Flushes the entries in the given chain (ie. empties chain). */
int
ip6tc_flush_entries
(
const
ip6t_chainlabel
chain
,
ip6tc_handle_t
*
handle
);
/* Zeroes the counters in a chain. */
int
ip6tc_zero_entries
(
const
ip6t_chainlabel
chain
,
ip6tc_handle_t
*
handle
);
/* Creates a new chain. */
int
ip6tc_create_chain
(
const
ip6t_chainlabel
chain
,
ip6tc_handle_t
*
handle
);
/* Deletes a chain. */
int
ip6tc_delete_chain
(
const
ip6t_chainlabel
chain
,
ip6tc_handle_t
*
handle
);
/* Renames a chain. */
int
ip6tc_rename_chain
(
const
ip6t_chainlabel
oldname
,
const
ip6t_chainlabel
newname
,
ip6tc_handle_t
*
handle
);
/* Sets the policy on a built-in chain. */
int
ip6tc_set_policy
(
const
ip6t_chainlabel
chain
,
const
ip6t_chainlabel
policy
,
struct
ip6t_counters
*
counters
,
ip6tc_handle_t
*
handle
);
/* Get the number of references to this chain */
int
ip6tc_get_references
(
unsigned
int
*
ref
,
const
ip6t_chainlabel
chain
,
ip6tc_handle_t
*
handle
);
/* read packet and byte counters for a specific rule */
struct
ip6t_counters
*
ip6tc_read_counter
(
const
ip6t_chainlabel
chain
,
unsigned
int
rulenum
,
ip6tc_handle_t
*
handle
);
/* zero packet and byte counters for a specific rule */
int
ip6tc_zero_counter
(
const
ip6t_chainlabel
chain
,
unsigned
int
rulenum
,
ip6tc_handle_t
*
handle
);
/* set packet and byte counters for a specific rule */
int
ip6tc_set_counter
(
const
ip6t_chainlabel
chain
,
unsigned
int
rulenum
,
struct
ip6t_counters
*
counters
,
ip6tc_handle_t
*
handle
);
/* Makes the actual changes. */
int
ip6tc_commit
(
ip6tc_handle_t
*
handle
);
/* Get raw socket. */
int
ip6tc_get_raw_socket
();
/* Translates errno numbers into more human-readable form than strerror. */
const
char
*
ip6tc_strerror
(
int
err
);
/* Return prefix length, or -1 if not contiguous */
int
ipv6_prefix_length
(
const
struct
in6_addr
*
a
);
#endif
/* _LIBIP6TC_H */
include/libiptc/libiptc.h
View file @
1ffd7fd2
#ifndef _LIBIPTC_H
#define _LIBIPTC_H
/* Library which manipulates filtering rules. */
#include <libiptc/ipt_kernel_headers.h>
#include <linux/netfilter_ipv4/ip_tables.h>
#ifdef __cplusplus
extern
"C"
{
#endif
#ifndef IPT_MIN_ALIGN
/* ipt_entry has pointers and u_int64_t's in it, so if you align to
it, you'll also align to any crazy matches and targets someone
might write */
#define IPT_MIN_ALIGN (__alignof__(struct ipt_entry))
#endif
#define IPT_ALIGN(s) (((s) + ((IPT_MIN_ALIGN)-1)) & ~((IPT_MIN_ALIGN)-1))
typedef
char
ipt_chainlabel
[
32
];
#define IPTC_LABEL_ACCEPT "ACCEPT"
#define IPTC_LABEL_DROP "DROP"
#define IPTC_LABEL_QUEUE "QUEUE"
#define IPTC_LABEL_RETURN "RETURN"
/* Transparent handle type. */
typedef
struct
iptc_handle
*
iptc_handle_t
;
/* Does this chain exist? */
int
iptc_is_chain
(
const
char
*
chain
,
const
iptc_handle_t
handle
);
/* Take a snapshot of the rules. Returns NULL on error. */
iptc_handle_t
iptc_init
(
const
char
*
tablename
);
/* Cleanup after iptc_init(). */
void
iptc_free
(
iptc_handle_t
*
h
);
/* Iterator functions to run through the chains. Returns NULL at end. */
const
char
*
iptc_first_chain
(
iptc_handle_t
*
handle
);
const
char
*
iptc_next_chain
(
iptc_handle_t
*
handle
);
/* Get first rule in the given chain: NULL for empty chain. */
const
struct
ipt_entry
*
iptc_first_rule
(
const
char
*
chain
,
iptc_handle_t
*
handle
);
/* Returns NULL when rules run out. */
const
struct
ipt_entry
*
iptc_next_rule
(
const
struct
ipt_entry
*
prev
,
iptc_handle_t
*
handle
);
/* Returns a pointer to the target name of this entry. */
const
char
*
iptc_get_target
(
const
struct
ipt_entry
*
e
,
iptc_handle_t
*
handle
);
/* Is this a built-in chain? */
int
iptc_builtin
(
const
char
*
chain
,
const
iptc_handle_t
handle
);
/* Get the policy of a given built-in chain */
const
char
*
iptc_get_policy
(
const
char
*
chain
,
struct
ipt_counters
*
counter
,
iptc_handle_t
*
handle
);
/* These functions return TRUE for OK or 0 and set errno. If errno ==
0, it means there was a version error (ie. upgrade libiptc). */
/* Rule numbers start at 1 for the first rule. */
/* Insert the entry `e' in chain `chain' into position `rulenum'. */
int
iptc_insert_entry
(
const
ipt_chainlabel
chain
,
const
struct
ipt_entry
*
e
,
unsigned
int
rulenum
,
iptc_handle_t
*
handle
);
/* Atomically replace rule `rulenum' in `chain' with `e'. */
int
iptc_replace_entry
(
const
ipt_chainlabel
chain
,
const
struct
ipt_entry
*
e
,
unsigned
int
rulenum
,
iptc_handle_t
*
handle
);
/* Append entry `e' to chain `chain'. Equivalent to insert with
rulenum = length of chain. */
int
iptc_append_entry
(
const
ipt_chainlabel
chain
,
const
struct
ipt_entry
*
e
,
iptc_handle_t
*
handle
);
/* Delete the first rule in `chain' which matches `e', subject to
matchmask (array of length == origfw) */
int
iptc_delete_entry
(
const
ipt_chainlabel
chain
,
const
struct
ipt_entry
*
origfw
,
unsigned
char
*
matchmask
,
iptc_handle_t
*
handle
);
/* Delete the rule in position `rulenum' in `chain'. */
int
iptc_delete_num_entry
(
const
ipt_chainlabel
chain
,
unsigned
int
rulenum
,
iptc_handle_t
*
handle
);
/* Check the packet `e' on chain `chain'. Returns the verdict, or
NULL and sets errno. */
const
char
*
iptc_check_packet
(
const
ipt_chainlabel
chain
,
struct
ipt_entry
*
entry
,
iptc_handle_t
*
handle
);
/* Flushes the entries in the given chain (ie. empties chain). */
int
iptc_flush_entries
(
const
ipt_chainlabel
chain
,
iptc_handle_t
*
handle
);
/* Zeroes the counters in a chain. */
int
iptc_zero_entries
(
const
ipt_chainlabel
chain
,
iptc_handle_t
*
handle
);
/* Creates a new chain. */
int
iptc_create_chain
(
const
ipt_chainlabel
chain
,
iptc_handle_t
*
handle
);
/* Deletes a chain. */
int
iptc_delete_chain
(
const
ipt_chainlabel
chain
,
iptc_handle_t
*
handle
);
/* Renames a chain. */
int
iptc_rename_chain
(
const
ipt_chainlabel
oldname
,
const
ipt_chainlabel
newname
,
iptc_handle_t
*
handle
);
/* Sets the policy on a built-in chain. */
int
iptc_set_policy
(
const
ipt_chainlabel
chain
,
const
ipt_chainlabel
policy
,
struct
ipt_counters
*
counters
,
iptc_handle_t
*
handle
);
/* Get the number of references to this chain */
int
iptc_get_references
(
unsigned
int
*
ref
,
const
ipt_chainlabel
chain
,
iptc_handle_t
*
handle
);
/* read packet and byte counters for a specific rule */
struct
ipt_counters
*
iptc_read_counter
(
const
ipt_chainlabel
chain
,
unsigned
int
rulenum
,
iptc_handle_t
*
handle
);
/* zero packet and byte counters for a specific rule */
int
iptc_zero_counter
(
const
ipt_chainlabel
chain
,
unsigned
int
rulenum
,
iptc_handle_t
*
handle
);
/* set packet and byte counters for a specific rule */
int
iptc_set_counter
(
const
ipt_chainlabel
chain
,
unsigned
int
rulenum
,
struct
ipt_counters
*
counters
,
iptc_handle_t
*
handle
);
/* Makes the actual changes. */
int
iptc_commit
(
iptc_handle_t
*
handle
);
/* Get raw socket. */
int
iptc_get_raw_socket
(
void
);
/* Translates errno numbers into more human-readable form than strerror. */
const
char
*
iptc_strerror
(
int
err
);
#ifdef __cplusplus
}
#endif
#endif
/* _LIBIPTC_H */
include/linux/tc_act/tc_ipt.h
View file @
1ffd7fd2
#ifndef __LINUX_TC_IPT_H
#define __LINUX_TC_IPT_H
#include <linux/pkt_cls.h>
#define TCA_ACT_IPT 6
enum
{
TCA_IPT_UNSPEC
,
TCA_IPT_TABLE
,
TCA_IPT_HOOK
,
TCA_IPT_INDEX
,
TCA_IPT_CNT
,
TCA_IPT_TM
,
TCA_IPT_TARG
,
__TCA_IPT_MAX
};
#define TCA_IPT_MAX (__TCA_IPT_MAX - 1)
#endif
tc/Makefile
View file @
1ffd7fd2
...
...
@@ -22,6 +22,7 @@ TCMODULES += q_hfsc.o
TCMODULES
+=
q_htb.o
TCMODULES
+=
m_gact.o
TCMODULES
+=
m_mirred.o
TCMODULES
+=
m_ipt.o
TCOBJ
+=
$(TCMODULES)
...
...
tc/m_ipt.c
View file @
1ffd7fd2
This diff is collapsed.
Click to expand it.
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