Only configure DHCP for real interfaces

Updates the generate-interfaces-file.sh script in
the dhcp-all-interfaces element so that we only
add interfaces that have real MAC addresses.

The generate-interfaces-file.sh script is run early enough
in the boot process (before OVS is initialized) that this
isn't usually a problem unless you execute it manually by hand
after booting. Then you'll end up with network/DHCP
configs for all of your OVS bridges, etc. This
patch avoids configuring all of the virtual interfaces
which have generated MAC addresses.

Change-Id: I7a705084aa5b11305ac0ec5ca37fd2e87a2ae8b7
Closes-bug: 1239479
This commit is contained in:
Dan Prince 2014-01-21 15:58:45 -05:00
parent 1e04079d4f
commit f58f859303
2 changed files with 7 additions and 3 deletions

View File

@ -3,8 +3,8 @@ Autodetect network interfaces during boot and configure them for DHCP
The rationale for this is that we are likely to require multiple The rationale for this is that we are likely to require multiple
network interfaces for use cases such as baremetal and there is no way network interfaces for use cases such as baremetal and there is no way
to know ahead of time which one is which, so we will simply run a to know ahead of time which one is which, so we will simply run a
DHCP client on all interfaces (except lo) that are visible on the first DHCP client on all interfaces with real MAC addresses (except lo) that
boot. are visible on the first boot.
The script /usr/local/sbin/generate-interfaces-file.sh will be called The script /usr/local/sbin/generate-interfaces-file.sh will be called
early in each boot and will scan available network interfaces and early in each boot and will scan available network interfaces and

View File

@ -51,10 +51,14 @@ function disable_interface() {
} }
for interface in $(ls /sys/class/net | grep -v ^lo$) ; do for interface in $(ls /sys/class/net | grep -v ^lo$) ; do
MAC_ADDR_TYPE="$(cat /sys/class/net/${interface}/addr_assign_type)"
echo -n "Inspecting interface: $interface..." echo -n "Inspecting interface: $interface..."
if ifquery $interface >/dev/null 2>&1 ; then if ifquery $interface >/dev/null 2>&1 ; then
echo "Has config, skipping." echo "Has config, skipping."
else elif [ "$MAC_ADDR_TYPE" != "0" ]; then
echo "Device has generated MAC, skipping."
else
ip link set dev $interface up >/dev/null 2>&1 ip link set dev $interface up >/dev/null 2>&1
HAS_LINK="$(get_if_link $interface)" HAS_LINK="$(get_if_link $interface)"