mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 15:27:47 +00:00
Generate a MAC when loading a config instead of package update
Partially reverts commit 5754dbd
.
The code in the specfile adds a MAC address to every <bridge>,
even for <forward mode='bridge'> for which we don't support
changing MAC addresses.
Remove it completely. For new networks, we have been adding
MAC addresses on definition/creation since the commit mentioned above.
For existing networks (pre-0.9.0), the MAC is added by this commit.
https://bugzilla.redhat.com/show_bug.cgi?id=1156367
This commit is contained in:
parent
c9c7a2bd96
commit
a47ae7c004
@ -1643,48 +1643,6 @@ exit 0
|
|||||||
|
|
||||||
%post daemon
|
%post daemon
|
||||||
|
|
||||||
%if %{with_network}
|
|
||||||
# All newly defined networks will have a mac address for the bridge
|
|
||||||
# auto-generated, but networks already existing at the time of upgrade
|
|
||||||
# will not. We need to go through all the network configs, look for
|
|
||||||
# those that don't have a mac address, and add one.
|
|
||||||
|
|
||||||
network_files=$( (cd %{_localstatedir}/lib/libvirt/network && \
|
|
||||||
grep -L "mac address" *.xml; \
|
|
||||||
cd %{_sysconfdir}/libvirt/qemu/networks && \
|
|
||||||
grep -L "mac address" *.xml) 2>/dev/null \
|
|
||||||
| sort -u)
|
|
||||||
|
|
||||||
for file in $network_files
|
|
||||||
do
|
|
||||||
# each file exists in either the config or state directory (or both) and
|
|
||||||
# does not have a mac address specified in either. We add the same mac
|
|
||||||
# address to both files (or just one, if the other isn't there)
|
|
||||||
|
|
||||||
mac4=`printf '%X' $(($RANDOM % 256))`
|
|
||||||
mac5=`printf '%X' $(($RANDOM % 256))`
|
|
||||||
mac6=`printf '%X' $(($RANDOM % 256))`
|
|
||||||
for dir in %{_localstatedir}/lib/libvirt/network \
|
|
||||||
%{_sysconfdir}/libvirt/qemu/networks
|
|
||||||
do
|
|
||||||
if test -f $dir/$file
|
|
||||||
then
|
|
||||||
sed -i.orig -e \
|
|
||||||
"s|\(<bridge.*$\)|\0\n <mac address='52:54:00:$mac4:$mac5:$mac6'/>|" \
|
|
||||||
$dir/$file
|
|
||||||
if test $? != 0
|
|
||||||
then
|
|
||||||
echo "failed to add <mac address='52:54:00:$mac4:$mac5:$mac6'/>" \
|
|
||||||
"to $dir/$file"
|
|
||||||
mv -f $dir/$file.orig $dir/$file
|
|
||||||
else
|
|
||||||
rm -f $dir/$file.orig
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%if %{with_systemd}
|
%if %{with_systemd}
|
||||||
%if %{with_systemd_macros}
|
%if %{with_systemd_macros}
|
||||||
%systemd_post virtlockd.socket libvirtd.service libvirtd.socket
|
%systemd_post virtlockd.socket libvirtd.service libvirtd.socket
|
||||||
|
@ -3139,6 +3139,10 @@ virNetworkObjPtr virNetworkLoadConfig(virNetworkObjListPtr nets,
|
|||||||
def->forward.type == VIR_NETWORK_FORWARD_NAT ||
|
def->forward.type == VIR_NETWORK_FORWARD_NAT ||
|
||||||
def->forward.type == VIR_NETWORK_FORWARD_ROUTE) {
|
def->forward.type == VIR_NETWORK_FORWARD_ROUTE) {
|
||||||
|
|
||||||
|
if (!def->mac_specified) {
|
||||||
|
virNetworkSetBridgeMacAddr(def);
|
||||||
|
virNetworkSaveConfig(configDir, def);
|
||||||
|
}
|
||||||
/* Generate a bridge if none is specified, but don't check for collisions
|
/* Generate a bridge if none is specified, but don't check for collisions
|
||||||
* if a bridge is hardcoded, so the network is at least defined.
|
* if a bridge is hardcoded, so the network is at least defined.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user