forked from extern/shorewall_code
Compare commits
35 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e7315b8e0e | ||
|
c58611f7fb | ||
|
24b396bc67 | ||
|
6eb8416c2b | ||
|
0925636995 | ||
|
cd4e9654d8 | ||
|
cd01df4200 | ||
|
7798c52a19 | ||
|
2809d6896c | ||
|
1d066bdfa4 | ||
|
9b7088158b | ||
|
625d763372 | ||
|
82169a0bfd | ||
|
0d16b2820a | ||
|
d4df67966d | ||
|
f16bb887f3 | ||
|
64fb662bb1 | ||
|
ce20e5592b | ||
|
590243a787 | ||
|
9dd0346987 | ||
|
ccfa181a6d | ||
|
d959fd4445 | ||
|
b7de785396 | ||
|
24d40f4cc2 | ||
|
244f2cefe5 | ||
|
ec23ca67f8 | ||
|
a2345325dd | ||
|
1308560aba | ||
|
41923cb80e | ||
|
2a40012fc4 | ||
|
05a15c6f8b | ||
|
a92d10f19c | ||
|
47edfaf093 | ||
|
200ad3f874 | ||
|
800c06e8c9 |
@@ -731,12 +731,29 @@ list_zone() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
option_error() {
|
||||||
|
fatal_error "The $COMMAND command does not accept this option: -$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
too_many_arguments() {
|
||||||
|
fatal_error "Too many arguments: $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
missing_argument() {
|
||||||
|
fatal_error "Missing argument"
|
||||||
|
}
|
||||||
|
|
||||||
|
missing_option_value() {
|
||||||
|
fatal_error "The $1 option requires a value"
|
||||||
|
}
|
||||||
|
|
||||||
version_command() {
|
version_command() {
|
||||||
local finished
|
local finished
|
||||||
finished=0
|
finished=0
|
||||||
local all
|
local all
|
||||||
all=
|
all=
|
||||||
local product
|
local product
|
||||||
|
local compiletime
|
||||||
|
|
||||||
while [ $finished -eq 0 -a $# -gt 0 ]; do
|
while [ $finished -eq 0 -a $# -gt 0 ]; do
|
||||||
option=$1
|
option=$1
|
||||||
@@ -755,7 +772,7 @@ version_command() {
|
|||||||
option=${option#a}
|
option=${option#a}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -767,7 +784,7 @@ version_command() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
[ $# -gt 0 ] && usage 1
|
[ $# -gt 0 ] && too_many_arguments
|
||||||
|
|
||||||
if [ -n "$all" ]; then
|
if [ -n "$all" ]; then
|
||||||
echo "shorewall-core: $(cat ${SHAREDIR}/shorewall/coreversion)"
|
echo "shorewall-core: $(cat ${SHAREDIR}/shorewall/coreversion)"
|
||||||
@@ -779,8 +796,16 @@ version_command() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ "$(id -u)" -eq 0 -a -f $g_firewall ]; then
|
if [ "$(id -u)" -eq 0 -a -f $g_firewall ]; then
|
||||||
echo $g_echo_n "$g_firewall was compiled by Shorewall version "
|
compiletime=$(run_it $g_firewall info 2>/dev/null)
|
||||||
$g_firewall version
|
|
||||||
|
case $compiletime in
|
||||||
|
compiled\ *)
|
||||||
|
echo "$g_firewall was $compiletime"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$g_firewall was compiled by Shorewall version $(run_it $g_firewall version))"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo $SHOREWALL_VERSION
|
echo $SHOREWALL_VERSION
|
||||||
@@ -1065,7 +1090,7 @@ show_connections() {
|
|||||||
shift
|
shift
|
||||||
conntrack -f ipv4 -L $@ | show_connections_filter
|
conntrack -f ipv4 -L $@ | show_connections_filter
|
||||||
else
|
else
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments
|
||||||
if [ -f /proc/net/ip_conntrack ]; then
|
if [ -f /proc/net/ip_conntrack ]; then
|
||||||
cat /proc/net/ip_conntrack | show_connections_filter
|
cat /proc/net/ip_conntrack | show_connections_filter
|
||||||
else
|
else
|
||||||
@@ -1078,7 +1103,7 @@ show_connections() {
|
|||||||
echo
|
echo
|
||||||
conntrack -f ipv6 -L $@ | show_connections_filter
|
conntrack -f ipv6 -L $@ | show_connections_filter
|
||||||
else
|
else
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments
|
||||||
if [ -f /proc/sys/net/netfilter/nf_conntrack_count -a -f /proc/sys/net/nf_conntrack ]; then
|
if [ -f /proc/sys/net/netfilter/nf_conntrack_count -a -f /proc/sys/net/nf_conntrack ]; then
|
||||||
local count=$(cat /proc/sys/net/netfilter/nf_conntrack_count)
|
local count=$(cat /proc/sys/net/netfilter/nf_conntrack_count)
|
||||||
local max=$(cat /proc/sys/net/netfilter/nf_conntrack_max)
|
local max=$(cat /proc/sys/net/netfilter/nf_conntrack_max)
|
||||||
@@ -1199,7 +1224,7 @@ show_command() {
|
|||||||
option=${option#f}
|
option=${option#f}
|
||||||
;;
|
;;
|
||||||
t)
|
t)
|
||||||
[ $# -eq 1 ] && usage 1
|
[ $# -eq 1 ] && missing_option_value -t
|
||||||
|
|
||||||
case $2 in
|
case $2 in
|
||||||
mangle|nat|filter|raw|rawpost)
|
mangle|nat|filter|raw|rawpost)
|
||||||
@@ -1227,7 +1252,7 @@ show_command() {
|
|||||||
option=${option#b}
|
option=${option#b}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -1249,37 +1274,37 @@ show_command() {
|
|||||||
eval show_connections $@ $g_pager
|
eval show_connections $@ $g_pager
|
||||||
;;
|
;;
|
||||||
nat)
|
nat)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_nat $g_pager
|
eval show_nat $g_pager
|
||||||
;;
|
;;
|
||||||
raw)
|
raw)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_raw $g_pager
|
eval show_raw $g_pager
|
||||||
;;
|
;;
|
||||||
rawpost)
|
rawpost)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_rawpost $g_pager
|
eval show_rawpost $g_pager
|
||||||
;;
|
;;
|
||||||
tos|mangle)
|
tos|mangle)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_mangle $g_pager
|
eval show_mangle $g_pager
|
||||||
;;
|
;;
|
||||||
log)
|
log)
|
||||||
[ $# -gt 2 ] && usage 1
|
[ $# -gt 2 ] && too_many_arguments $2
|
||||||
|
|
||||||
setup_logread
|
setup_logread
|
||||||
eval show_log $g_pager
|
eval show_log $g_pager
|
||||||
;;
|
;;
|
||||||
tc)
|
tc)
|
||||||
[ $# -gt 2 ] && usage 1
|
[ $# -gt 2 ] && too_many_arguments $2
|
||||||
eval show_tc $@ $g_pager
|
eval show_tc $@ $g_pager
|
||||||
;;
|
;;
|
||||||
classifiers|filters)
|
classifiers|filters)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_classifiers_command $g_pager
|
eval show_classifiers_command $g_pager
|
||||||
;;
|
;;
|
||||||
zones)
|
zones)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
if [ -f ${VARDIR}/zones ]; then
|
if [ -f ${VARDIR}/zones ]; then
|
||||||
echo "$g_product $SHOREWALL_VERSION Zones at $g_hostname - $(date)"
|
echo "$g_product $SHOREWALL_VERSION Zones at $g_hostname - $(date)"
|
||||||
echo
|
echo
|
||||||
@@ -1302,7 +1327,7 @@ show_command() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
capabilities)
|
capabilities)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
determine_capabilities
|
determine_capabilities
|
||||||
VERBOSITY=2
|
VERBOSITY=2
|
||||||
if [ -n "$g_filemode" ]; then
|
if [ -n "$g_filemode" ]; then
|
||||||
@@ -1312,11 +1337,11 @@ show_command() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
ip)
|
ip)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_ip_addresses $g_pager
|
eval show_ip_addresses $g_pager
|
||||||
;;
|
;;
|
||||||
routing)
|
routing)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_routing_command $g_pager
|
eval show_routing_command $g_pager
|
||||||
;;
|
;;
|
||||||
config)
|
config)
|
||||||
@@ -1345,26 +1370,26 @@ show_command() {
|
|||||||
echo $VARDIR;
|
echo $VARDIR;
|
||||||
;;
|
;;
|
||||||
policies)
|
policies)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_policies $g_pager
|
eval show_policies $g_pager
|
||||||
;;
|
;;
|
||||||
ipa)
|
ipa)
|
||||||
[ $g_family -eq 4 ] || usage 1
|
[ $g_family -eq 4 ] || fatal_error "'show ipa' is now available in $g_product"
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_ipa $g_pager
|
eval show_ipa $g_pager
|
||||||
;;
|
;;
|
||||||
marks)
|
marks)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
echo "$g_product $SHOREWALL_VERSION Mark Layout at $g_hostname - $(date)"
|
echo "$g_product $SHOREWALL_VERSION Mark Layout at $g_hostname - $(date)"
|
||||||
echo
|
echo
|
||||||
[ -f ${VARDIR}/marks ] && cat ${VARDIR}/marks;
|
[ -f ${VARDIR}/marks ] && cat ${VARDIR}/marks;
|
||||||
;;
|
;;
|
||||||
nfacct)
|
nfacct)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_nfacct_command $g_pager
|
eval show_nfacct_command $g_pager
|
||||||
;;
|
;;
|
||||||
arptables)
|
arptables)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
resolve_arptables
|
resolve_arptables
|
||||||
if [ -n "$arptables" -a -x $arptables ]; then
|
if [ -n "$arptables" -a -x $arptables ]; then
|
||||||
eval show_arptables $g_pager
|
eval show_arptables $g_pager
|
||||||
@@ -1373,22 +1398,22 @@ show_command() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
event)
|
event)
|
||||||
[ $# -gt 1 ] || usage 1
|
[ $# -gt 1 ] || too_many_arguments $2
|
||||||
echo "$g_product $SHOREWALL_VERSION events at $g_hostname - $(date)"
|
echo "$g_product $SHOREWALL_VERSION events at $g_hostname - $(date)"
|
||||||
echo
|
echo
|
||||||
shift
|
shift
|
||||||
show_events $@
|
show_events $@
|
||||||
;;
|
;;
|
||||||
events)
|
events)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_events_command $g_pager
|
eval show_events_command $g_pager
|
||||||
;;
|
;;
|
||||||
bl|blacklists)
|
bl|blacklists)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_blacklists $g_pager
|
eval show_blacklists $g_pager
|
||||||
;;
|
;;
|
||||||
opens)
|
opens)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
echo "$g_product $SHOREWALL_VERSION Temporarily opened connections at $g_hostname - $(date)"
|
echo "$g_product $SHOREWALL_VERSION Temporarily opened connections at $g_hostname - $(date)"
|
||||||
|
|
||||||
if chain_exists dynamic; then
|
if chain_exists dynamic; then
|
||||||
@@ -1404,12 +1429,12 @@ show_command() {
|
|||||||
*)
|
*)
|
||||||
case $1 in
|
case $1 in
|
||||||
actions)
|
actions)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_actions_sorted $g_pager
|
eval show_actions_sorted $g_pager
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
macro)
|
macro)
|
||||||
[ $# -ne 2 ] && usage 1
|
[ $# -ne 2 ] && too_many_arguments $2
|
||||||
for directory in $(split $CONFIG_PATH); do
|
for directory in $(split $CONFIG_PATH); do
|
||||||
if [ -f ${directory}/macro.$2 ]; then
|
if [ -f ${directory}/macro.$2 ]; then
|
||||||
echo "Shorewall $SHOREWALL_VERSION Macro $2 at $g_hostname - $(date)"
|
echo "Shorewall $SHOREWALL_VERSION Macro $2 at $g_hostname - $(date)"
|
||||||
@@ -1421,7 +1446,7 @@ show_command() {
|
|||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
macros)
|
macros)
|
||||||
[ $# -gt 1 ] && usage 1
|
[ $# -gt 1 ] && too_many_arguments $2
|
||||||
eval show_macros $g_pager
|
eval show_macros $g_pager
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@@ -1432,7 +1457,7 @@ show_command() {
|
|||||||
if [ $# -gt 0 ]; then
|
if [ $# -gt 0 ]; then
|
||||||
if [ $1 = dynamic -a $# -gt 1 ]; then
|
if [ $1 = dynamic -a $# -gt 1 ]; then
|
||||||
shift
|
shift
|
||||||
[ $# -eq 1 ] || usage 1
|
[ $# -eq 1 ] || too_many_arguments $2
|
||||||
list_zone $1
|
list_zone $1
|
||||||
return;
|
return;
|
||||||
fi
|
fi
|
||||||
@@ -1507,6 +1532,49 @@ dump_filter_wrapper() {
|
|||||||
eval dump_filter $g_pager
|
eval dump_filter $g_pager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
show_status() {
|
||||||
|
local compiletime
|
||||||
|
local state
|
||||||
|
|
||||||
|
if product_is_started ; then
|
||||||
|
[ $VERBOSITY -ge 1 ] && echo "$g_product is running"
|
||||||
|
status=0
|
||||||
|
else
|
||||||
|
[ $VERBOSITY -ge 1 ] && echo "$g_product is stopped"
|
||||||
|
status=4
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f ${VARDIR}/state ]; then
|
||||||
|
state="$(cat ${VARDIR}/state)"
|
||||||
|
case $state in
|
||||||
|
Stopped*|Closed*|Clear*)
|
||||||
|
status=3
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
state=Unknown
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $VERBOSITY -ge 1 ]; then
|
||||||
|
if [ -f $g_firewall ]; then
|
||||||
|
compiletime=$(run_it $g_firewall info 2>/dev/null)
|
||||||
|
|
||||||
|
case $compiletime in
|
||||||
|
compiled\ *)
|
||||||
|
state="$state ($g_firewall $compiletime)"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
state="$state ($g_firewall compiled by Shorewall version $(run_it $g_firewall version))"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "State:$state"
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Dump Command Executor
|
# Dump Command Executor
|
||||||
#
|
#
|
||||||
@@ -1546,7 +1614,7 @@ do_dump_command() {
|
|||||||
option=${option#c}
|
option=${option#c}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -1565,7 +1633,7 @@ do_dump_command() {
|
|||||||
[ $VERBOSITY -lt 2 ] && VERBOSITY=2
|
[ $VERBOSITY -lt 2 ] && VERBOSITY=2
|
||||||
|
|
||||||
[ -n "$g_debugging" ] && set -x
|
[ -n "$g_debugging" ] && set -x
|
||||||
[ $# -eq 0 ] || usage 1
|
[ $# -eq 0 ] || too_many_arguments $1
|
||||||
clear_term
|
clear_term
|
||||||
echo "$g_product $SHOREWALL_VERSION Dump at $g_hostname - $(date)"
|
echo "$g_product $SHOREWALL_VERSION Dump at $g_hostname - $(date)"
|
||||||
echo
|
echo
|
||||||
@@ -1760,7 +1828,7 @@ restore_command() {
|
|||||||
option=${option#C}
|
option=${option#C}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -1780,7 +1848,7 @@ restore_command() {
|
|||||||
validate_restorefile '<restore file>'
|
validate_restorefile '<restore file>'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -2386,7 +2454,7 @@ hits_command() {
|
|||||||
option=${option#t}
|
option=${option#t}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -2398,7 +2466,7 @@ hits_command() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
[ $# -eq 0 ] || usage 1
|
[ $# -eq 0 ] || too_many_arguments $1
|
||||||
|
|
||||||
clear_term
|
clear_term
|
||||||
echo "$g_product $SHOREWALL_VERSION Hits at $g_hostname - $(date)"
|
echo "$g_product $SHOREWALL_VERSION Hits at $g_hostname - $(date)"
|
||||||
@@ -2455,7 +2523,7 @@ hits_command() {
|
|||||||
#
|
#
|
||||||
allow_command() {
|
allow_command() {
|
||||||
[ -n "$g_debugging" ] && set -x
|
[ -n "$g_debugging" ] && set -x
|
||||||
[ $# -eq 1 ] && usage 1
|
[ $# -eq 1 ] && missing_argument
|
||||||
if product_is_started ; then
|
if product_is_started ; then
|
||||||
local which
|
local which
|
||||||
which='-s'
|
which='-s'
|
||||||
@@ -2525,8 +2593,6 @@ logwatch_command() {
|
|||||||
-*)
|
-*)
|
||||||
option=${option#-}
|
option=${option#-}
|
||||||
|
|
||||||
[ -z "$option" ] && usage 1
|
|
||||||
|
|
||||||
while [ -n "$option" ]; do
|
while [ -n "$option" ]; do
|
||||||
case $option in
|
case $option in
|
||||||
v*)
|
v*)
|
||||||
@@ -2546,7 +2612,7 @@ logwatch_command() {
|
|||||||
option=
|
option=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -2565,7 +2631,7 @@ logwatch_command() {
|
|||||||
elif [ $# -eq 0 ]; then
|
elif [ $# -eq 0 ]; then
|
||||||
logwatch 30
|
logwatch 30
|
||||||
else
|
else
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3309,36 +3375,6 @@ report_capabilities1() {
|
|||||||
report_capabilities_unsorted1 | sort
|
report_capabilities_unsorted1 | sort
|
||||||
}
|
}
|
||||||
|
|
||||||
show_status() {
|
|
||||||
if product_is_started ; then
|
|
||||||
[ $VERBOSITY -ge 1 ] && echo "$g_product is running"
|
|
||||||
status=0
|
|
||||||
else
|
|
||||||
[ $VERBOSITY -ge 1 ] && echo "$g_product is stopped"
|
|
||||||
status=4
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f ${VARDIR}/state ]; then
|
|
||||||
state="$(cat ${VARDIR}/state)"
|
|
||||||
case $state in
|
|
||||||
Stopped*|Closed*|Clear*)
|
|
||||||
status=3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
state=Unknown
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $VERBOSITY -ge 1 ]; then
|
|
||||||
if [ -f $g_firewall ]; then
|
|
||||||
state="$state ($g_firewall compiled by Shorewall version $($g_firewall version))"
|
|
||||||
fi
|
|
||||||
echo "State:$state"
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
interface_status() {
|
interface_status() {
|
||||||
case $(cat $1) in
|
case $(cat $1) in
|
||||||
0)
|
0)
|
||||||
@@ -3392,7 +3428,7 @@ status_command() {
|
|||||||
option=${option#i}
|
option=${option#i}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -3404,7 +3440,7 @@ status_command() {
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
[ $# -eq 0 ] || usage 1
|
[ $# -eq 0 ] || missing_argument
|
||||||
|
|
||||||
[ $VERBOSITY -ge 1 ] && echo "${g_product}-$SHOREWALL_VERSION Status at $g_hostname - $(date)" && echo
|
[ $VERBOSITY -ge 1 ] && echo "${g_product}-$SHOREWALL_VERSION Status at $g_hostname - $(date)" && echo
|
||||||
show_status
|
show_status
|
||||||
@@ -3498,7 +3534,7 @@ save_command() {
|
|||||||
option=${option#C}
|
option=${option#C}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -3518,7 +3554,7 @@ save_command() {
|
|||||||
validate_restorefile '<restore file>'
|
validate_restorefile '<restore file>'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -3537,6 +3573,9 @@ save_command() {
|
|||||||
|
|
||||||
forget_command() {
|
forget_command() {
|
||||||
case $# in
|
case $# in
|
||||||
|
0)
|
||||||
|
missing_argument
|
||||||
|
;;
|
||||||
1)
|
1)
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
@@ -3544,7 +3583,7 @@ forget_command() {
|
|||||||
validate_restorefile '<restore file>'
|
validate_restorefile '<restore file>'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $3
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -3566,7 +3605,7 @@ ipcalc_command() {
|
|||||||
local address
|
local address
|
||||||
local vlsm
|
local vlsm
|
||||||
|
|
||||||
[ $g_family -eq 6 ] && usage 1
|
[ $g_family -eq 6 ] && fatal_error "$g_product does not support the ipcalc command"
|
||||||
|
|
||||||
if [ $# -eq 2 ]; then
|
if [ $# -eq 2 ]; then
|
||||||
address=${2%/*}
|
address=${2%/*}
|
||||||
@@ -3574,13 +3613,15 @@ ipcalc_command() {
|
|||||||
elif [ $# -eq 3 ]; then
|
elif [ $# -eq 3 ]; then
|
||||||
address=$2
|
address=$2
|
||||||
vlsm=$(ip_vlsm $3)
|
vlsm=$(ip_vlsm $3)
|
||||||
|
elif [ $# -eq 0 ]; then
|
||||||
|
missing_argument
|
||||||
else
|
else
|
||||||
usage 1
|
too_many_arguments $4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
valid_address $address || fatal_error "Invalid IP address: $address"
|
valid_address $address || fatal_error "Invalid IP address: $address"
|
||||||
[ -z "$vlsm" ] && usage 2
|
[ -z "$vlsm" ] && fatal_error "Missing VLSM"
|
||||||
[ "x$address" = "x$vlsm" ] && usage 2
|
[ "x$address" = "x$vlsm" ] && "Invalid VLSM"
|
||||||
[ $vlsm -gt 32 ] && fatal_error "Invalid VLSM: /$vlsm"
|
[ $vlsm -gt 32 ] && fatal_error "Invalid VLSM: /$vlsm"
|
||||||
|
|
||||||
address=$address/$vlsm
|
address=$address/$vlsm
|
||||||
@@ -3594,7 +3635,7 @@ ipcalc_command() {
|
|||||||
iprange_command() {
|
iprange_command() {
|
||||||
local range
|
local range
|
||||||
|
|
||||||
[ $g_family -eq 6 ] && usage 1
|
[ $g_family -eq 6 ] && fatal_error "$g_product does not support the iprange command"
|
||||||
|
|
||||||
range=''
|
range=''
|
||||||
|
|
||||||
@@ -3612,15 +3653,19 @@ iprange_command() {
|
|||||||
ip_range $range
|
ip_range $range
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
fatal_error "Invalid ip range: $range"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
ipdecimal_command() {
|
ipdecimal_command() {
|
||||||
[ $# -eq 2 ] || usage 1
|
if [ $# eq 1 ]; then
|
||||||
|
missing_argument
|
||||||
|
else
|
||||||
|
[ $# -eq 2 ] || too_many_arguments $3
|
||||||
|
fi
|
||||||
|
|
||||||
[ $g_family -eq 6 ] && usage 1
|
[ $g_family -eq 6 ] && fatal_error "$g_product does not support the iprange command"
|
||||||
|
|
||||||
case $2 in
|
case $2 in
|
||||||
*.*.*.*)
|
*.*.*.*)
|
||||||
@@ -3928,7 +3973,7 @@ start_command() {
|
|||||||
option=${option%p}
|
option=${option%p}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -3944,7 +3989,7 @@ start_command() {
|
|||||||
0)
|
0)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -3988,7 +4033,7 @@ restart_command() {
|
|||||||
option=${option#C}
|
option=${option#C}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -4004,7 +4049,7 @@ restart_command() {
|
|||||||
0)
|
0)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -4220,7 +4265,8 @@ shorewall_cli() {
|
|||||||
while [ -n "$option" ]; do
|
while [ -n "$option" ]; do
|
||||||
case $option in
|
case $option in
|
||||||
c)
|
c)
|
||||||
[ $# -eq 1 -o -n "$g_lite" ] && usage 1
|
[ $# -eq 1 ] && missing_option_value -c
|
||||||
|
[ -n "$g_lite" ] && fatal_error "$g_product does not support the -c option"
|
||||||
|
|
||||||
if [ ! -d $2 ]; then
|
if [ ! -d $2 ]; then
|
||||||
if [ -e $2 ]; then
|
if [ -e $2 ]; then
|
||||||
@@ -4235,7 +4281,7 @@ shorewall_cli() {
|
|||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
e*)
|
e*)
|
||||||
[ -n "$g_lite" ] && usage 1
|
[ -n "$g_lite" ] && fatal_error "$g_product does not support the -e option"
|
||||||
g_export=Yes
|
g_export=Yes
|
||||||
option=${option#e}
|
option=${option#e}
|
||||||
;;
|
;;
|
||||||
@@ -4297,7 +4343,7 @@ shorewall_cli() {
|
|||||||
option=
|
option=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -4362,7 +4408,7 @@ shorewall_cli() {
|
|||||||
start_command $@
|
start_command $@
|
||||||
;;
|
;;
|
||||||
stop|clear)
|
stop|clear)
|
||||||
[ $# -ne 1 ] && usage 1
|
[ $# -ne 1 ] && too_many_arguments $2
|
||||||
get_config
|
get_config
|
||||||
[ -x $g_firewall ] || fatal_error "$g_product has never been started"
|
[ -x $g_firewall ] || fatal_error "$g_product has never been started"
|
||||||
[ -n "$g_nolock" ] || mutex_on
|
[ -n "$g_nolock" ] || mutex_on
|
||||||
@@ -4419,7 +4465,7 @@ shorewall_cli() {
|
|||||||
dump_command $@
|
dump_command $@
|
||||||
;;
|
;;
|
||||||
hits)
|
hits)
|
||||||
[ $g_family -eq 6 ] && usage 1
|
[ $g_family -eq 6 ] && fatal_error "$g_product does not support the hits command"
|
||||||
get_config Yes No Yes
|
get_config Yes No Yes
|
||||||
[ -n "$g_debugging" ] && set -x
|
[ -n "$g_debugging" ] && set -x
|
||||||
shift
|
shift
|
||||||
@@ -4437,19 +4483,19 @@ shorewall_cli() {
|
|||||||
drop)
|
drop)
|
||||||
get_config
|
get_config
|
||||||
[ -n "$g_debugging" ] && set -x
|
[ -n "$g_debugging" ] && set -x
|
||||||
[ $# -eq 1 ] && usage 1
|
[ $# -eq 1 ] && missing_argument
|
||||||
drop_command $@
|
drop_command $@
|
||||||
;;
|
;;
|
||||||
logdrop)
|
logdrop)
|
||||||
get_config
|
get_config
|
||||||
[ -n "$g_debugging" ] && set -x
|
[ -n "$g_debugging" ] && set -x
|
||||||
[ $# -eq 1 ] && usage 1
|
[ $# -eq 1 ] && missing_argument
|
||||||
logdrop_command $@
|
logdrop_command $@
|
||||||
;;
|
;;
|
||||||
reject|logreject)
|
reject|logreject)
|
||||||
get_config
|
get_config
|
||||||
[ -n "$g_debugging" ] && set -x
|
[ -n "$g_debugging" ] && set -x
|
||||||
[ $# -eq 1 ] && usage 1
|
[ $# -eq 1 ] && missing_argument
|
||||||
reject_command $@
|
reject_command $@
|
||||||
;;
|
;;
|
||||||
open|close)
|
open|close)
|
||||||
@@ -4514,6 +4560,11 @@ shorewall_cli() {
|
|||||||
# It's a shell function -- call it
|
# It's a shell function -- call it
|
||||||
#
|
#
|
||||||
$@
|
$@
|
||||||
|
elif type $1 2> /dev/null | fgrep -q 'is a shell function'; then
|
||||||
|
#
|
||||||
|
# It's a shell function -- call it
|
||||||
|
#
|
||||||
|
$@
|
||||||
else
|
else
|
||||||
#
|
#
|
||||||
# It isn't a function visible to this script -- try
|
# It isn't a function visible to this script -- try
|
||||||
@@ -4522,7 +4573,7 @@ shorewall_cli() {
|
|||||||
run_it $g_firewall $g_debugging call $@
|
run_it $g_firewall $g_debugging call $@
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
usage 1
|
missing_argument
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
help)
|
help)
|
||||||
@@ -4540,7 +4591,7 @@ shorewall_cli() {
|
|||||||
noiptrace_command $@
|
noiptrace_command $@
|
||||||
;;
|
;;
|
||||||
savesets)
|
savesets)
|
||||||
[ $# -eq 1 ] || usage 1
|
[ $# -eq 1 ] || too_many_arguments $2
|
||||||
get_config
|
get_config
|
||||||
[ -n "$g_debugging" ] && set -x
|
[ -n "$g_debugging" ] && set -x
|
||||||
savesets1
|
savesets1
|
||||||
@@ -4549,7 +4600,7 @@ shorewall_cli() {
|
|||||||
if [ -z "$g_lite" ]; then
|
if [ -z "$g_lite" ]; then
|
||||||
compiler_command $@
|
compiler_command $@
|
||||||
else
|
else
|
||||||
usage 1
|
fatal_error "Invalid command: $COMMAND"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@@ -712,9 +712,9 @@ find_file()
|
|||||||
set_state () # $1 = state
|
set_state () # $1 = state
|
||||||
{
|
{
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
echo "$1 ($(date)) from $2" > ${VARDIR}/state
|
echo "$1 $(date) from $2" > ${VARDIR}/state
|
||||||
else
|
else
|
||||||
echo "$1 ($(date))" > ${VARDIR}/state
|
echo "$1 $(date)" > ${VARDIR}/state
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -776,7 +776,7 @@ mutex_on()
|
|||||||
error_message "WARNING: Stale lockfile ${lockf} removed"
|
error_message "WARNING: Stale lockfile ${lockf} removed"
|
||||||
elif [ $lockpid -eq $$ ]; then
|
elif [ $lockpid -eq $$ ]; then
|
||||||
return 0
|
return 0
|
||||||
elif ! qt ps p ${lockpid}; then
|
elif ! ps | grep -v grep | qt grep ${lockpid}; then
|
||||||
rm -f ${lockf}
|
rm -f ${lockf}
|
||||||
error_message "WARNING: Stale lockfile ${lockf} from pid ${lockpid} removed"
|
error_message "WARNING: Stale lockfile ${lockf} from pid ${lockpid} removed"
|
||||||
fi
|
fi
|
||||||
@@ -788,10 +788,8 @@ mutex_on()
|
|||||||
echo $$ > ${lockf}
|
echo $$ > ${lockf}
|
||||||
chmod u-w ${lockf}
|
chmod u-w ${lockf}
|
||||||
elif qt mywhich lock; then
|
elif qt mywhich lock; then
|
||||||
lock -${MUTEX_TIMEOUT} -r1 ${lockf}
|
lock ${lockf}
|
||||||
chmod u+w ${lockf}
|
chmod u=r ${lockf}
|
||||||
echo $$ > ${lockf}
|
|
||||||
chmod u-w ${lockf}
|
|
||||||
else
|
else
|
||||||
while [ -f ${lockf} -a ${try} -lt ${MUTEX_TIMEOUT} ] ; do
|
while [ -f ${lockf} -a ${try} -lt ${MUTEX_TIMEOUT} ] ; do
|
||||||
sleep 1
|
sleep 1
|
||||||
@@ -813,6 +811,7 @@ mutex_on()
|
|||||||
#
|
#
|
||||||
mutex_off()
|
mutex_off()
|
||||||
{
|
{
|
||||||
|
[ -f ${CONFDIR}/rc.common ] && lock -u ${LOCKFILE:=${VARDIR}/lock}
|
||||||
rm -f ${LOCKFILE:=${VARDIR}/lock}
|
rm -f ${LOCKFILE:=${VARDIR}/lock}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -117,6 +117,7 @@ fi
|
|||||||
echo "Uninstalling Shorewall Core $VERSION"
|
echo "Uninstalling Shorewall Core $VERSION"
|
||||||
|
|
||||||
rm -rf ${SHAREDIR}/shorewall
|
rm -rf ${SHAREDIR}/shorewall
|
||||||
|
rm -f ~/.shorewallrc
|
||||||
|
|
||||||
echo "Shorewall Core Uninstalled"
|
echo "Shorewall Core Uninstalled"
|
||||||
|
|
||||||
|
@@ -412,7 +412,7 @@ if [ $HOST = debian ]; then
|
|||||||
|
|
||||||
if [ ! -f ${DESTDIR}${CONFDIR}/default/shorewall-init ]; then
|
if [ ! -f ${DESTDIR}${CONFDIR}/default/shorewall-init ]; then
|
||||||
if [ -n "${DESTDIR}" ]; then
|
if [ -n "${DESTDIR}" ]; then
|
||||||
mkdir ${DESTDIR}${ETC}/default
|
mkdir -p ${DESTDIR}${ETC}/default
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ $configure -eq 1 ] || mkdir -p ${DESTDIR}${CONFDIR}/default
|
[ $configure -eq 1 ] || mkdir -p ${DESTDIR}${CONFDIR}/default
|
||||||
@@ -572,9 +572,9 @@ if [ -z "$DESTDIR" ]; then
|
|||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
elif [ $HOST = openwrt -a -f ${CONFDIR}/rc.common ]; then
|
elif [ $HOST = openwrt -a -f ${CONFDIR}/rc.common ]; then
|
||||||
/etc/init.d/shorewall-inir enable
|
/etc/init.d/$PRODUCT enable
|
||||||
if /etc/init.d/shorewall-init enabled; then
|
if /etc/init.d/shorewall-init enabled; then
|
||||||
echo "Shorrewall Init will start automatically at boot"
|
echo "$Product will start automatically at boot"
|
||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
@@ -585,7 +585,7 @@ if [ -z "$DESTDIR" ]; then
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ $configure -eq 1 -a -n "$first_install" ]; then
|
if [ $configure -eq 1 -a -n "$first_install" ]; then
|
||||||
if [ $HOST = debian ]; then
|
if [ $HOST = debian -a -z "$SERVICEDIR" ]; then
|
||||||
if [ -n "${DESTDIR}" ]; then
|
if [ -n "${DESTDIR}" ]; then
|
||||||
mkdir -p ${DESTDIR}/etc/rcS.d
|
mkdir -p ${DESTDIR}/etc/rcS.d
|
||||||
fi
|
fi
|
||||||
|
@@ -495,7 +495,7 @@ done
|
|||||||
# Install the Man Pages
|
# Install the Man Pages
|
||||||
#
|
#
|
||||||
|
|
||||||
if [ -d manpages ]; then
|
if [ -d manpages -a -n "$MANDIR" ]; then
|
||||||
cd manpages
|
cd manpages
|
||||||
|
|
||||||
mkdir -p ${DESTDIR}${MANDIR}/man5/ ${DESTDIR}${MANDIR}/man8/
|
mkdir -p ${DESTDIR}${MANDIR}/man5/ ${DESTDIR}${MANDIR}/man8/
|
||||||
@@ -550,7 +550,7 @@ if [ -n "$SYSCONFFILE" -a -f "$SYSCONFFILE" -a ! -f ${DESTDIR}${SYSCONFDIR}/${PR
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT} 0640
|
install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT} 0640
|
||||||
echo "$SYSCONFFILE installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
echo "$SYSCONFFILE file installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${SHAREDIR} != /usr/share ]; then
|
if [ ${SHAREDIR} != /usr/share ]; then
|
||||||
|
@@ -244,7 +244,7 @@ sub create_arptables_load( $ ) {
|
|||||||
|
|
||||||
emit "exec 3>\${VARDIR}/.arptables-input";
|
emit "exec 3>\${VARDIR}/.arptables-input";
|
||||||
|
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
unless ( $test ) {
|
unless ( $test ) {
|
||||||
emit_unindented '#';
|
emit_unindented '#';
|
||||||
@@ -294,7 +294,7 @@ sub create_arptables_load( $ ) {
|
|||||||
#
|
#
|
||||||
sub preview_arptables_load() {
|
sub preview_arptables_load() {
|
||||||
|
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
print "#\n# Generated by Shorewall $globals{VERSION} - $date\n#\n";
|
print "#\n# Generated by Shorewall $globals{VERSION} - $date\n#\n";
|
||||||
|
|
||||||
|
@@ -8575,7 +8575,7 @@ sub create_netfilter_load( $ ) {
|
|||||||
|
|
||||||
enter_cat_mode;
|
enter_cat_mode;
|
||||||
|
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
unless ( $test ) {
|
unless ( $test ) {
|
||||||
emit_unindented '#';
|
emit_unindented '#';
|
||||||
@@ -8683,7 +8683,7 @@ sub preview_netfilter_load() {
|
|||||||
|
|
||||||
enter_cat_mode1;
|
enter_cat_mode1;
|
||||||
|
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
print "#\n# Generated by Shorewall $globals{VERSION} - $date\n#\n";
|
print "#\n# Generated by Shorewall $globals{VERSION} - $date\n#\n";
|
||||||
|
|
||||||
@@ -8919,7 +8919,7 @@ sub create_stop_load( $ ) {
|
|||||||
enter_cat_mode;
|
enter_cat_mode;
|
||||||
|
|
||||||
unless ( $test ) {
|
unless ( $test ) {
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
emit_unindented '#';
|
emit_unindented '#';
|
||||||
emit_unindented "# Generated by Shorewall $globals{VERSION} - $date";
|
emit_unindented "# Generated by Shorewall $globals{VERSION} - $date";
|
||||||
emit_unindented '#';
|
emit_unindented '#';
|
||||||
|
@@ -76,7 +76,7 @@ sub initialize_package_globals( $$$ ) {
|
|||||||
#
|
#
|
||||||
# First stage of script generation.
|
# First stage of script generation.
|
||||||
#
|
#
|
||||||
# Copy lib.core and lib.common to the generated script.
|
# Copy lib.runtime and lib.common to the generated script.
|
||||||
# Generate the various user-exit jacket functions.
|
# Generate the various user-exit jacket functions.
|
||||||
#
|
#
|
||||||
# Note: This function is not called when $command eq 'check'. So it must have no side effects other
|
# Note: This function is not called when $command eq 'check'. So it must have no side effects other
|
||||||
@@ -90,12 +90,12 @@ sub generate_script_1( $ ) {
|
|||||||
if ( $test ) {
|
if ( $test ) {
|
||||||
emit "#!$config{SHOREWALL_SHELL}\n#\n# Compiled firewall script generated by Shorewall-perl\n#";
|
emit "#!$config{SHOREWALL_SHELL}\n#\n# Compiled firewall script generated by Shorewall-perl\n#";
|
||||||
} else {
|
} else {
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
emit "#!$config{SHOREWALL_SHELL}\n#\n# Compiled firewall script generated by Shorewall $globals{VERSION} - $date\n#";
|
emit "#!$config{SHOREWALL_SHELL}\n#\n# Compiled firewall script generated by Shorewall $globals{VERSION} - $date\n#";
|
||||||
|
|
||||||
copy $globals{SHAREDIRPL} . '/lib.core', 0;
|
copy $globals{SHAREDIRPL} . '/lib.runtime', 0;
|
||||||
copy2 $globals{SHAREDIRPL} . '/lib.common', $debug;
|
copy2 $globals{SHAREDIRPL} . '/lib.common' , $debug;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -596,6 +596,21 @@ EOF
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generate info_command()
|
||||||
|
#
|
||||||
|
sub compile_info_command() {
|
||||||
|
my $date = compiletime;
|
||||||
|
|
||||||
|
emit( "\n",
|
||||||
|
"#",
|
||||||
|
"# Echo the date and time when this script was compiled along with the Shorewall version",
|
||||||
|
"#",
|
||||||
|
"info_command() {" ,
|
||||||
|
qq( echo "compiled $date by Shorewall version $globals{VERSION}") ,
|
||||||
|
"}\n" );
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# The Compiler.
|
# The Compiler.
|
||||||
#
|
#
|
||||||
@@ -922,6 +937,10 @@ sub compiler {
|
|||||||
#
|
#
|
||||||
compile_updown;
|
compile_updown;
|
||||||
#
|
#
|
||||||
|
# Echo the compilation time and date
|
||||||
|
#
|
||||||
|
compile_info_command unless $test;
|
||||||
|
#
|
||||||
# Copy the footer to the script
|
# Copy the footer to the script
|
||||||
#
|
#
|
||||||
copy $globals{SHAREDIRPL} . 'prog.footer' unless $test;
|
copy $globals{SHAREDIRPL} . 'prog.footer' unless $test;
|
||||||
|
@@ -84,6 +84,8 @@ our @EXPORT = qw(
|
|||||||
require_capability
|
require_capability
|
||||||
report_used_capabilities
|
report_used_capabilities
|
||||||
kernel_version
|
kernel_version
|
||||||
|
|
||||||
|
compiletime
|
||||||
);
|
);
|
||||||
|
|
||||||
our @EXPORT_OK = qw( $shorewall_dir initialize shorewall);
|
our @EXPORT_OK = qw( $shorewall_dir initialize shorewall);
|
||||||
@@ -681,6 +683,8 @@ our %ipsets; # All required IPsets
|
|||||||
#
|
#
|
||||||
our %filecache;
|
our %filecache;
|
||||||
|
|
||||||
|
our $compiletime;
|
||||||
|
|
||||||
sub process_shorewallrc($$);
|
sub process_shorewallrc($$);
|
||||||
sub add_variables( \% );
|
sub add_variables( \% );
|
||||||
#
|
#
|
||||||
@@ -737,7 +741,7 @@ sub initialize( $;$$) {
|
|||||||
TC_SCRIPT => '',
|
TC_SCRIPT => '',
|
||||||
EXPORT => 0,
|
EXPORT => 0,
|
||||||
KLUDGEFREE => '',
|
KLUDGEFREE => '',
|
||||||
VERSION => "5.0.1",
|
VERSION => "5.0.9-Beta2",
|
||||||
CAPVERSION => 50004 ,
|
CAPVERSION => 50004 ,
|
||||||
BLACKLIST_LOG_TAG => '',
|
BLACKLIST_LOG_TAG => '',
|
||||||
RELATED_LOG_TAG => '',
|
RELATED_LOG_TAG => '',
|
||||||
@@ -889,6 +893,7 @@ sub initialize( $;$$) {
|
|||||||
DOCKER => undef ,
|
DOCKER => undef ,
|
||||||
PAGER => undef ,
|
PAGER => undef ,
|
||||||
MINIUPNPD => undef ,
|
MINIUPNPD => undef ,
|
||||||
|
VERBOSE_MESSAGES => undef ,
|
||||||
#
|
#
|
||||||
# Packet Disposition
|
# Packet Disposition
|
||||||
#
|
#
|
||||||
@@ -1171,6 +1176,12 @@ sub initialize( $;$$) {
|
|||||||
%shorewallrc1 = %shorewallrc unless $shorewallrc1;
|
%shorewallrc1 = %shorewallrc unless $shorewallrc1;
|
||||||
|
|
||||||
add_variables %shorewallrc1;
|
add_variables %shorewallrc1;
|
||||||
|
|
||||||
|
$compiletime = `date`;
|
||||||
|
|
||||||
|
chomp $compiletime;
|
||||||
|
|
||||||
|
$compiletime =~ s/ +/ /g;
|
||||||
}
|
}
|
||||||
|
|
||||||
my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
|
my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
|
||||||
@@ -1183,6 +1194,10 @@ sub all_ipsets() {
|
|||||||
sort keys %ipsets;
|
sort keys %ipsets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub compiletime() {
|
||||||
|
$compiletime;
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Create 'currentlineinfo'
|
# Create 'currentlineinfo'
|
||||||
#
|
#
|
||||||
@@ -2543,18 +2558,54 @@ sub directive_error( $$$ ) {
|
|||||||
fatal_error $_[0];
|
fatal_error $_[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
sub directive_warning( $$$ ) {
|
sub directive_warning( $$$$ ) {
|
||||||
my ( $savefilename, $savelineno ) = ( $currentfilename, $currentlinenumber );
|
if ( shift ) {
|
||||||
( my $warning, $currentfilename, $currentlinenumber ) = @_;
|
my ( $savefilename, $savelineno ) = ( $currentfilename, $currentlinenumber );
|
||||||
warning_message $warning;
|
( my $warning, $currentfilename, $currentlinenumber ) = @_;
|
||||||
( $currentfilename, $currentlinenumber ) = ( $savefilename, $savelineno );
|
warning_message $warning;
|
||||||
|
( $currentfilename, $currentlinenumber ) = ( $savefilename, $savelineno );
|
||||||
|
} else {
|
||||||
|
our @localtime;
|
||||||
|
|
||||||
|
handle_first_entry if $first_entry;
|
||||||
|
|
||||||
|
$| = 1; #Reset output buffering (flush any partially filled buffers).
|
||||||
|
|
||||||
|
if ( $log ) {
|
||||||
|
@localtime = localtime;
|
||||||
|
printf $log '%s %2d %02d:%02d:%02d ', $abbr[$localtime[4]], @localtime[3,2,1,0];
|
||||||
|
print $log " WARNING: $_[0]\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
print STDERR " WARNING: $_[0]\n";
|
||||||
|
|
||||||
|
$| = 0; #Re-allow output buffering
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sub directive_info( $$$ ) {
|
sub directive_info( $$$$ ) {
|
||||||
my ( $savefilename, $savelineno ) = ( $currentfilename, $currentlinenumber );
|
if ( shift ) {
|
||||||
( my $info, $currentfilename, $currentlinenumber ) = @_;
|
my ( $savefilename, $savelineno ) = ( $currentfilename, $currentlinenumber );
|
||||||
info_message $info;
|
( my $info, $currentfilename, $currentlinenumber ) = @_;
|
||||||
( $currentfilename, $currentlinenumber ) = ( $savefilename, $savelineno );
|
info_message $info;
|
||||||
|
( $currentfilename, $currentlinenumber ) = ( $savefilename, $savelineno );
|
||||||
|
} else {
|
||||||
|
our @localtime;
|
||||||
|
|
||||||
|
handle_first_entry if $first_entry;
|
||||||
|
|
||||||
|
$| = 1; #Reset output buffering (flush any partially filled buffers).
|
||||||
|
|
||||||
|
if ( $log ) {
|
||||||
|
@localtime = localtime;
|
||||||
|
printf $log '%s %2d %02d:%02d:%02d ', $abbr[$localtime[4]], @localtime[3,2,1,0];
|
||||||
|
print $log " INFO: $_[0]\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
print STDERR " INFO: $_[0]\n";
|
||||||
|
|
||||||
|
$| = 0; #Re-allow output buffering
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -2703,7 +2754,7 @@ sub process_compiler_directive( $$$$ ) {
|
|||||||
|
|
||||||
print "CD===> $line\n" if $debug;
|
print "CD===> $line\n" if $debug;
|
||||||
|
|
||||||
directive_error( "Invalid compiler directive ($line)" , $filename, $linenumber ) unless $line =~ /^\s*\?(IF\s+|ELSE|ELSIF\s+|ENDIF|SET\s+|RESET\s+|FORMAT\s+|COMMENT\s*|ERROR\s+|WARNING\s+|INFO\s+)(.*)$/i;
|
directive_error( "Invalid compiler directive ($line)" , $filename, $linenumber ) unless $line =~ /^\s*\?(IF\s+|ELSE|ELSIF\s+|ENDIF|SET\s+|RESET\s+|FORMAT\s+|COMMENT\s*|ERROR\s+|WARNING\s+|INFO\s+|WARNING!\s+|INFO!\s+)(.*)$/i;
|
||||||
|
|
||||||
my ($keyword, $expression) = ( uc $1, $2 );
|
my ($keyword, $expression) = ( uc $1, $2 );
|
||||||
|
|
||||||
@@ -2811,14 +2862,14 @@ sub process_compiler_directive( $$$$ ) {
|
|||||||
delete $actparams{$var}
|
delete $actparams{$var}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
directive_warning( "Shorewall variable $2 does not exist", $filename, $linenumber );
|
directive_warning( 'Yes', "Shorewall variable $2 does not exist", $filename, $linenumber );
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if ( exists $variables{$2} ) {
|
if ( exists $variables{$2} ) {
|
||||||
delete $variables{$2};
|
delete $variables{$2};
|
||||||
} else {
|
} else {
|
||||||
directive_warning( "Shell variable $2 does not exist", $filename, $linenumber );
|
directive_warning( 'Yes', "Shell variable $2 does not exist", $filename, $linenumber );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2832,7 +2883,7 @@ sub process_compiler_directive( $$$$ ) {
|
|||||||
( $comment = $line ) =~ s/^\s*\?COMMENT\s*//;
|
( $comment = $line ) =~ s/^\s*\?COMMENT\s*//;
|
||||||
$comment =~ s/\s*$//;
|
$comment =~ s/\s*$//;
|
||||||
} else {
|
} else {
|
||||||
directive_warning( "COMMENTs ignored -- require comment support in iptables/Netfilter" , $filename, $linenumber ) unless $warningcount++;
|
directive_warning( 'Yes', "COMMENTs ignored -- require comment support in iptables/Netfilter" , $filename, $linenumber ) unless $warningcount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -2851,7 +2902,8 @@ sub process_compiler_directive( $$$$ ) {
|
|||||||
} ,
|
} ,
|
||||||
|
|
||||||
WARNING => sub() {
|
WARNING => sub() {
|
||||||
directive_warning( evaluate_expression( $expression ,
|
directive_warning( $config{VERBOSE_MESSAGES} ,
|
||||||
|
evaluate_expression( $expression ,
|
||||||
$filename ,
|
$filename ,
|
||||||
$linenumber ,
|
$linenumber ,
|
||||||
1 ),
|
1 ),
|
||||||
@@ -2860,7 +2912,28 @@ sub process_compiler_directive( $$$$ ) {
|
|||||||
} ,
|
} ,
|
||||||
|
|
||||||
INFO => sub() {
|
INFO => sub() {
|
||||||
directive_info( evaluate_expression( $expression ,
|
directive_info( $config{VERBOSE_MESSAGES} ,
|
||||||
|
evaluate_expression( $expression ,
|
||||||
|
$filename ,
|
||||||
|
$linenumber ,
|
||||||
|
1 ),
|
||||||
|
$filename ,
|
||||||
|
$linenumber ) unless $omitting;
|
||||||
|
} ,
|
||||||
|
|
||||||
|
'WARNING!' => sub() {
|
||||||
|
directive_warning( ! $config{VERBOSE_MESSAGES} ,
|
||||||
|
evaluate_expression( $expression ,
|
||||||
|
$filename ,
|
||||||
|
$linenumber ,
|
||||||
|
1 ),
|
||||||
|
$filename ,
|
||||||
|
$linenumber ) unless $omitting;
|
||||||
|
} ,
|
||||||
|
|
||||||
|
'INFO!' => sub() {
|
||||||
|
directive_info( ! $config{VERBOSE_MESSAGES} ,
|
||||||
|
evaluate_expression( $expression ,
|
||||||
$filename ,
|
$filename ,
|
||||||
$linenumber ,
|
$linenumber ,
|
||||||
1 ),
|
1 ),
|
||||||
@@ -3821,9 +3894,10 @@ my %logoptions = ( tcp_sequence => '--log-tcp-sequence',
|
|||||||
|
|
||||||
sub validate_level( $;$ ) {
|
sub validate_level( $;$ ) {
|
||||||
my ( $rawlevel, $option ) = @_;
|
my ( $rawlevel, $option ) = @_;
|
||||||
my $level = uc $rawlevel;
|
my $level;
|
||||||
|
|
||||||
if ( supplied ( $level ) ) {
|
if ( supplied ( $rawlevel ) ) {
|
||||||
|
$level = uc $rawlevel;
|
||||||
$level =~ s/!$//;
|
$level =~ s/!$//;
|
||||||
my $value = $level;
|
my $value = $level;
|
||||||
my $qualifier;
|
my $qualifier;
|
||||||
@@ -5678,6 +5752,24 @@ sub get_configuration( $$$$ ) {
|
|||||||
$ENV{PATH} = $default_path;
|
$ENV{PATH} = $default_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fatal_error "Shorewall-core does not appear to be installed" unless open_file "$globals{SHAREDIRPL}coreversion";
|
||||||
|
|
||||||
|
fatal_error "$globals{SHAREDIRPL}coreversion is empty" unless read_a_line( PLAIN_READ );
|
||||||
|
|
||||||
|
close_file;
|
||||||
|
|
||||||
|
warning_message "Version Mismatch: Shorewall-core is version $currentline, while the Shorewall version is $globals{VERSION}" unless $currentline eq $globals{VERSION};
|
||||||
|
|
||||||
|
if ( $family == F_IPV6 ) {
|
||||||
|
open_file( "$globals{SHAREDIR}/version" ) || fatal_error "Unable to open $globals{SHAREDIR}/version";
|
||||||
|
|
||||||
|
fatal_error "$globals{SHAREDIR}/version is empty" unless read_a_line( PLAIN_READ );
|
||||||
|
|
||||||
|
close_file;
|
||||||
|
|
||||||
|
warning_message "Version Mismatch: Shorewall6 is version $currentline, while the Shorewall version is $globals{VERSION}" unless $currentline eq $globals{VERSION};
|
||||||
|
}
|
||||||
|
|
||||||
my $have_capabilities;
|
my $have_capabilities;
|
||||||
|
|
||||||
if ( $export || $> != 0 ) {
|
if ( $export || $> != 0 ) {
|
||||||
@@ -6109,6 +6201,7 @@ sub get_configuration( $$$$ ) {
|
|||||||
default_yes_no 'WARNOLDCAPVERSION' , 'Yes';
|
default_yes_no 'WARNOLDCAPVERSION' , 'Yes';
|
||||||
default_yes_no 'DEFER_DNS_RESOLUTION' , 'Yes';
|
default_yes_no 'DEFER_DNS_RESOLUTION' , 'Yes';
|
||||||
default_yes_no 'MINIUPNPD' , '';
|
default_yes_no 'MINIUPNPD' , '';
|
||||||
|
default_yes_no 'VERBOSE_MESSAGES' , 'Yes';
|
||||||
|
|
||||||
$config{IPSET} = '' if supplied $config{IPSET} && $config{IPSET} eq 'ipset';
|
$config{IPSET} = '' if supplied $config{IPSET} && $config{IPSET} eq 'ipset';
|
||||||
|
|
||||||
|
@@ -302,7 +302,7 @@ sub convert_blacklist() {
|
|||||||
if ( @rules ) {
|
if ( @rules ) {
|
||||||
my $fn1 = find_writable_file( 'blrules' );
|
my $fn1 = find_writable_file( 'blrules' );
|
||||||
my $blrules;
|
my $blrules;
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
if ( -f $fn1 ) {
|
if ( -f $fn1 ) {
|
||||||
open $blrules, '>>', $fn1 or fatal_error "Unable to open $fn1: $!";
|
open $blrules, '>>', $fn1 or fatal_error "Unable to open $fn1: $!";
|
||||||
@@ -393,7 +393,7 @@ sub convert_routestopped() {
|
|||||||
my ( @allhosts, %source, %dest , %notrack, @rule );
|
my ( @allhosts, %source, %dest , %notrack, @rule );
|
||||||
|
|
||||||
my $seq = 0;
|
my $seq = 0;
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
my ( $stoppedrules, $fn1 );
|
my ( $stoppedrules, $fn1 );
|
||||||
|
|
||||||
@@ -421,7 +421,7 @@ EOF
|
|||||||
|
|
||||||
first_entry(
|
first_entry(
|
||||||
sub {
|
sub {
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
progress_message2 "$doing $fn...";
|
progress_message2 "$doing $fn...";
|
||||||
print( $stoppedrules
|
print( $stoppedrules
|
||||||
"#\n" ,
|
"#\n" ,
|
||||||
@@ -649,9 +649,15 @@ sub create_docker_rules() {
|
|||||||
add_ijump( $chainref, j => 'ACCEPT', o => 'docker0', state_imatch 'ESTABLISHED,RELATED' );
|
add_ijump( $chainref, j => 'ACCEPT', o => 'docker0', state_imatch 'ESTABLISHED,RELATED' );
|
||||||
add_ijump( $chainref, j => 'ACCEPT', i => 'docker0', o => '! docker0' );
|
add_ijump( $chainref, j => 'ACCEPT', i => 'docker0', o => '! docker0' );
|
||||||
add_ijump( $chainref, j => 'ACCEPT', i => 'docker0', o => 'docker0' ) if $dockerref->{options}{routeback};
|
add_ijump( $chainref, j => 'ACCEPT', i => 'docker0', o => 'docker0' ) if $dockerref->{options}{routeback};
|
||||||
add_ijump( $filter_table->{OUTPUT}, j => 'DOCKER' );
|
|
||||||
decr_cmd_level( $chainref );
|
decr_cmd_level( $chainref );
|
||||||
add_commands( $chainref, 'fi' );
|
add_commands( $chainref, 'fi' );
|
||||||
|
|
||||||
|
my $outputref;
|
||||||
|
add_commands( $outputref = $filter_table->{OUTPUT}, 'if [ -n "$g_docker" ]; then' );
|
||||||
|
incr_cmd_level( $outputref );
|
||||||
|
add_ijump( $outputref, j => 'DOCKER' );
|
||||||
|
decr_cmd_level( $outputref );
|
||||||
|
add_commands( $outputref, 'fi' );
|
||||||
}
|
}
|
||||||
|
|
||||||
add_commands( $chainref, '[ -f ${VARDIR}/.filter_FORWARD ] && cat $VARDIR/.filter_FORWARD >&3', );
|
add_commands( $chainref, '[ -f ${VARDIR}/.filter_FORWARD ] && cat $VARDIR/.filter_FORWARD >&3', );
|
||||||
@@ -861,8 +867,10 @@ sub add_common_rules ( $ ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( $dbl_ipset && ! get_interface_option( $interface, 'nodbl' ) ) {
|
if ( $dbl_ipset && ! get_interface_option( $interface, 'nodbl' ) ) {
|
||||||
add_ijump_extended( $filter_table->{input_option_chain($interface)}, j => $dbl_target, $origin{DYNAMIC_BLACKLIST}, @state, set => "--match-set $dbl_ipset src" );
|
add_ijump_extended( $filter_table->{input_option_chain($interface)}, j => $dbl_target, $origin{DYNAMIC_BLACKLIST}, @state, set => "--match-set $dbl_ipset src" );
|
||||||
add_ijump_extended( $filter_table->{output_option_chain($interface)}, j => $dbl_target, $origin{DYNAMIC_BLACKLIST}, @state, set => "--match-set $dbl_ipset dst" ) if $dbl_type =~ /,src-dst$/;
|
add_ijump_extended( $filter_table->{output_option_chain($interface)}, j => $dbl_target, $origin{DYNAMIC_BLACKLIST}, @state, set => "--match-set $dbl_ipset dst" ) if $dbl_type =~ /,src-dst$/;
|
||||||
|
add_ijump_extended( $filter_table->{forward_option_chain($interface)}, j => $dbl_target, $origin{DYNAMIC_BLACKLIST}, @state, set => "--match-set $dbl_ipset src" );
|
||||||
|
add_ijump_extended( $filter_table->{forward_option_chain($interface)}, j => $dbl_target, $origin{DYNAMIC_BLACKLIST}, @state, set => "--match-set $dbl_ipset dst" ) if $dbl_type =~ /,src-dst$/;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( option_chains( $interface ) ) {
|
for ( option_chains( $interface ) ) {
|
||||||
|
@@ -368,7 +368,7 @@ sub setup_conntrack($) {
|
|||||||
if ( $convert ) {
|
if ( $convert ) {
|
||||||
my $conntrack;
|
my $conntrack;
|
||||||
my $empty = 1;
|
my $empty = 1;
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
|
|
||||||
if ( $fn ) {
|
if ( $fn ) {
|
||||||
open $conntrack, '>>', $fn or fatal_error "Unable to open $fn for notrack conversion: $!";
|
open $conntrack, '>>', $fn or fatal_error "Unable to open $fn for notrack conversion: $!";
|
||||||
|
@@ -4464,6 +4464,16 @@ sub process_mangle_rule1( $$$$$$$$$$$$$$$$$$ ) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
NFLOG => {
|
||||||
|
defaultchain => 0,
|
||||||
|
allowedchains => ALLCHAINS,
|
||||||
|
minparams => 0,
|
||||||
|
maxparams => 3,
|
||||||
|
function => sub () {
|
||||||
|
$target = validate_level( "NFLOG($params)" );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
RESTORE => {
|
RESTORE => {
|
||||||
defaultchain => 0,
|
defaultchain => 0,
|
||||||
allowedchains => PREROUTING | INPUT | FORWARD | OUTPUT | POSTROUTING,
|
allowedchains => PREROUTING | INPUT | FORWARD | OUTPUT | POSTROUTING,
|
||||||
|
@@ -352,7 +352,7 @@ sub process_simple_device() {
|
|||||||
my $prio = 16 | $i;
|
my $prio = 16 | $i;
|
||||||
emit "run_tc qdisc add dev $physical parent $number:$i handle ${number}${i}: sfq quantum 1875 limit 127 perturb 10";
|
emit "run_tc qdisc add dev $physical parent $number:$i handle ${number}${i}: sfq quantum 1875 limit 127 perturb 10";
|
||||||
emit "run_tc filter add dev $physical protocol all prio $prio parent $number: handle $i fw classid $number:$i";
|
emit "run_tc filter add dev $physical protocol all prio $prio parent $number: handle $i fw classid $number:$i";
|
||||||
emit "run_tc filter add dev $physical protocol all prio 1 parent ${number}$i: handle ${number}${i} flow hash keys $type divisor 1024" if $type ne '-' && have_capability 'FLOW_FILTER';
|
emit "run_tc filter add dev $physical protocol all prio 1 parent ${number}$i: flow hash keys $type divisor 1024" if $type ne '-' && have_capability 'FLOW_FILTER';
|
||||||
emit '';
|
emit '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2166,7 +2166,7 @@ sub convert_tos($$) {
|
|||||||
if ( my $fn = open_file 'tos' ) {
|
if ( my $fn = open_file 'tos' ) {
|
||||||
first_entry(
|
first_entry(
|
||||||
sub {
|
sub {
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
progress_message2 "Converting $fn...";
|
progress_message2 "Converting $fn...";
|
||||||
print( $mangle
|
print( $mangle
|
||||||
"#\n" ,
|
"#\n" ,
|
||||||
@@ -2332,7 +2332,7 @@ sub setup_tc( $ ) {
|
|||||||
|
|
||||||
first_entry(
|
first_entry(
|
||||||
sub {
|
sub {
|
||||||
my $date = localtime;
|
my $date = compiletime;
|
||||||
progress_message2 "Converting $fn...";
|
progress_message2 "Converting $fn...";
|
||||||
print( $mangle
|
print( $mangle
|
||||||
"#\n" ,
|
"#\n" ,
|
||||||
|
@@ -49,7 +49,7 @@
|
|||||||
# generated this program
|
# generated this program
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
# Functions imported from /usr/share/shorewall/lib.core
|
# Functions imported from /usr/share/shorewall/lib.runtime
|
||||||
################################################################################
|
################################################################################
|
||||||
# Address family-neutral Functions
|
# Address family-neutral Functions
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -1110,7 +1110,7 @@ interface_is_usable() # $1 = interface
|
|||||||
#
|
#
|
||||||
find_interface_addresses() # $1 = interface
|
find_interface_addresses() # $1 = interface
|
||||||
{
|
{
|
||||||
$IP -f inet6 addr show $1 2> /dev/null | grep 'inet6 2' | sed 's/\s*inet6 //;s/\/.*//;s/ peer.*//'
|
$IP -f inet6 addr show $1 2> /dev/null | grep 'inet6 2' | sed 's/\s*inet6 //;s/\/.*//;s/ peer [0-9a-f:]*//'
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -1119,7 +1119,7 @@ find_interface_addresses() # $1 = interface
|
|||||||
|
|
||||||
find_interface_full_addresses() # $1 = interface
|
find_interface_full_addresses() # $1 = interface
|
||||||
{
|
{
|
||||||
$IP -f inet6 addr show $1 2> /dev/null | grep 'inet6 ' | sed 's/\s*inet6 //;s/ scope.*//;s/ peer.*//'
|
$IP -f inet6 addr show $1 2> /dev/null | grep 'inet6 ' | sed 's/\s*inet6 //;s/ scope.*//;s/ peer [0-9a-f:]*//'
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
@@ -25,6 +25,7 @@ usage() {
|
|||||||
echo " savesets <file>"
|
echo " savesets <file>"
|
||||||
echo " call <function> [ <parameter> ... ]"
|
echo " call <function> [ <parameter> ... ]"
|
||||||
echo " version"
|
echo " version"
|
||||||
|
echo " info"
|
||||||
echo
|
echo
|
||||||
echo "Options are:"
|
echo "Options are:"
|
||||||
echo
|
echo
|
||||||
@@ -469,6 +470,10 @@ case "$COMMAND" in
|
|||||||
echo $SHOREWALL_VERSION
|
echo $SHOREWALL_VERSION
|
||||||
status=0
|
status=0
|
||||||
;;
|
;;
|
||||||
|
info)
|
||||||
|
[ $# -ne 1 ] && usage 2
|
||||||
|
info_command
|
||||||
|
;;
|
||||||
help)
|
help)
|
||||||
[ $# -ne 1 ] && usage 2
|
[ $# -ne 1 ] && usage 2
|
||||||
usage 0
|
usage 0
|
||||||
|
@@ -136,7 +136,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -242,6 +242,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -147,7 +147,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -253,6 +253,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -144,7 +144,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -250,6 +250,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -147,7 +147,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -253,6 +253,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -242,6 +242,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -514,7 +514,7 @@ echo "Default config path file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/confi
|
|||||||
# Install the Standard Actions file
|
# Install the Standard Actions file
|
||||||
#
|
#
|
||||||
install_file actions.std ${DESTDIR}${SHAREDIR}/$PRODUCT/actions.std 0644
|
install_file actions.std ${DESTDIR}${SHAREDIR}/$PRODUCT/actions.std 0644
|
||||||
echo "Standard actions file installed as ${DESTDIR}${SHAREDIR}d/$PRODUCT/actions.std"
|
echo "Standard actions file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/actions.std"
|
||||||
|
|
||||||
cd configfiles
|
cd configfiles
|
||||||
|
|
||||||
@@ -1177,6 +1177,8 @@ fi
|
|||||||
# Install the Man Pages
|
# Install the Man Pages
|
||||||
#
|
#
|
||||||
|
|
||||||
|
if [ -n "$MANDIR" ]; then
|
||||||
|
|
||||||
cd manpages
|
cd manpages
|
||||||
|
|
||||||
[ -n "$INSTALLD" ] || mkdir -p ${DESTDIR}${MANDIR}/man5/ ${DESTDIR}${MANDIR}/man8/
|
[ -n "$INSTALLD" ] || mkdir -p ${DESTDIR}${MANDIR}/man5/ ${DESTDIR}${MANDIR}/man8/
|
||||||
@@ -1196,6 +1198,7 @@ done
|
|||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
echo "Man Pages Installed"
|
echo "Man Pages Installed"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -d ${DESTDIR}${CONFDIR}/logrotate.d ]; then
|
if [ -d ${DESTDIR}${CONFDIR}/logrotate.d ]; then
|
||||||
run_install $OWNERSHIP -m 0644 logrotate ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT
|
run_install $OWNERSHIP -m 0644 logrotate ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT
|
||||||
@@ -1212,7 +1215,7 @@ if [ -n "$SYSCONFFILE" -a -f "$SYSCONFFILE" -a ! -f ${DESTDIR}${SYSCONFDIR}/${PR
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
run_install $OWNERSHIP -m 0644 ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/$PRODUCT
|
run_install $OWNERSHIP -m 0644 ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/$PRODUCT
|
||||||
echo "$SYSCONFFILE installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
echo "$SYSCONFFILE file installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $configure -eq 1 -a -z "$DESTDIR" -a -n "$first_install" -a -z "${cygwin}${mac}" ]; then
|
if [ $configure -eq 1 -a -z "$DESTDIR" -a -n "$first_install" -a -z "${cygwin}${mac}" ]; then
|
||||||
|
@@ -493,13 +493,13 @@ compiler() {
|
|||||||
|
|
||||||
case "$g_doing" in
|
case "$g_doing" in
|
||||||
Compiling|Checking)
|
Compiling|Checking)
|
||||||
progress_message3 "$g_doing using $g_product $SHOREWALL_VERSION..."
|
progress_message3 "$g_doing using Shorewall $SHOREWALL_VERSION..."
|
||||||
;;
|
;;
|
||||||
Updating)
|
Updating)
|
||||||
progress_message3 "Updating $g_product configuration to $SHOREWALL_VERSION..."
|
progress_message3 "Updating $g_product configuration to $SHOREWALL_VERSION..."
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
[ -n "$g_doing" ] && progress_message3 "$g_doing using $g_product $SHOREWALL_VERSION..."
|
[ -n "$g_doing" ] && progress_message3 "$g_doing using Shorewall $SHOREWALL_VERSION..."
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
#
|
#
|
||||||
@@ -604,7 +604,7 @@ start_command() {
|
|||||||
option=${option#C}
|
option=${option#C}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -620,7 +620,8 @@ start_command() {
|
|||||||
0)
|
0)
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
[ -n "$g_shorewalldir" -o -n "$g_fast" ] && usage 2
|
[ -n "$g_shorewalldir" ] && fatal_error "A directory has already been specified: $1"
|
||||||
|
[ -n "$g_fast" ] && fatal_error "Directory may not be specified with the -f option"
|
||||||
|
|
||||||
if [ ! -d $1 ]; then
|
if [ ! -d $1 ]; then
|
||||||
if [ -e $1 ]; then
|
if [ -e $1 ]; then
|
||||||
@@ -634,7 +635,7 @@ start_command() {
|
|||||||
AUTOMAKE=
|
AUTOMAKE=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -663,8 +664,6 @@ compile_command() {
|
|||||||
shift
|
shift
|
||||||
option=${option#-}
|
option=${option#-}
|
||||||
|
|
||||||
[ -z "$option" ] && usage 1
|
|
||||||
|
|
||||||
while [ -n "$option" ]; do
|
while [ -n "$option" ]; do
|
||||||
case $option in
|
case $option in
|
||||||
e*)
|
e*)
|
||||||
@@ -701,7 +700,7 @@ compile_command() {
|
|||||||
option=
|
option=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -723,7 +722,7 @@ compile_command() {
|
|||||||
[ -d "$g_file" ] && fatal_error "$g_file is a directory"
|
[ -d "$g_file" ] && fatal_error "$g_file is a directory"
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
[ -n "$g_shorewalldir" -a -z "$g_export" ] && usage 2
|
[ -n "$g_shorewalldir" -a -z "$g_export" ] && fatal_error "A directory has already been specified: $1"
|
||||||
|
|
||||||
if [ ! -d $1 ]; then
|
if [ ! -d $1 ]; then
|
||||||
if [ -e $1 ]; then
|
if [ -e $1 ]; then
|
||||||
@@ -737,7 +736,7 @@ compile_command() {
|
|||||||
g_file=$2
|
g_file=$2
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $3
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -791,7 +790,7 @@ check_command() {
|
|||||||
option=${option#i}
|
option=${option#i}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -807,7 +806,7 @@ check_command() {
|
|||||||
0)
|
0)
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
[ -n "$g_shorewalldir" -a -z "$g_export" ] && usage 2
|
[ -n "$g_shorewalldir" -a -z "$g_export" ] && fatal_error "A directory has already been specified: $1"
|
||||||
|
|
||||||
if [ ! -d $1 ]; then
|
if [ ! -d $1 ]; then
|
||||||
if [ -e $1 ]; then
|
if [ -e $1 ]; then
|
||||||
@@ -820,7 +819,7 @@ check_command() {
|
|||||||
g_shorewalldir=$(resolve_file $1)
|
g_shorewalldir=$(resolve_file $1)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -883,7 +882,7 @@ update_command() {
|
|||||||
option=${option#A}
|
option=${option#A}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -899,7 +898,7 @@ update_command() {
|
|||||||
0)
|
0)
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
[ -n "$g_shorewalldir" ] && usage 2
|
[ -n "$g_shorewalldir" ] && fatal_error "A directory has already been specified: $1"
|
||||||
|
|
||||||
if [ ! -d $1 ]; then
|
if [ ! -d $1 ]; then
|
||||||
if [ -e $1 ]; then
|
if [ -e $1 ]; then
|
||||||
@@ -912,7 +911,7 @@ update_command() {
|
|||||||
g_shorewalldir=$(resolve_file $1)
|
g_shorewalldir=$(resolve_file $1)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -977,7 +976,7 @@ restart_command() {
|
|||||||
option=${option#C}
|
option=${option#C}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -993,7 +992,7 @@ restart_command() {
|
|||||||
0)
|
0)
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
[ -n "$g_shorewalldir" ] && usage 2
|
[ -n "$g_shorewalldir" ] && fatal_error "A directory has already been specified: $1"
|
||||||
|
|
||||||
if [ ! -d $1 ]; then
|
if [ ! -d $1 ]; then
|
||||||
if [ -e $1 ]; then
|
if [ -e $1 ]; then
|
||||||
@@ -1008,7 +1007,7 @@ restart_command() {
|
|||||||
AUTOMAKE=
|
AUTOMAKE=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -1086,7 +1085,7 @@ refresh_command() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -1169,7 +1168,7 @@ safe_commands() {
|
|||||||
shift;
|
shift;
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -1185,7 +1184,7 @@ safe_commands() {
|
|||||||
0)
|
0)
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
[ -n "$g_shorewalldir" ] && usage 2
|
[ -n "$g_shorewalldir" ] && fatal_error "A directory has already been specified: $1"
|
||||||
|
|
||||||
if [ ! -d $1 ]; then
|
if [ ! -d $1 ]; then
|
||||||
if [ -e $1 ]; then
|
if [ -e $1 ]; then
|
||||||
@@ -1198,7 +1197,7 @@ safe_commands() {
|
|||||||
g_shorewalldir=$(resolve_file $1)
|
g_shorewalldir=$(resolve_file $1)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -1286,7 +1285,7 @@ try_command() {
|
|||||||
timeout=
|
timeout=
|
||||||
|
|
||||||
handle_directory() {
|
handle_directory() {
|
||||||
[ -n "$g_shorewalldir" ] && usage 2
|
[ -n "$g_shorewalldir" ] && fatal_error "A directory has already been specified: $1"
|
||||||
|
|
||||||
if [ ! -d $1 ]; then
|
if [ ! -d $1 ]; then
|
||||||
if [ -e $1 ]; then
|
if [ -e $1 ]; then
|
||||||
@@ -1316,7 +1315,7 @@ try_command() {
|
|||||||
option=${option#n}
|
option=${option#n}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -1330,7 +1329,7 @@ try_command() {
|
|||||||
|
|
||||||
case $# in
|
case $# in
|
||||||
0)
|
0)
|
||||||
usage 1
|
missing_argument
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
handle_directory $1
|
handle_directory $1
|
||||||
@@ -1341,7 +1340,7 @@ try_command() {
|
|||||||
timeout=$2
|
timeout=$2
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $3
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -1480,7 +1479,7 @@ remote_reload_command() # $* = original arguments less the command.
|
|||||||
option=${option#i}
|
option=${option#i}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
option_error $option
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -1493,6 +1492,9 @@ remote_reload_command() # $* = original arguments less the command.
|
|||||||
done
|
done
|
||||||
|
|
||||||
case $# in
|
case $# in
|
||||||
|
0)
|
||||||
|
missing_argument
|
||||||
|
;;
|
||||||
1)
|
1)
|
||||||
g_shorewalldir="."
|
g_shorewalldir="."
|
||||||
system=$1
|
system=$1
|
||||||
@@ -1502,7 +1504,7 @@ remote_reload_command() # $* = original arguments less the command.
|
|||||||
system=$2
|
system=$2
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
too_many_arguments $3
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -1742,7 +1744,7 @@ compiler_command() {
|
|||||||
safe_commands $@
|
safe_commands $@
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
usage 1
|
fatal_error "Invalid command: $COMMAND"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
@@ -504,7 +504,7 @@ INLINE eth0 - ; -p tcp -j MARK --set
|
|||||||
|
|
||||||
<member>0xc0a80403 LAND 0xFF = 0x03</member>
|
<member>0xc0a80403 LAND 0xFF = 0x03</member>
|
||||||
|
|
||||||
<member>0x03 LOR 0x0x10100 = 0x10103 or class ID
|
<member>0x03 LOR 0x10100 = 0x10103 or class ID
|
||||||
1:103</member>
|
1:103</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@@ -598,6 +598,36 @@ INLINE eth0 - ; -p tcp -j MARK --set
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><emphasis
|
||||||
|
role="bold">NFLOG</emphasis>[(<emphasis>nflog-parameters</emphasis>)]</term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Added in Shorewall 5.0.9. Logs matching packets using
|
||||||
|
NFLOG. The <replaceable>nflog-parameters</replaceable> are a
|
||||||
|
comma-separated list of up to 3 numbers:</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>The first number specifies the netlink group
|
||||||
|
(0-65535). If omitted (e.g., NFLOG(,0,10)) then a value of
|
||||||
|
0 is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The second number specifies the maximum number of
|
||||||
|
bytes to copy. If omitted, 0 (no limit) is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The third number specifies the number of log
|
||||||
|
messages that should be buffered in the kernel before they
|
||||||
|
are sent to user space. The default is 1.</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><emphasis
|
<term><emphasis
|
||||||
role="bold">RESTORE</emphasis>[(<emphasis>mask</emphasis>)]</term>
|
role="bold">RESTORE</emphasis>[(<emphasis>mask</emphasis>)]</term>
|
||||||
|
@@ -595,9 +595,32 @@
|
|||||||
<para>Added in Shorewall 4.5.9.3. Queues matching packets to a
|
<para>Added in Shorewall 4.5.9.3. Queues matching packets to a
|
||||||
back end logging daemon via a netlink socket then continues to
|
back end logging daemon via a netlink socket then continues to
|
||||||
the next rule. See <ulink
|
the next rule. See <ulink
|
||||||
url="/shorewall.logging.html">http://www.shorewall.net/shorewall_logging.html</ulink>.</para>
|
url="/shorewall.logging.html">http://www.shorewall.net/shorewall_logging.html</ulink>.
|
||||||
|
</para>
|
||||||
|
|
||||||
<para>Similar to<emphasis role="bold">
|
<para>The <replaceable>nflog-parameters</replaceable> are a
|
||||||
|
comma-separated list of up to 3 numbers:</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>The first number specifies the netlink group
|
||||||
|
(0-65535). If omitted (e.g., NFLOG(,0,10)) then a value of
|
||||||
|
0 is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The second number specifies the maximum number of
|
||||||
|
bytes to copy. If omitted, 0 (no limit) is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The third number specifies the number of log
|
||||||
|
messages that should be buffered in the kernel before they
|
||||||
|
are sent to user space. The default is 1.</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
|
||||||
|
<para>NFLOG is similar to<emphasis role="bold">
|
||||||
LOG:NFLOG</emphasis>[(<replaceable>nflog-parameters</replaceable>)],
|
LOG:NFLOG</emphasis>[(<replaceable>nflog-parameters</replaceable>)],
|
||||||
except that the log level is not changed when this ACTION is
|
except that the log level is not changed when this ACTION is
|
||||||
used in an action or macro body and the invocation of that
|
used in an action or macro body and the invocation of that
|
||||||
|
@@ -2508,7 +2508,7 @@ INLINE - - - ; -j REJECT
|
|||||||
role="bold">refresh</emphasis>, <emphasis
|
role="bold">refresh</emphasis>, <emphasis
|
||||||
role="bold">try</emphasis>, and <emphasis
|
role="bold">try</emphasis>, and <emphasis
|
||||||
role="bold">safe-</emphasis>* command. Logging verbosity is
|
role="bold">safe-</emphasis>* command. Logging verbosity is
|
||||||
determined by the setting of LOG_VERBOSITY above. </para>
|
determined by the setting of LOG_VERBOSITY above.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@@ -2864,6 +2864,20 @@ INLINE - - - ; -j REJECT
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><emphasis role="bold">VERBOSE_MESSAGES=</emphasis>[<emphasis
|
||||||
|
role="bold">Yes</emphasis>|<emphasis role="bold">No</emphasis>]</term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Added in Shorewall 5.0.9. When Yes (the default), messages
|
||||||
|
produced by the ?INFO and ?WARNING directives include the filename
|
||||||
|
and linenumber of the directive. When set to No, that additional
|
||||||
|
information is omitted. The setting may be overridden on a directive
|
||||||
|
by directive basis by following ?INFO or ?WARNING with '!' (no
|
||||||
|
intervening white space).</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><emphasis
|
<term><emphasis
|
||||||
role="bold">VERBOSITY=</emphasis>[<emphasis>number</emphasis>]</term>
|
role="bold">VERBOSITY=</emphasis>[<emphasis>number</emphasis>]</term>
|
||||||
|
@@ -215,7 +215,7 @@ rm -rf ${SHAREDIR}/shorewall/configfiles/
|
|||||||
rm -rf ${SHAREDIR}/shorewall/Samples/
|
rm -rf ${SHAREDIR}/shorewall/Samples/
|
||||||
rm -rf ${SHAREDIR}/shorewall/Shorewall/
|
rm -rf ${SHAREDIR}/shorewall/Shorewall/
|
||||||
rm -f ${SHAREDIR}/shorewall/lib.cli-std
|
rm -f ${SHAREDIR}/shorewall/lib.cli-std
|
||||||
rm -f ${SHAREDIR}/shorewall/lib.core
|
rm -f ${SHAREDIR}/shorewall/lib.runtime
|
||||||
rm -f ${SHAREDIR}/shorewall/compiler.pl
|
rm -f ${SHAREDIR}/shorewall/compiler.pl
|
||||||
rm -f ${SHAREDIR}/shorewall/prog.*
|
rm -f ${SHAREDIR}/shorewall/prog.*
|
||||||
rm -f ${SHAREDIR}/shorewall/module*
|
rm -f ${SHAREDIR}/shorewall/module*
|
||||||
|
@@ -129,7 +129,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -213,6 +213,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -130,7 +130,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -214,6 +214,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -129,7 +129,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -213,6 +213,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -129,7 +129,7 @@ AUTOCOMMENT=Yes
|
|||||||
|
|
||||||
AUTOHELPERS=Yes
|
AUTOHELPERS=Yes
|
||||||
|
|
||||||
AUTOMAKE=No
|
AUTOMAKE=Yes
|
||||||
|
|
||||||
BLACKLIST="NEW,INVALID,UNTRACKED"
|
BLACKLIST="NEW,INVALID,UNTRACKED"
|
||||||
|
|
||||||
@@ -213,6 +213,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -213,6 +213,8 @@ USE_PHYSICAL_NAMES=No
|
|||||||
|
|
||||||
USE_RT_NAMES=No
|
USE_RT_NAMES=No
|
||||||
|
|
||||||
|
VERBOSE_MESSAGES=Yes
|
||||||
|
|
||||||
WARNOLDCAPVERSION=Yes
|
WARNOLDCAPVERSION=Yes
|
||||||
|
|
||||||
WORKAROUNDS=No
|
WORKAROUNDS=No
|
||||||
|
@@ -515,7 +515,7 @@ INLINE eth0 - ; -p tcp -j MARK --set
|
|||||||
|
|
||||||
<member>0xc0a80403 LAND 0xFF = 0x03</member>
|
<member>0xc0a80403 LAND 0xFF = 0x03</member>
|
||||||
|
|
||||||
<member>0x03 LOR 0x0x10100 = 0x10103 or class ID
|
<member>0x03 LOR 0x10100 = 0x10103 or class ID
|
||||||
1:103</member>
|
1:103</member>
|
||||||
</simplelist>
|
</simplelist>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@@ -609,6 +609,36 @@ INLINE eth0 - ; -p tcp -j MARK --set
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><emphasis
|
||||||
|
role="bold">NFLOG</emphasis>[(<emphasis>nflog-parameters</emphasis>)]</term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Added in Shorewall 5.0.9. Logs matching packets using
|
||||||
|
NFLOG. The <replaceable>nflog-parameters</replaceable> are a
|
||||||
|
comma-separated list of up to 3 numbers:</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>The first number specifies the netlink group
|
||||||
|
(0-65535). If omitted (e.g., NFLOG(,0,10)) then a value of
|
||||||
|
0 is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The second number specifies the maximum number of
|
||||||
|
bytes to copy. If omitted, 0 (no limit) is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The third number specifies the number of log
|
||||||
|
messages that should be buffered in the kernel before they
|
||||||
|
are sent to user space. The default is 1. </para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><emphasis
|
<term><emphasis
|
||||||
role="bold">RESTORE</emphasis>[(<emphasis>mask</emphasis>)]</term>
|
role="bold">RESTORE</emphasis>[(<emphasis>mask</emphasis>)]</term>
|
||||||
|
@@ -574,7 +574,29 @@
|
|||||||
the next rule. See <ulink
|
the next rule. See <ulink
|
||||||
url="/shorewall_logging.html">http://www.shorewall.net/shorewall_logging.html</ulink>.</para>
|
url="/shorewall_logging.html">http://www.shorewall.net/shorewall_logging.html</ulink>.</para>
|
||||||
|
|
||||||
<para>Similar to<emphasis role="bold">
|
<para>The <replaceable>nflog-parameters</replaceable> are a
|
||||||
|
comma-separated list of up to 3 numbers:</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>The first number specifies the netlink group
|
||||||
|
(0-65535). If omitted (e.g., NFLOG(,0,10)) then a value of
|
||||||
|
0 is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The second number specifies the maximum number of
|
||||||
|
bytes to copy. If omitted, 0 (no limit) is assumed.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>The third number specifies the number of log
|
||||||
|
messages that should be buffered in the kernel before they
|
||||||
|
are sent to user space. The default is 1.</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
|
||||||
|
<para>NFLOG is similar to<emphasis role="bold">
|
||||||
LOG:NFLOG</emphasis>[(<replaceable>nflog-parameters</replaceable>)],
|
LOG:NFLOG</emphasis>[(<replaceable>nflog-parameters</replaceable>)],
|
||||||
except that the log level is not changed when this ACTION is
|
except that the log level is not changed when this ACTION is
|
||||||
used in an action or macro and the invocation of that action
|
used in an action or macro and the invocation of that action
|
||||||
@@ -1636,7 +1658,7 @@
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><emphasis role="bold">route</emphasis>, <emphasis
|
<term><emphasis role="bold">route</emphasis>, <emphasis
|
||||||
role="bold">ipv6-route</emphasis> or <emphasis
|
role="bold">ipv6-route</emphasis> or <emphasis
|
||||||
role="bold">41</emphasis></term>
|
role="bold">43</emphasis></term>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>IPv6 Route extension header.</para>
|
<para>IPv6 Route extension header.</para>
|
||||||
|
@@ -2506,6 +2506,20 @@ INLINE - - - ; -j REJECT
|
|||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><emphasis role="bold">VERBOSE_MESSAGES=</emphasis>[<emphasis
|
||||||
|
role="bold">Yes</emphasis>|<emphasis role="bold">No</emphasis>]</term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Added in Shorewall 5.0.9. When Yes (the default), messages
|
||||||
|
produced by the ?INFO and ?WARNING directives include the filename
|
||||||
|
and linenumber of the directive. When set to No, that additional
|
||||||
|
information is omitted. The setting may be overridden on a directive
|
||||||
|
by directive basis by following ?INFO or ?WARNING with '!' (no
|
||||||
|
intervening white space).</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><emphasis
|
<term><emphasis
|
||||||
role="bold">VERBOSITY=</emphasis>[<emphasis>number</emphasis>]</term>
|
role="bold">VERBOSITY=</emphasis>[<emphasis>number</emphasis>]</term>
|
||||||
|
@@ -74,7 +74,7 @@
|
|||||||
<section>
|
<section>
|
||||||
<title>Documentation for Earlier Versions</title>
|
<title>Documentation for Earlier Versions</title>
|
||||||
|
|
||||||
<para><ulink url="4.2/Documentation_Index.html">Shorewall 4.4/4.6
|
<para><ulink url="4.6/Documentation_Index.html">Shorewall 4.4/4.6
|
||||||
Documentation</ulink></para>
|
Documentation</ulink></para>
|
||||||
|
|
||||||
<para><ulink url="4.2/Documentation_Index.html">Shorewall 4.0/4.2
|
<para><ulink url="4.2/Documentation_Index.html">Shorewall 4.0/4.2
|
||||||
|
@@ -95,6 +95,11 @@ rsyncok eth1:<emphasis role="bold">dynamic</emphasis></programlisting>
|
|||||||
<para>When the <emphasis role="bold">dynamic_shared</emphasis> option is
|
<para>When the <emphasis role="bold">dynamic_shared</emphasis> option is
|
||||||
specified, a single ipset is created; the ipset has the same name as the
|
specified, a single ipset is created; the ipset has the same name as the
|
||||||
zone.</para>
|
zone.</para>
|
||||||
|
|
||||||
|
<para>In the above example, <emphasis role="bold">rsyncok</emphasis> is
|
||||||
|
a sub-zone of the single zone <emphasis role="bold">loc</emphasis>.
|
||||||
|
Making a dynamic zone a sub-zone of multiple other zones is also
|
||||||
|
supported.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="Adding">
|
<section id="Adding">
|
||||||
|
@@ -301,8 +301,8 @@
|
|||||||
|
|
||||||
<para>COMMENT, FORMAT and SECTION Lines now require the leading question
|
<para>COMMENT, FORMAT and SECTION Lines now require the leading question
|
||||||
mark ("?"). In earlier releases, the question mark was optional. The
|
mark ("?"). In earlier releases, the question mark was optional. The
|
||||||
<command>shorewall[6] update -D</command> command will insert the
|
<command>shorewall[6] update -D</command> command in Shorewall 4.6 will
|
||||||
question marks for you.</para>
|
insert the question marks for you.</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -359,7 +359,7 @@
|
|||||||
|
|
||||||
<para>It is strongly recommended that you first upgrade your installation
|
<para>It is strongly recommended that you first upgrade your installation
|
||||||
to a 4.6 release that supports the <option>-A</option> option to the
|
to a 4.6 release that supports the <option>-A</option> option to the
|
||||||
<command>update</command> command; 4.6.13 is preferred.</para>
|
<command>update</command> command; 4.6.13.2 or later is preferred.</para>
|
||||||
|
|
||||||
<para>Once you are on that release, execute the <command>shorewall update
|
<para>Once you are on that release, execute the <command>shorewall update
|
||||||
-A</command> command (and <command>shorewall6 update -A</command> if you
|
-A</command> command (and <command>shorewall6 update -A</command> if you
|
||||||
@@ -374,11 +374,11 @@
|
|||||||
likely won't start or work correctly until you do.</para>
|
likely won't start or work correctly until you do.</para>
|
||||||
|
|
||||||
<para>The <command>update</command> command in Shorewall 5 has many fewer
|
<para>The <command>update</command> command in Shorewall 5 has many fewer
|
||||||
options. The <option>-b</option>, <option>-t</option>, <option>-n</option>
|
options. The <option>-b</option>, <option>-t</option>,
|
||||||
and <option>-s </option>options have been removed -- the updates triggered
|
<option>-n</option>, <option>-D</option> and <option>-s </option>options
|
||||||
by those options are now performed unconditionally. The <option>-i
|
have been removed -- the updates triggered by those options are now
|
||||||
</option>and <option>-A </option>options have been retained - both enable
|
performed unconditionally. The <option>-i </option>and <option>-A
|
||||||
checking for issues that could result if INLINE_MATCHES were to be set to
|
</option>options have been retained - both enable checking for issues that
|
||||||
Yes.</para>
|
could result if INLINE_MATCHES were to be set to Yes.</para>
|
||||||
</section>
|
</section>
|
||||||
</article>
|
</article>
|
||||||
|
@@ -48,7 +48,7 @@
|
|||||||
<section id="Intro">
|
<section id="Intro">
|
||||||
<title>Introduction</title>
|
<title>Introduction</title>
|
||||||
|
|
||||||
<para>Shorewall supports two different types of blackliisting; rule-based,
|
<para>Shorewall supports two different types of blacklisting; rule-based,
|
||||||
static and dynamic. The BLACKLIST option in /etc/shorewall/shorewall.conf
|
static and dynamic. The BLACKLIST option in /etc/shorewall/shorewall.conf
|
||||||
controls the degree of blacklist filtering.</para>
|
controls the degree of blacklist filtering.</para>
|
||||||
|
|
||||||
|
@@ -293,7 +293,7 @@ gateway:/etc/shorewall# </programl
|
|||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>The first number specifies the netlink group (0-32). If
|
<para>The first number specifies the netlink group (0-65535). If
|
||||||
omitted (e.g., NFLOG(,0,10)) then a value of 0 is assumed.</para>
|
omitted (e.g., NFLOG(,0,10)) then a value of 0 is assumed.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user