mirror of
https://gitlab.com/shorewall/code.git
synced 2025-02-23 05:01:34 +01:00
Add/modify comments in Chains.pm
Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
parent
636d82414f
commit
d096db6a94
@ -2725,6 +2725,12 @@ sub add_expanded_jump( $$$$ ) {
|
|||||||
add_reference( $chainref, $toref ) while --$splitcount > 0;
|
add_reference( $chainref, $toref ) while --$splitcount > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Utility function used by add_ijump() and add_ijump_extended().
|
||||||
|
# Returns a reference to the added rule. Return may be reference
|
||||||
|
# to the dummy rule if the chain was already complete (last rule
|
||||||
|
# is a simple jump to a terminating target).
|
||||||
|
#
|
||||||
sub add_ijump_internal( $$$$$;@ ) {
|
sub add_ijump_internal( $$$$$;@ ) {
|
||||||
my ( $fromref, $jump, $to, $expandports, $origin, @matches ) = @_;
|
my ( $fromref, $jump, $to, $expandports, $origin, @matches ) = @_;
|
||||||
|
|
||||||
@ -2772,16 +2778,26 @@ sub add_ijump_internal( $$$$$;@ ) {
|
|||||||
$expandports ? handle_port_ilist( $fromref, $ruleref, 1 ) : push_irule( $fromref, $ruleref );
|
$expandports ? handle_port_ilist( $fromref, $ruleref, 1 ) : push_irule( $fromref, $ruleref );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Add an jump to the end of a chain
|
||||||
|
#
|
||||||
sub add_ijump( $$$;@ ) {
|
sub add_ijump( $$$;@ ) {
|
||||||
my ( $fromref, $jump, $to, @matches ) = @_;
|
my ( $fromref, $jump, $to, @matches ) = @_;
|
||||||
add_ijump_internal( $fromref, $jump, $to, 0, '', @matches );
|
add_ijump_internal( $fromref, $jump, $to, 0, '', @matches );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Like add_ijump() but also accepts an origin of the jump (the config file and line number
|
||||||
|
# that caused the jump to be generated).
|
||||||
|
#
|
||||||
sub add_ijump_extended( $$$$;@ ) {
|
sub add_ijump_extended( $$$$;@ ) {
|
||||||
my ( $fromref, $jump, $to, $origin, @matches ) = @_;
|
my ( $fromref, $jump, $to, $origin, @matches ) = @_;
|
||||||
add_ijump_internal( $fromref, $jump, $to, 0, $origin, @matches );
|
add_ijump_internal( $fromref, $jump, $to, 0, $origin, @matches );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Insert a jump at a zero-relative index into a chain.
|
||||||
|
#
|
||||||
sub insert_ijump( $$$$;@ ) {
|
sub insert_ijump( $$$$;@ ) {
|
||||||
my ( $fromref, $jump, $to, $index, @matches ) = @_;
|
my ( $fromref, $jump, $to, $index, @matches ) = @_;
|
||||||
|
|
||||||
@ -2853,6 +2869,9 @@ sub delete_jumps ( $$ ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Reset the passed flag(s) in the passed chain
|
||||||
|
#
|
||||||
sub reset_optflags( $$ ) {
|
sub reset_optflags( $$ ) {
|
||||||
my ( $chain, $flags ) = @_;
|
my ( $chain, $flags ) = @_;
|
||||||
|
|
||||||
@ -2865,6 +2884,9 @@ sub reset_optflags( $$ ) {
|
|||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set the passed flag(s) in the passed chain
|
||||||
|
#
|
||||||
sub set_optflags( $$ ) {
|
sub set_optflags( $$ ) {
|
||||||
my ( $chain, $flags ) = @_;
|
my ( $chain, $flags ) = @_;
|
||||||
|
|
||||||
@ -2979,6 +3001,10 @@ sub accounting_chainrefs() {
|
|||||||
grep $_->{accounting} , values %$filter_table;
|
grep $_->{accounting} , values %$filter_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ensure the existance of a chain in the mangle table and return
|
||||||
|
# a reference to its chain table entry
|
||||||
|
#
|
||||||
sub ensure_mangle_chain($;$$) {
|
sub ensure_mangle_chain($;$$) {
|
||||||
my ( $chain, $number, $restriction ) = @_;
|
my ( $chain, $number, $restriction ) = @_;
|
||||||
|
|
||||||
@ -2989,6 +3015,10 @@ sub ensure_mangle_chain($;$$) {
|
|||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ensure the existance of a chain in the nat table and return
|
||||||
|
# a reference to its chain table entry
|
||||||
|
|
||||||
sub ensure_nat_chain($) {
|
sub ensure_nat_chain($) {
|
||||||
my $chain = $_[0];
|
my $chain = $_[0];
|
||||||
|
|
||||||
@ -2997,6 +3027,10 @@ sub ensure_nat_chain($) {
|
|||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ensure the existance of a chain in the raw table and return
|
||||||
|
# a reference to its chain table entry
|
||||||
|
#
|
||||||
sub ensure_raw_chain($) {
|
sub ensure_raw_chain($) {
|
||||||
my $chain = $_[0];
|
my $chain = $_[0];
|
||||||
|
|
||||||
@ -3020,12 +3054,18 @@ sub new_builtin_chain($$$)
|
|||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create a chain in the filter table, returning a reference to its chain table entry
|
||||||
|
#
|
||||||
sub new_standard_chain($) {
|
sub new_standard_chain($) {
|
||||||
my $chainref = new_chain 'filter' ,$_[0];
|
my $chainref = new_chain 'filter' ,$_[0];
|
||||||
$chainref->{referenced} = 1;
|
$chainref->{referenced} = 1;
|
||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create a new action chain, returning a reference to its chain table entry
|
||||||
|
#
|
||||||
sub new_action_chain($$) {
|
sub new_action_chain($$) {
|
||||||
my $chainref = &new_chain( @_ );
|
my $chainref = &new_chain( @_ );
|
||||||
$chainref->{referenced} = 1;
|
$chainref->{referenced} = 1;
|
||||||
@ -3033,12 +3073,18 @@ sub new_action_chain($$) {
|
|||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create a chain in the nat table, returning a reference to its chain table entry
|
||||||
|
#
|
||||||
sub new_nat_chain($) {
|
sub new_nat_chain($) {
|
||||||
my $chainref = new_chain 'nat' ,$_[0];
|
my $chainref = new_chain 'nat' ,$_[0];
|
||||||
$chainref->{referenced} = 1;
|
$chainref->{referenced} = 1;
|
||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create a new manual chain, returning a reference to its chain table entry
|
||||||
|
#
|
||||||
sub new_manual_chain($) {
|
sub new_manual_chain($) {
|
||||||
my $chain = $_[0];
|
my $chain = $_[0];
|
||||||
fatal_error "Chain name ($chain) too long" if length $chain > 29;
|
fatal_error "Chain name ($chain) too long" if length $chain > 29;
|
||||||
@ -3049,6 +3095,9 @@ sub new_manual_chain($) {
|
|||||||
$chainref;
|
$chainref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ensure the existance of a manual chain and return a reference to its chain table entry
|
||||||
|
#
|
||||||
sub ensure_manual_chain($) {
|
sub ensure_manual_chain($) {
|
||||||
my $chain = $_[0];
|
my $chain = $_[0];
|
||||||
my $chainref = $filter_table->{$chain} || new_manual_chain($chain);
|
my $chainref = $filter_table->{$chain} || new_manual_chain($chain);
|
||||||
@ -3058,6 +3107,9 @@ sub ensure_manual_chain($) {
|
|||||||
|
|
||||||
sub log_irule_limit( $$$$$$$$@ );
|
sub log_irule_limit( $$$$$$$$@ );
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ensure the existance of the blacklist logging chain (blacklog)
|
||||||
|
#
|
||||||
sub ensure_blacklog_chain( $$$$$ ) {
|
sub ensure_blacklog_chain( $$$$$ ) {
|
||||||
my ( $target, $disposition, $level, $tag, $audit ) = @_;
|
my ( $target, $disposition, $level, $tag, $audit ) = @_;
|
||||||
|
|
||||||
@ -3076,6 +3128,9 @@ sub ensure_blacklog_chain( $$$$$ ) {
|
|||||||
'blacklog';
|
'blacklog';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ensure the existance of the audited blacklist logging chain (A_blacklog)
|
||||||
|
#
|
||||||
sub ensure_audit_blacklog_chain( $$$ ) {
|
sub ensure_audit_blacklog_chain( $$$ ) {
|
||||||
my ( $target, $disposition, $level ) = @_;
|
my ( $target, $disposition, $level ) = @_;
|
||||||
|
|
||||||
@ -3097,7 +3152,6 @@ sub ensure_audit_blacklog_chain( $$$ ) {
|
|||||||
#
|
#
|
||||||
# Create and populate the passed AUDIT chain if it doesn't exist. Return chain name
|
# Create and populate the passed AUDIT chain if it doesn't exist. Return chain name
|
||||||
#
|
#
|
||||||
|
|
||||||
sub ensure_audit_chain( $;$$$ ) {
|
sub ensure_audit_chain( $;$$$ ) {
|
||||||
my ( $target, $action, $tgt, $table ) = @_;
|
my ( $target, $action, $tgt, $table ) = @_;
|
||||||
|
|
||||||
@ -3134,7 +3188,6 @@ sub ensure_audit_chain( $;$$$ ) {
|
|||||||
#
|
#
|
||||||
# Return the appropriate target based on whether the second argument is 'audit'
|
# Return the appropriate target based on whether the second argument is 'audit'
|
||||||
#
|
#
|
||||||
|
|
||||||
sub require_audit($$;$) {
|
sub require_audit($$;$) {
|
||||||
my ($action, $audit, $tgt ) = @_;
|
my ($action, $audit, $tgt ) = @_;
|
||||||
|
|
||||||
@ -5050,7 +5103,9 @@ sub do_proto( $$$;$ )
|
|||||||
$output;
|
$output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generate a mac address match
|
||||||
|
#
|
||||||
sub do_mac( $ ) {
|
sub do_mac( $ ) {
|
||||||
my $mac = $_[0];
|
my $mac = $_[0];
|
||||||
|
|
||||||
@ -5063,6 +5118,9 @@ sub do_mac( $ ) {
|
|||||||
"-m mac ${invert}--mac-source $mac ";
|
"-m mac ${invert}--mac-source $mac ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Version of do_proto() that generates an irule match rather than an iptables text match
|
||||||
|
#
|
||||||
sub do_iproto( $$$ )
|
sub do_iproto( $$$ )
|
||||||
{
|
{
|
||||||
my ($proto, $ports, $sports ) = @_;
|
my ($proto, $ports, $sports ) = @_;
|
||||||
@ -5258,6 +5316,9 @@ sub do_iproto( $$$ )
|
|||||||
@output;
|
@output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generate a mac address match in irule format.
|
||||||
|
#
|
||||||
sub do_imac( $ ) {
|
sub do_imac( $ ) {
|
||||||
my $mac = $_[0];
|
my $mac = $_[0];
|
||||||
|
|
||||||
@ -5320,7 +5381,6 @@ sub verify_small_mark( $ ) {
|
|||||||
#
|
#
|
||||||
# Generate an appropriate -m [conn]mark match string for the contents of a MARK column
|
# Generate an appropriate -m [conn]mark match string for the contents of a MARK column
|
||||||
#
|
#
|
||||||
|
|
||||||
sub do_test ( $$ )
|
sub do_test ( $$ )
|
||||||
{
|
{
|
||||||
my ($testval, $mask) = @_;
|
my ($testval, $mask) = @_;
|
||||||
@ -5475,6 +5535,9 @@ sub do_connlimit( $ ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create a calendar match
|
||||||
|
#
|
||||||
sub do_time( $ ) {
|
sub do_time( $ ) {
|
||||||
my ( $time ) = @_;
|
my ( $time ) = @_;
|
||||||
|
|
||||||
@ -5513,6 +5576,11 @@ sub do_time( $ ) {
|
|||||||
$result;
|
$result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Resolve a user/group name to the appropriate numeric id. Only do the resolution
|
||||||
|
# if we are not compiling for export, since remote name->id mapping is likely to
|
||||||
|
# be different.
|
||||||
|
#
|
||||||
sub resolve_id( $$ ) {
|
sub resolve_id( $$ ) {
|
||||||
my ( $id, $type ) = @_;
|
my ( $id, $type ) = @_;
|
||||||
|
|
||||||
@ -5576,8 +5644,6 @@ sub do_user( $ ) {
|
|||||||
#
|
#
|
||||||
# Create a "-m tos" match for the passed TOS
|
# Create a "-m tos" match for the passed TOS
|
||||||
#
|
#
|
||||||
# This helper is also used during tos file processing
|
|
||||||
#
|
|
||||||
sub decode_tos( $$ ) {
|
sub decode_tos( $$ ) {
|
||||||
my ( $tos, $set ) = @_;
|
my ( $tos, $set ) = @_;
|
||||||
|
|
||||||
@ -6114,6 +6180,9 @@ sub get_interface_address( $;$ );
|
|||||||
|
|
||||||
sub get_interface_gateway ( $;$$ );
|
sub get_interface_gateway ( $;$$ );
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verify and record a runtime address variable
|
||||||
|
#
|
||||||
sub record_runtime_address( $$;$$ ) {
|
sub record_runtime_address( $$;$$ ) {
|
||||||
my ( $addrtype, $interface, $protect, $provider ) = @_;
|
my ( $addrtype, $interface, $protect, $provider ) = @_;
|
||||||
|
|
||||||
@ -6604,6 +6673,9 @@ sub match_ipsec_in( $$ ) {
|
|||||||
@match;
|
@match;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Match Dest IPSEC
|
||||||
|
#
|
||||||
sub match_ipsec_out( $$ ) {
|
sub match_ipsec_out( $$ ) {
|
||||||
my ( $zone , $hostref ) = @_;
|
my ( $zone , $hostref ) = @_;
|
||||||
my @match;
|
my @match;
|
||||||
@ -6628,7 +6700,7 @@ sub match_ipsec_out( $$ ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Handle a unidirectional IPSEC Options
|
# Handle unidirectional IPSEC Options
|
||||||
#
|
#
|
||||||
sub do_ipsec_options($$$)
|
sub do_ipsec_options($$$)
|
||||||
{
|
{
|
||||||
@ -6705,7 +6777,7 @@ sub do_ipsec($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Generate a log message
|
# Generate a logging rule
|
||||||
#
|
#
|
||||||
sub log_rule_limit( $$$$$$$$;$ ) {
|
sub log_rule_limit( $$$$$$$$;$ ) {
|
||||||
my ($level, $chainref, $chn, $dispo, $limit, $tag, $command, $matches, $origin ) = @_;
|
my ($level, $chainref, $chn, $dispo, $limit, $tag, $command, $matches, $origin ) = @_;
|
||||||
@ -6901,6 +6973,9 @@ sub log_irule_limit( $$$$$$$$@ ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Wrappers for the above that use the global default log limit
|
||||||
|
#
|
||||||
sub log_rule( $$$$ ) {
|
sub log_rule( $$$$ ) {
|
||||||
my ( $level, $chainref, $disposition, $matches ) = @_;
|
my ( $level, $chainref, $disposition, $matches ) = @_;
|
||||||
|
|
||||||
@ -8488,7 +8563,7 @@ sub add_interface_options( $ ) {
|
|||||||
# We may have to generate part of the input at run-time. The rules array in each chain
|
# We may have to generate part of the input at run-time. The rules array in each chain
|
||||||
# table entry may contain both rules or shell source, determined by the contents of the 'mode'
|
# table entry may contain both rules or shell source, determined by the contents of the 'mode'
|
||||||
# member. We alternate between writing the rules into the temporary file to be passed to
|
# member. We alternate between writing the rules into the temporary file to be passed to
|
||||||
# iptables-restore (CAT_MODE) and and writing shell source into the generated script (CMD_MODE).
|
# iptables-restore (CAT_MODE) and writing shell source into the generated script (CMD_MODE).
|
||||||
#
|
#
|
||||||
# The following two functions are responsible for the mode transitions.
|
# The following two functions are responsible for the mode transitions.
|
||||||
#
|
#
|
||||||
@ -9068,7 +9143,7 @@ sub create_nfobjects() {
|
|||||||
}
|
}
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Generate the netfilter input
|
# Generate the input to ip[6]tables-restore or to 'ip[6]tables -R'
|
||||||
#
|
#
|
||||||
sub create_netfilter_load( $ ) {
|
sub create_netfilter_load( $ ) {
|
||||||
my $test = shift;
|
my $test = shift;
|
||||||
|
Loading…
Reference in New Issue
Block a user