• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/python
2#
3# Copyright (c) 2010 The Chromium Authors. All rights reserved.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7__author__ = 'kdlucas@chromium.org (Kelly Lucas)'
8
9import fcntl, socket, struct
10
11from autotest_lib.client.bin import test
12from autotest_lib.client.common_lib import error
13
14
15class network_WlanHasIP(test.test):
16    """
17    Ensure wlan0 has a valid IP address.
18    """
19    version = 1
20
21    def get_ip(self, device):
22        """
23        Get the ip address of device. If no IP address is found it will return
24        None, since socket.inet_ntoa will fail with IOError.
25
26        Args:
27            device: string, should be a valid network device name.
28        Returns:
29            string, represents the IP address.
30        """
31
32        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
33        try:
34            ipaddress = socket.inet_ntoa(fcntl.ioctl(
35                                         s.fileno(),
36                                         0x8915, # SIOCGIFADDR
37                                         struct.pack('256s', device[:15])
38                                         )[20:24])
39        except IOError:
40            ipaddress = None
41
42        return ipaddress
43
44
45    def run_once(self):
46        WDEV = 'wlan0'
47        wlanip = self.get_ip(WDEV)
48
49        if not wlanip:
50            raise error.TestFail('%s does not have an assigned IP!' % WDEV)
51