CLOUDSTACK-4199: Only use ifdown/ifup for the un-configured eth2

Seems the behavior of ifdown/ifup changed in new version, that it would only
enable the default IP of eth2, regardless we can configure additional ips for
it. So we would always use ifconfig for interface control whenever
possible(a.k.a eth2 already got ip addresses).

When VR is booting up, ipassoc command hasn't been delivered, it's possible that
eth2 doesn't have any ip address, then ifconfig would fail because it doesn't
know how to find the ip for eth2. So in this only case, we would use ifdown/ifup
to set the ip address according to /etc/network/interfaces.

It can potentially racy againest ipassoc command, but biglock should prevent
racy condition from happening.
This commit is contained in:
Sheng Yang 2013-08-22 17:45:12 -07:00
parent ce9048c172
commit e515acd7be
1 changed files with 7 additions and 3 deletions

View File

@ -16,14 +16,18 @@
# specific language governing permissions and limitations
# under the License.
ip link|grep BROADCAST|grep -v eth0|grep -v eth1|cut -d ":" -f 2 > /tmp/iflist
ip addr show eth2 | grep "inet" 2>&1 > /dev/null
is_init=$?
set -e
ip link|grep BROADCAST|grep -v eth0|grep -v eth1|cut -d ":" -f 2 > /tmp/iflist
while read i
do
if [ "$i" == "eth2" ]
# if eth2'ip has already been configured, we would use ifconfig rather than ifdown/ifup
if [ "$i" == "eth2" -a "$is_init" != "0" ]
then
ifdown $i --force
ifdown $i
ifup $i
else
ifconfig $i down