]>
Commit | Line | Data |
---|---|---|
208ba94e AD |
1 | #!/usr/bin/perl |
2 | ||
3 | use strict; | |
4 | use warnings; | |
5 | use PVE::QemuServer; | |
6 | use PVE::Tools qw(run_command); | |
7 | use PVE::Network; | |
8 | ||
9 | my $iface = shift; | |
10 | ||
11 | die "no interface specified\n" if !$iface; | |
12 | ||
13 | die "got strange interface name '$iface'\n" | |
14 | if $iface !~ m/^tap(\d+)i(\d+)$/; | |
15 | ||
16 | my $vmid = $1; | |
17 | my $netid = "net$2"; | |
18 | ||
19 | my $conf = PVE::QemuServer::load_config($vmid); | |
20 | ||
21 | my $netconf = $conf->{$netid}; | |
22 | ||
23 | $netconf = $conf->{pending}->{$netid} if defined($conf->{pending}->{$netid}); | |
24 | ||
25 | die "unable to get network config '$netid'\n" | |
26 | if !defined($netconf); | |
27 | ||
28 | my $net = PVE::QemuServer::parse_net($netconf); | |
29 | die "unable to parse network config '$netid'\n" if !$net; | |
30 | ||
31 | PVE::Network::tap_create($iface, $net->{bridge}); | |
32 | ||
33 | # if ovs is under this bridge all traffic control settings will be flushed. | |
34 | # so we need to call tap_rate_limit after tap_plug | |
35 | PVE::Network::tap_plug($iface, $net->{bridge}, $net->{tag}, $net->{firewall}); | |
36 | ||
37 | PVE::Network::tap_rate_limit($iface, $net->{rate}) if $net->{rate}; | |
38 | ||
39 | exit 0; |