-sub parse_vm_fw_rules {
- my ($filename, $fh, $cluster_conf, $rule_env, $verbose) = @_;
-
- my $res = {
- rules => [],
- options => {},
- aliases => {},
- };
-
- my $section;
-
- while (defined(my $line = <$fh>)) {
- next if $line =~ m/^#/;
- next if $line =~ m/^\s*$/;
-
- my $linenr = $fh->input_line_number();
- my $prefix = "$filename (line $linenr)";
-
- if ($line =~ m/^\[(\S+)\]\s*$/i) {
- $section = lc($1);
- warn "$prefix: ignore unknown section '$section'\n" if !$res->{$section};
- next;
- }
- if (!$section) {
- warn "$prefix: skip line - no section";
- next;
- }
-
- next if !$res->{$section}; # skip undefined section
-
- if ($section eq 'options') {
- eval {
- my ($opt, $value) = parse_vmfw_option($line);
- $res->{options}->{$opt} = $value;
- };
- warn "$prefix: $@" if $@;
- next;
- }
-
- if ($section eq 'aliases') {
- eval {
- my $data = parse_alias($line);
- $res->{aliases}->{lc($data->{name})} = $data;
- };
- warn "$prefix: $@" if $@;
- next;
- }
-
- my $rule;
- eval { $rule = parse_fw_rule($prefix, $line, $cluster_conf, $res, $rule_env, $verbose); };
- if (my $err = $@) {
- warn "$prefix: $err";
- next;
- }
-
- push @{$res->{$section}}, $rule;
- }
-
- return $res;
-}
-
-sub parse_host_fw_rules {
- my ($filename, $fh, $cluster_conf, $verbose) = @_;
-
- my $res = { rules => [], options => {}};
-
- my $section;
-
- while (defined(my $line = <$fh>)) {
- next if $line =~ m/^#/;
- next if $line =~ m/^\s*$/;
-
- my $linenr = $fh->input_line_number();
- my $prefix = "$filename (line $linenr)";
-
- if ($line =~ m/^\[(\S+)\]\s*$/i) {
- $section = lc($1);
- warn "$prefix: ignore unknown section '$section'\n" if !$res->{$section};
- next;
- }
- if (!$section) {
- warn "$prefix: skip line - no section";
- next;
- }
-
- next if !$res->{$section}; # skip undefined section
-
- if ($section eq 'options') {
- eval {
- my ($opt, $value) = parse_hostfw_option($line);
- $res->{options}->{$opt} = $value;
- };
- warn "$prefix: $@" if $@;
- next;
- }
-
- my $rule;
- eval { $rule = parse_fw_rule($prefix, $line, $cluster_conf, $res, 'host', $verbose); };
- if (my $err = $@) {
- warn "$prefix: $err";
- next;
- }
-
- push @{$res->{$section}}, $rule;
- }
-
- return $res;
-}
-
-sub parse_cluster_fw_rules {
- my ($filename, $fh, $verbose) = @_;