Exemplo n.º 1
0
    def _functions_accepting_devnames(self, devname):
        self.assertIsString(devname)

        scraped = ifconfig.get_device_by_name(devname)

        try:
            broadcast = ethtool.get_broadcast(devname)
        except (OSError, IOError):
            # Some devices might end up with
            # [Errno 99] Cannot assign requested address
            # That's IOError on 2.7, OSError on 3
            assignable = False
        else:
            assignable = True
            self.assertIsString(broadcast)

            # Broadcast is optional in ifconfig output
            if scraped.broadcast:
                self.assertEqualIpv4Str(broadcast, scraped.broadcast)

        self.assertIsStringExceptForLoopback(
            ethtool.get_businfo, devname, '[Errno 95] Operation not '
            'supported')

        self.assertIsInt(ethtool.get_flags(devname))
        # flagsint cannot be obtained from old ifconfig format
        if not ifconfig.oldFormat:
            self.assertEqual(ethtool.get_flags(devname), scraped.flagsint)
        self.assertIsInt(ethtool.get_gso(devname))
        self.assertIsInt(ethtool.get_gro(devname))
        self.assertIsString(ethtool.get_hwaddr(devname))
        self.assertEqualHwAddr(ethtool.get_hwaddr(devname), scraped.hwaddr)

        if assignable:
            self.assertIsString(ethtool.get_ipaddr(devname))
            self.assertEqual(ethtool.get_ipaddr(devname), scraped.inet)

        self.assertIsStringExceptForLoopback(
            ethtool.get_module, devname, '[Errno 95] Operation not '
            'supported')

        if assignable:
            self.assertIsString(ethtool.get_netmask(devname))
            self.assertEqual(ethtool.get_netmask(devname), scraped.netmask)

        # Operation is not supported only on loopback device
        if devname == 'lo':
            self.assertRaisesIOError(ethtool.get_ringparam, (devname, ),
                                     '[Errno 95] Operation not supported')

        self.assertIsInt(ethtool.get_sg(devname))

        try:
            self.assertIsInt(ethtool.get_ufo(devname))
        except (OSError, IOError):
            # This test may fail due to insufficient privileges
            # That's IOError on 2.7, OSError (PermissionError) on 3
            pass

        self.assertIsInt(ethtool.get_tso(devname))
Exemplo n.º 2
0
    def testTogglePromisc(self):
        tc.set_promisc(self._bridge.devName, True)
        self.assertTrue(ethtool.get_flags(self._bridge.devName) &
                        ethtool.IFF_PROMISC,
                        "Could not enable promiscuous mode.")

        tc.set_promisc(self._bridge.devName, False)
        self.assertFalse(ethtool.get_flags(self._bridge.devName) &
                         ethtool.IFF_PROMISC,
                         "Could not disable promiscuous mode.")
Exemplo n.º 3
0
    def testTogglePromisc(self):
        tc.set_promisc(self._bridge.devName, True)
        self.assertTrue(ethtool.get_flags(self._bridge.devName) &
                        ethtool.IFF_PROMISC,
                        "Could not enable promiscuous mode.")

        tc.set_promisc(self._bridge.devName, False)
        self.assertFalse(ethtool.get_flags(self._bridge.devName) &
                         ethtool.IFF_PROMISC,
                         "Could not disable promiscuous mode.")
Exemplo n.º 4
0
    def lookup(self, name):
        if encode_value(name) not in map(encode_value, ethtool.get_devices()):
            raise NotFoundError("KCHIFACE0001E", {'name': name})

        ipaddr = ''
        netmask = ''
        module = 'unknown'
        status = 'down'
        try:
            ipaddr = ethtool.get_ipaddr(encode_value(name))
            netmask = ethtool.get_netmask(encode_value(name))
            module = ethtool.get_module(encode_value(name))

            flags = ethtool.get_flags(encode_value(name))
            status = 'up' if flags & (ethtool.IFF_RUNNING | ethtool.IFF_UP) \
                     else 'down'
        except IOError:
            pass

        iface_type = netinfo.get_interface_type(name)

        return {'name': name,
                'type': iface_type,
                'status': status,
                'ipaddr': ipaddr,
                'netmask': netmask,
                'module': module}
