blob: 25d4363e2ecf49b9f894da0d75c6a6a2fd3ae084 [file] [log] [blame]
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import logging
import re
import rf_common
from autotest_lib.client.common_lib import error
from autotest_lib.client.bin import utils
from cros.factory.utils import net_utils
def SetEthernetIp(ip, interface=None):
'''Sets the IP address for Ethernet.
The address is set only if the interface does not already have an
assigned IP address. The interface will be automatically assigned by
Connection Manager if None is given.
'''
interface = interface or net_utils.FindUsableEthDevice()
if not interface:
raise error.TestError('No Ethernet interface available')
utils.system('ifconfig %s up' % interface)
ip_output = utils.system_output(
'ip addr show dev %s' % interface)
match = re.search('^\s+inet ([.0-9]+)', ip_output, re.MULTILINE)
if match:
logging.info('Not setting IP address for interface %s: '
'already set to %s' % (interface, match.group(1)))
return
utils.system('ifconfig %s %s' % (interface, ip))
def IsInRange(observed, min, max):
'''Returns True if min <= observed <= max.
If either min or max is None, then the comparison will always succeed.
'''
if min and observed < min:
return False
if max and observed > max:
return False
return True