X-Git-Url: https://git.proxmox.com/?p=pve-firewall.git;a=blobdiff_plain;f=src%2FPVE%2FFirewall.pm;h=dd6ec61a38e5d02a9dd7e695a4c023f97a8782eb;hp=8ddd4687998ff699d2e238a51f22ad88c7b29b82;hb=35f0c37e4dfcc017ca3446971efcb5f78155a7e7;hpb=12f3796ee9543697fb0d5568eb5ce4e1c1154942 diff --git a/src/PVE/Firewall.pm b/src/PVE/Firewall.pm index 8ddd468..dd6ec61 100644 --- a/src/PVE/Firewall.pm +++ b/src/PVE/Firewall.pm @@ -56,6 +56,13 @@ PVE::JSONSchema::register_standard_option('ipset-name', { maxLength => 20, }); +PVE::JSONSchema::register_standard_option('pve-fw-loglevel' => { + description => "Log level.", + type => 'string', + enum => ['emerg', 'alert', 'crit', 'err', 'warning', 'notice', 'info', 'debug', 'nolog'], + optional => 1, +}); + my $security_group_pattern = '[A-Za-z][A-Za-z0-9\-\_]+'; PVE::JSONSchema::register_standard_option('pve-security-group-name', { @@ -1218,7 +1225,7 @@ sub ruleset_generate_cmdstr { push @cmd, "-m iprange --dst-range $dest"; } else { - push @cmd, "-s $dest"; + push @cmd, "-d $dest"; } } @@ -1634,6 +1641,7 @@ sub enable_host_firewall { my $options = $hostfw_conf->{options}; my $cluster_options = $cluster_conf->{options}; my $rules = $hostfw_conf->{rules}; + my $cluster_rules = $cluster_conf->{rules}; # host inbound firewall my $chain = "PVEFW-HOST-IN"; @@ -1659,7 +1667,8 @@ sub enable_host_firewall { # we use RETURN because we need to check also tap rules my $accept_action = 'RETURN'; - foreach my $rule (@$rules) { + # add host rules first, so that cluster wide rules can be overwritten + foreach my $rule (@$rules, @$cluster_rules) { next if $rule->{type} ne 'in'; ruleset_generate_rule($ruleset, $chain, $rule, { ACCEPT => $accept_action, REJECT => "PVEFW-reject" }, undef, $cluster_conf); } @@ -1684,7 +1693,8 @@ sub enable_host_firewall { # we use RETURN because we may want to check other thigs later $accept_action = 'RETURN'; - foreach my $rule (@$rules) { + # add host rules first, so that cluster wide rules can be overwritten + foreach my $rule (@$rules, @$cluster_rules) { next if $rule->{type} ne 'out'; ruleset_generate_rule($ruleset, $chain, $rule, { ACCEPT => $accept_action, REJECT => "PVEFW-reject" }, undef, $cluster_conf); }