Exemplo n.º 5
0
    def lookup(self, name):
        if encode_value(name) not in map(encode_value, ethtool.get_devices()):
            raise NotFoundError('KCHIFACE0001E', {'name': name})

        ipaddr = ''
        netmask = ''
        module = 'unknown'
        status = 'down'
        try:
            ipaddr = ethtool.get_ipaddr(encode_value(name))
            netmask = ethtool.get_netmask(encode_value(name))
            module = ethtool.get_module(encode_value(name))

            flags = ethtool.get_flags(encode_value(name))
            status = 'up' if flags & (ethtool.IFF_RUNNING
                                      | ethtool.IFF_UP) else 'down'
        except IOError:
            pass

        iface_type = netinfo.get_interface_type(name)

        return {
            'name': name,
            'type': iface_type,
            'status': status,
            'ipaddr': ipaddr,
            'netmask': netmask,
            'module': module,
        }
Exemplo n.º 6
0
def GetInfoString():
    active_interfaces = ethtool.get_active_devices()
    all_interfaces = GetInterfaceList()

    for i in active_interfaces:
        if ethtool.get_flags('%s' % i) & ethtool.IFF_POINTOPOINT:
            active_interfaces.remove(i)

    ret = ''

    for inter in active_interfaces:
        if inter in all_interfaces:
            all_interfaces.remove(inter)
        else:
            continue
        t = 'Static'
        if IsInterfaceDHCP(inter):
            t = 'DHCP'
        ret = ret + '     %s - Active, %s\n' % (inter, t)
        ret = ret + '     IP: %s\n' % ethtool.get_ipaddr(inter)
        ret = ret + '     Netmask: %s\n' % ethtool.get_netmask(inter)
        ret = ret + '     HWAddr: %s\n' % ethtool.get_hwaddr(inter)
        
    for inter in all_interfaces:
        t = 'Static'
        if IsInterfaceDHCP(inter):
            t = 'DHCP'
        ret = ret + '     %s - Inactive, %s\n' % (inter, t)
        if t == 'Static':
            ip, mask, gw, dns = GetInterfaceConf(inter)
            ret = ret + '     IP: %s\n' % ip
            ret = ret + '     Netmask: %s\n' % mask
        ret = ret + '     HWAddr: %s\n' % ethtool.get_hwaddr(inter)
        
    return ret
Exemplo n.º 7
0
def set_promisc(dev, on=True):
    flags = ethtool.get_flags(dev)

    if bool(flags & ethtool.IFF_PROMISC) != on:
        if on:
            flags |= ethtool.IFF_PROMISC
        else:
            flags &= ~ethtool.IFF_PROMISC

        set_flags(dev, flags)
Exemplo n.º 8
0
def set_promisc(dev, on=True):
    flags = ethtool.get_flags(dev)

    if bool(flags & ethtool.IFF_PROMISC) != on:
        if on:
            flags |= ethtool.IFF_PROMISC
        else:
            flags &= ~ethtool.IFF_PROMISC

        set_flags(dev, flags)
Exemplo n.º 9
0
    def _functions_accepting_devnames(self, devname):
        self.assertIsString(devname)

        scraped = ifconfig.get_device_by_name(devname)

        self.assertIsString(ethtool.get_broadcast(devname))
        self.assertEqualIpv4Str(ethtool.get_broadcast(devname),
                                scraped.broadcast)

        self.assertIsStringExceptForLoopback(
            ethtool.get_businfo, devname, '[Errno 95] Operation not supported')

        # ethtool.get_coalesce(devname)
        # this gives me:
        #   IOError: [Errno 95] Operation not supported
        # on my test box

        self.assertIsInt(ethtool.get_flags(devname))
        # flagsint cannot be obtained from old ifconfig format
        if not ifconfig.oldFormat:
            self.assertEqual(ethtool.get_flags(devname), scraped.flagsint)
        self.assertIsInt(ethtool.get_gso(devname))

        self.assertIsString(ethtool.get_hwaddr(devname))
        self.assertEqualHwAddr(ethtool.get_hwaddr(devname), scraped.hwaddr)
        self.assertIsString(ethtool.get_ipaddr(devname))
        self.assertEqual(ethtool.get_ipaddr(devname), scraped.inet)

        self.assertIsStringExceptForLoopback(
            ethtool.get_module, devname, '[Errno 95] Operation not supported')

        self.assertIsString(ethtool.get_netmask(devname))
        self.assertEqual(ethtool.get_netmask(devname), scraped.netmask)

        #self.assertRaisesIOError(ethtool.get_ringparam, (devname, ),
        #                         '[Errno 95] Operation not supported')

        # Disabling until BZ#703089 is investigated
        #self.assertIsInt(ethtool.get_sg(devname))
        #self.assertIsInt(ethtool.get_ufo(devname))

        self.assertIsInt(ethtool.get_tso(devname))
