Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pve-manager
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
pve-manager
Commits
55e1d872
Commit
55e1d872
authored
Oct 24, 2011
by
Dietmar Maurer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
openvz: always generate host_mac and host_ifname
Network does not work without.
parent
8304f538
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
4 deletions
+29
-4
OpenVZ.pm
PVE/OpenVZ.pm
+29
-4
No files found.
PVE/OpenVZ.pm
View file @
55e1d872
...
@@ -445,20 +445,38 @@ sub read_global_vz_config {
...
@@ -445,20 +445,38 @@ sub read_global_vz_config {
};
};
sub
parse_netif
{
sub
parse_netif
{
my
(
$data
)
=
@_
;
my
(
$data
,
$vmid
)
=
@_
;
my
$res
=
{};
my
$res
=
{};
return
$res
if
!
$data
;
return
$res
if
!
$data
;
my
$host_ifnames
=
{};
my
$find_next_hostif_name
=
sub
{
for
(
my
$i
=
0
;
$i
<
100
;
$i
++
)
{
my
$name
=
"
veth
${vmid}
.
$i
";
if
(
!
$host_ifnames
->
{
$name
})
{
$host_ifnames
->
{
$name
}
=
1
;
return
$name
;
}
}
die
"
unable to find free host_ifname
";
# should not happen
};
foreach
my
$iface
(
split
(
/;/
,
$data
))
{
foreach
my
$iface
(
split
(
/;/
,
$data
))
{
my
$d
=
{};
my
$d
=
{};
foreach
my
$pv
(
split
(
/,/
,
$iface
))
{
foreach
my
$pv
(
split
(
/,/
,
$iface
))
{
if
(
$pv
=~
m/^(ifname|mac|bridge|host_ifname|host_mac)=(.+)$/
)
{
if
(
$pv
=~
m/^(ifname|mac|bridge|host_ifname|host_mac)=(.+)$/
)
{
$d
->
{
$1
}
=
$2
;
$d
->
{
$1
}
=
$2
;
if
(
$1
eq
'
host_ifname
')
{
$host_ifnames
->
{
$2
}
=
$1
;
}
}
}
}
}
if
(
$d
->
{
ifname
})
{
if
(
$d
->
{
ifname
})
{
$d
->
{
mac
}
=
PVE::Tools::
random_ether_addr
()
if
!
$d
->
{
mac
};
$d
->
{
mac
}
=
PVE::Tools::
random_ether_addr
()
if
!
$d
->
{
mac
};
$d
->
{
host_mac
}
=
PVE::Tools::
random_ether_addr
()
if
!
$d
->
{
host_mac
};
$d
->
{
raw
}
=
print_netif
(
$d
);
$d
->
{
raw
}
=
print_netif
(
$d
);
$res
->
{
$d
->
{
ifname
}}
=
$d
;
$res
->
{
$d
->
{
ifname
}}
=
$d
;
}
else
{
}
else
{
...
@@ -466,6 +484,13 @@ sub parse_netif {
...
@@ -466,6 +484,13 @@ sub parse_netif {
}
}
}
}
foreach
my
$iface
(
keys
%
$res
)
{
my
$d
=
$res
->
{
$iface
};
if
(
$vmid
&&
!
$d
->
{
host_ifname
})
{
$d
->
{
host_ifname
}
=
&
$find_next_hostif_name
(
$iface
);
}
}
return
$res
;
return
$res
;
}
}
...
@@ -817,7 +842,7 @@ sub create_config_line {
...
@@ -817,7 +842,7 @@ sub create_config_line {
}
}
sub
update_ovz_config
{
sub
update_ovz_config
{
my
(
$veconf
,
$param
)
=
@_
;
my
(
$v
mid
,
$v
econf
,
$param
)
=
@_
;
my
$changes
=
[]
;
my
$changes
=
[]
;
...
@@ -993,9 +1018,9 @@ sub update_ovz_config {
...
@@ -993,9 +1018,9 @@ sub update_ovz_config {
if
(
defined
(
$param
->
{
netif
}))
{
if
(
defined
(
$param
->
{
netif
}))
{
my
$ifaces
=
{};
my
$ifaces
=
{};
if
(
defined
(
$veconf
->
{
netif
})
&&
$veconf
->
{
netif
}
->
{
value
})
{
if
(
defined
(
$veconf
->
{
netif
})
&&
$veconf
->
{
netif
}
->
{
value
})
{
$ifaces
=
parse_netif
(
$veconf
->
{
netif
}
->
{
value
});
$ifaces
=
parse_netif
(
$veconf
->
{
netif
}
->
{
value
}
,
$vmid
);
}
}
my
$newif
=
parse_netif
(
$param
->
{
netif
});
my
$newif
=
parse_netif
(
$param
->
{
netif
}
,
$vmid
);
foreach
my
$ifname
(
sort
keys
%
$ifaces
)
{
foreach
my
$ifname
(
sort
keys
%
$ifaces
)
{
if
(
!
$newif
->
{
$ifname
})
{
if
(
!
$newif
->
{
$ifname
})
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment