my $vmid = $param->{vmid};
my $netid = $param->{netid};
- my $conf = PVE::QemuServer::load_config($vmid);
-
- foreach my $opt (keys %$conf) {
- next if $opt !~ m/^net(\d+)$/;
- my $net = PVE::QemuServer::parse_net($conf->{$opt});
- next if !$net;
- next if $netid && $opt != $netid;
- PVE::Firewall::generate_tap_rules($net, $opt, $vmid);
- }
-
- return undef;
+ my $code = sub {
+ my $conf = PVE::QemuServer::load_config($vmid);
+
+ foreach my $opt (keys %$conf) {
+ next if $opt !~ m/^net(\d+)$/;
+ my $net = PVE::QemuServer::parse_net($conf->{$opt});
+ next if !$net;
+ next if $netid && $opt != $netid;
+ PVE::Firewall::generate_tap_rules($net, $opt, $vmid);
+ }
+ };
+
+ PVE::Firewall::run_locked($code);
+
+ return undef;
}});
__PACKAGE__->register_method({
my $vmid = $param->{vmid};
my $netid = $param->{netid};
- my $conf = PVE::QemuServer::load_config($vmid);
- foreach my $opt (keys %$conf) {
- next if $opt !~ m/^net(\d+)$/;
- my $net = PVE::QemuServer::parse_net($conf->{$opt});
- next if !$net;
- next if $netid && $opt != $netid;
- PVE::Firewall::flush_tap_rules($net, $opt, $vmid);
- }
+ my $code = sub {
+ my $conf = PVE::QemuServer::load_config($vmid);
+
+ foreach my $opt (keys %$conf) {
+ next if $opt !~ m/^net(\d+)$/;
+ my $net = PVE::QemuServer::parse_net($conf->{$opt});
+ next if !$net;
+ next if $netid && $opt != $netid;
+ PVE::Firewall::flush_tap_rules($net, $opt, $vmid);
+ }
+ };
+
+ PVE::Firewall::run_locked($code);
return undef;
}});
code => sub {
my ($param) = @_;
- my $group = $param->{securitygroup};
- PVE::Firewall::enable_group_rules($group);
+ my $code = sub {
+ my $group = $param->{securitygroup};
+ PVE::Firewall::enable_group_rules($group);
+ };
+ PVE::Firewall::run_locked($code);
+
return undef;
}});
code => sub {
my ($param) = @_;
- my $group = $param->{securitygroup};
- PVE::Firewall::disable_group_rules($group);
+ my $code = sub {
+ my $group = $param->{securitygroup};
+ PVE::Firewall::disable_group_rules($group);
+ };
+
+ PVE::Firewall::run_locked($code);
return undef;
}});
code => sub {
my ($param) = @_;
- PVE::Firewall::enablehostfw();
+ my $code = sub {
+ PVE::Firewall::enablehostfw();
+ };
+
+ PVE::Firewall::run_locked($code);
return undef;
}});
code => sub {
my ($param) = @_;
- PVE::Firewall::disablehostfw();
+ my $code = sub {
+ PVE::Firewall::disablehostfw();
+ };
+
+ PVE::Firewall::run_locked($code);
return undef;
}});
code => sub {
my ($param) = @_;
- PVE::Firewall::compile();
+ my $code = sub {
+ PVE::Firewall::compile();
+ };
+
+ PVE::Firewall::run_locked($code);
return undef;
}});
code => sub {
my ($param) = @_;
- PVE::Firewall::compile_and_start();
+ my $code = sub {
+ PVE::Firewall::compile_and_start();
+ };
+
+ PVE::Firewall::run_locked($code);
return undef;
}});
code => sub {
my ($param) = @_;
- die "implement me";
+ my $code = sub {
+ die "implement me";
+ };
+
+ PVE::Firewall::run_locked($code);
return undef;
}});