Exemplo n.º 10
0
    def readIfaceOperstate(self, ifid):
        """
        Return the operational state of the interface.

        :returns: ``'up'`` if interface is up. ``'down'`` or ``0`` id it's down.
        """
        try:
            flags = ethtool.get_flags(ifid)
        except IOError:
            return '0'
        return 'up' if flags & ethtool.IFF_RUNNING else 'down'
Exemplo n.º 11
0
    def __getattr__(self, attr):
        flag = "IFF_%s" % attr[3:].upper()
        if attr.startswith("is_") and flag in self.IFF_LIST:
            import ethtool
            return ethtool.get_flags(self.name) & getattr(ethtool, flag) > 0

        if hasattr(self._info, attr):
            return getattr(self._info, attr)
        else:
            raise AttributeError("'%s' object has no attribute '%s'" %
                                 (self.__class__.__name__, attr))
Exemplo n.º 12
0
    def readIfaceOperstate(self, ifid):
        """
        Return the operational state of the interface.

        :returns: ``'up'`` if interface is up. ``'down'`` or ``0`` id it's down.
        """
        try:
            flags = ethtool.get_flags(ifid)
        except IOError:
            return '0'
        return 'up' if flags & ethtool.IFF_RUNNING else 'down'
Exemplo n.º 13
0
def operstate(dev):
    """Get the operstate status of a device.

    Args:
        dev (str): name of the device.

    Returns:
        str: "up" or "down"

    """
    flags = ethtool.get_flags(encode_value(dev))
    return 'up' if flags & (ethtool.IFF_RUNNING | ethtool.IFF_UP) else 'down'
Exemplo n.º 14
0
def operstate(dev):
    """Get the operstate status of a device.

    Args:
        dev (str): name of the device.

    Returns:
        str: "up" or "down"

    """
    flags = ethtool.get_flags(encode_value(dev))
    return 'up' if flags & (ethtool.IFF_RUNNING | ethtool.IFF_UP) else 'down'
Exemplo n.º 15
0
    def _functions_accepting_devnames(self, devname):
        self.assertIsString(devname)

        scraped = ifconfig.get_device_by_name(devname)

        self.assertIsString(ethtool.get_broadcast(devname))
        self.assertEqualIpv4Str(ethtool.get_broadcast(devname), scraped.broadcast)

        self.assertIsStringExceptForLoopback(ethtool.get_businfo, devname, "[Errno 95] Operation not supported")

        # ethtool.get_coalesce(devname)
        # this gives me:
        #   IOError: [Errno 95] Operation not supported
        # on my test box

        self.assertIsInt(ethtool.get_flags(devname))
        # flagsint cannot be obtained from old ifconfig format
        if not ifconfig.oldFormat:
            self.assertEqual(ethtool.get_flags(devname), scraped.flagsint)
        self.assertIsInt(ethtool.get_gso(devname))

        self.assertIsString(ethtool.get_hwaddr(devname))
        self.assertEqualHwAddr(ethtool.get_hwaddr(devname), scraped.hwaddr)
        self.assertIsString(ethtool.get_ipaddr(devname))
        self.assertEqual(ethtool.get_ipaddr(devname), scraped.inet)

        self.assertIsStringExceptForLoopback(ethtool.get_module, devname, "[Errno 95] Operation not supported")

        self.assertIsString(ethtool.get_netmask(devname))
        self.assertEqual(ethtool.get_netmask(devname), scraped.netmask)

        # self.assertRaisesIOError(ethtool.get_ringparam, (devname, ),
        #                         '[Errno 95] Operation not supported')

        # Disabling until BZ#703089 is investigated
        # self.assertIsInt(ethtool.get_sg(devname))
        # self.assertIsInt(ethtool.get_ufo(devname))

        self.assertIsInt(ethtool.get_tso(devname))
Exemplo n.º 16
0
def getNonLoopbackAddresses():
    devices = ethtool.get_active_devices()
    iplist = []

    for device in devices:
        try:
            flags = ethtool.get_flags(device)
            if flags and not (flags & ethtool.IFF_LOOPBACK):
                iplist.append(ethtool.get_ipaddr(device))
        except IOError as e:
            logging.error("unable to get ipaddr/flags for %s: %s"
                          % (device, e))
    return set(iplist)
Exemplo n.º 17
0
def show_config(device):
    ipaddr = ethtool.get_ipaddr(device)
    netmask = ethtool.get_netmask(device)
    flags = ethtool.get_flags(device)
    print '%-9.9s' % device,
    if not (flags & ethtool.IFF_LOOPBACK):
        print "HWaddr %s" % ethtool.get_hwaddr(device),
    print '''
          inet addr:%s''' % ipaddr,
    if not (flags & (ethtool.IFF_LOOPBACK | ethtool.IFF_POINTOPOINT)):
        print "Bcast:%s" % ethtool.get_broadcast(device),
    print '''  Mask:%s
          %s
''' % (netmask, flags2str(flags))
Exemplo n.º 18
0
def show_config(device):
	ipaddr = ethtool.get_ipaddr(device)
	netmask = ethtool.get_netmask(device)
	flags = ethtool.get_flags(device)
	print '%-9.9s' % device,
	if not (flags & ethtool.IFF_LOOPBACK):
		print "HWaddr %s" % ethtool.get_hwaddr(device),
	print '''
          inet addr:%s''' % ipaddr,
	if not (flags & (ethtool.IFF_LOOPBACK | ethtool.IFF_POINTOPOINT)):
		print "Bcast:%s" % ethtool.get_broadcast(device),
	print '''  Mask:%s
	  %s
''' % (netmask, flags2str(flags))
Exemplo n.º 19
0
 def getAllNetworkInterfaces(self):
     interfaces = list()
     try:
         for dev in ethtool.get_active_devices():
             flags = ethtool.get_flags(dev)
             if not(flags & ethtool.IFF_LOOPBACK):
                 devinfo = ethtool.get_interfaces_info(dev)[0]
                 interfaces.append({ 'name' : dev,
                     'inet' : [ ethtool.get_ipaddr(dev) ],
                     'inet6' : map(lambda ip: ip.address, devinfo.get_ipv6_addresses()),
                     'hw' : ethtool.get_hwaddr(dev) })
     except:
         logging.exception("Error retrieving network interfaces.")
     return interfaces
Exemplo n.º 20
0
def find_suitable_device():
    active_devices = ethtool.get_active_devices()
    for device in active_devices:
        device_flags = ethtool.get_flags(device)
        str_flags = pifc.flags2str(device_flags)
        try:
            wireless_protocol = ethtool.get_wireless_protocol(device)
        except Exception:
            wireless_protocol = None

        if 'UP' in str_flags and 'RUNNING' in str_flags \
                and 'BROADCAST' in str_flags and not wireless_protocol:
            return device

    return None
Exemplo n.º 21
0
def _getNetworkInterfaces(interfaces=()):
    if interfaces:
        devices = interfaces
    else:
        devices = ethtool.get_active_devices()

    info = {}
    for dev in devices:
        try:
            info[dev] = {'ipaddr': ethtool.get_ipaddr(dev),
                         'flags': ethtool.get_flags(dev)}
        except IOError as e:
            logging.error("unable to get ipaddr/flags for %s: %s" % (dev, e))
            info[dev] = {'ipaddr': None,
                         'flags': None}

    return info
Exemplo n.º 22
0
def show_config(device):
	ipaddr = ethtool.get_ipaddr(device)
	netmask = ethtool.get_netmask(device)
	flags = ethtool.get_flags(device)
	print '%-9.9s' % device,
	if not (flags & ethtool.IFF_LOOPBACK):
		print "HWaddr %s" % ethtool.get_hwaddr(device),
	print '''
          inet addr:%s''' % ipaddr,
	if not (flags & (ethtool.IFF_LOOPBACK | ethtool.IFF_POINTOPOINT)):
		print "Bcast:%s" % ethtool.get_broadcast(device),
	print '  Mask:%s' % netmask
	for info in ethtool.get_interfaces_info(device):
		for addr in info.get_ipv6_addresses():
			print ("	  inet6 addr: %s/%s Scope: %s"
			       % (addr.address,
				  addr.netmask,
				  addr.scope))
	print '	  %s' % flags2str(flags)
	print
Exemplo n.º 23
0
    def OnVPN(self, event):
        f = open("/etc/ppp/options.pptp")
        bufs = f.readlines()
        f.close()
        if bufs[-1] == "require-mppe-128\n":
            pass
        else:
            f = open("/etc/ppp/options.pptp", 'a') 
            f.write("require-mppe-128\n")  
            f.close()

        active_devices = ethtool.get_active_devices()

        if 'lo' in active_devices:
            active_devices.remove('lo')

        #if Setting.getVPNStatus().lower() == 'true':
        if len(active_devices) < 2:
            Setting.setVPNStatus('%s' % False)
            Setting.save()
        else:
            for i in active_devices:
                if ethtool.get_flags('%s' % i) & ethtool.IFF_POINTOPOINT:
                    Setting.setVPNStatus('%s' % True)
                    Setting.save()
                    break
                elif i == active_devices[-1]:
                    Setting.setVPNStatus('%s' % False)
                    Setting.save()

        dlg = VPNDialog.VPNDialog(self)

        if Setting.getVPNAuto().lower() == 'true' and Setting.getVPNStatus().lower() == 'false':
            dlg.AutoLogin(event)

        if dlg.ShowModal() == wx.ID_OK:
            dlg.save()

        dlg.Destroy()
Exemplo n.º 24
0
 def _customization(self):
     nics = ethtool.get_devices()
     validValues = []
     enslaved = set()
     interfaces = set()
     for nic in nics:
         try:
             flags = ethtool.get_flags(nic)
             if flags & ethtool.IFF_LOOPBACK:
                 self.logger.debug('Detected loopback device %s' % nic)
             elif ethtool.get_module(nic) == 'bridge':
                 self.logger.debug('Detected bridge device %s' % nic)
                 if os.path.exists('/sys/class/net/%s/brif' % nic):
                     slaves = os.listdir('/sys/class/net/%s/brif' % nic)
                     self.logger.debug(
                         'Detected slaves for device %s: %s' % (
                             nic,
                             ','.join(slaves)
                         )
                     )
                     for iface in slaves:
                         if iface in nics:
                             enslaved.update([iface])
             elif netinfo.isbonding(nic):
                 slaves = netinfo.slaves(nic)
                 if not slaves:
                     self.logger.debug(
                         'Detected bond device %s without slaves' % nic
                     )
                 else:
                     self.logger.debug(
                         'Detected slaves for device %s: %s' % (
                             nic,
                             ','.join(slaves)
                         )
                     )
                     enslaved.update(slaves)
                     interfaces.update([nic])
             else:
                 interfaces.update([nic])
         except IOError as ioe:
             if ioe.errno in (None, errno.EOPNOTSUPP):
                 self.logger.debug('Detected unsupported device %s' % nic)
             else:
                 raise ioe
     validValues = list(interfaces - enslaved)
     self.logger.debug('Nics detected: %s' % ','.join(nics))
     self.logger.debug('Nics enslaved: %s' % ','.join(enslaved))
     self.logger.debug('Nics valid: %s' % ','.join(validValues))
     if not validValues:
         if enslaved:
             raise RuntimeError(
                 _(
                     'The following existing interfaces are not suitable '
                     'for vdsm: {enslaved}. You might want to pull out an '
                     'interface out of a bridge to be able to use it'
                 ).format(
                     enslaved=','.join(enslaved)
                 )
             )
         else:
             raise RuntimeError(_('A Network interface is required'))
     interactive = self.environment[
         ohostedcons.NetworkEnv.BRIDGE_IF
     ] is None
     if interactive:
         default = ohostedcons.Defaults.DEFAULT_BRIDGE_IF
         if default not in validValues:
             default = validValues[0]
         self.environment[
             ohostedcons.NetworkEnv.BRIDGE_IF
         ] = self.dialog.queryString(
             name='ovehosted_bridge_if',
             note=_(
                 'Please indicate a nic to set '
                 '{bridge} bridge on: (@VALUES@) [@DEFAULT@]: '
             ).format(
                 bridge=self.environment[
                     ohostedcons.NetworkEnv.BRIDGE_NAME
                 ]
             ),
             prompt=True,
             caseSensitive=True,
             default=default,
             validValues=validValues,
         )
Exemplo n.º 25
0
__author__ = 'yippee'

import ethtool

interfaces = []
for dev in ethtool.get_devices():
    flags = ethtool.get_flags(dev)
    if flags & ethtool.IFF_UP and \
            not (flags & ethtool.IFF_LOOPBACK):
        # print dev, flags
        dev_info = ethtool.get_interfaces_info(dev)[0]
        # print dev_info.get_ipv4_addresses()
        interfaces.append(
            {'name': dev,
             'inet': ethtool.get_ipv4_addresses(dev_info),
             'inet6': ethtool.get_ipv6_addresses(dev_info),
             'hw': ethtool.get_hwaddr(dev)})
import pprint

pprint(interfaces)
Exemplo n.º 26
0
 def _customization(self):
     nics = ethtool.get_devices()
     validValues = []
     enslaved = set()
     interfaces = set()
     for nic in nics:
         try:
             flags = ethtool.get_flags(nic)
             if flags & ethtool.IFF_LOOPBACK:
                 self.logger.debug('Detected loopback device %s' % nic)
             elif ethtool.get_module(nic) == 'bridge':
                 self.logger.debug('Detected bridge device %s' % nic)
                 if os.path.exists('/sys/class/net/%s/brif' % nic):
                     slaves = os.listdir('/sys/class/net/%s/brif' % nic)
                     self.logger.debug('Detected slaves for device %s: %s' %
                                       (nic, ','.join(slaves)))
                     for iface in slaves:
                         if iface in nics:
                             enslaved.update([iface])
             elif netinfo.isbonding(nic):
                 slaves = netinfo.slaves(nic)
                 if not slaves:
                     self.logger.debug(
                         'Detected bond device %s without slaves' % nic)
                 else:
                     self.logger.debug('Detected slaves for device %s: %s' %
                                       (nic, ','.join(slaves)))
                     enslaved.update(slaves)
                     interfaces.update([nic])
             else:
                 interfaces.update([nic])
         except IOError as ioe:
             if ioe.errno in (None, errno.EOPNOTSUPP):
                 self.logger.debug('Detected unsupported device %s' % nic)
             else:
                 raise ioe
     validValues = list(interfaces - enslaved)
     self.logger.debug('Nics detected: %s' % ','.join(nics))
     self.logger.debug('Nics enslaved: %s' % ','.join(enslaved))
     self.logger.debug('Nics valid: %s' % ','.join(validValues))
     if not validValues:
         if enslaved:
             raise RuntimeError(
                 _('The following existing interfaces are not suitable '
                   'for vdsm: {enslaved}. You might want to pull out an '
                   'interface out of a bridge to be able to use it').format(
                       enslaved=','.join(enslaved)))
         else:
             raise RuntimeError(_('A Network interface is required'))
     interactive = self.environment[
         ohostedcons.NetworkEnv.BRIDGE_IF] is None
     if interactive:
         default = ohostedcons.Defaults.DEFAULT_BRIDGE_IF
         if default not in validValues:
             default = validValues[0]
         self.environment[
             ohostedcons.NetworkEnv.BRIDGE_IF] = self.dialog.queryString(
                 name='ovehosted_bridge_if',
                 note=_(
                     'Please indicate a nic to set '
                     '{bridge} bridge on: (@VALUES@) [@DEFAULT@]: ').format(
                         bridge=self.environment[
                             ohostedcons.NetworkEnv.BRIDGE_NAME]),
                 prompt=True,
                 caseSensitive=True,
                 default=default,
                 validValues=validValues,
             )