Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def testGetIfaceByIP(self):
for dev in ethtool.get_interfaces_info(ethtool.get_active_devices()):
# Link-local IPv6 addresses are generated from the MAC address,
# which is shared between a nic and its bridge. Since We don't
# support having the same IP address on two different NICs, and
# link-local IPv6 addresses aren't interesting for 'getDeviceByIP'
# then ignore them in the test
ipaddrs = [ipv6.address for ipv6 in dev.get_ipv6_addresses()
if ipv6.scope != 'link']
if dev.ipv4_address is not None:
ipaddrs.append(dev.ipv4_address)
for ip in ipaddrs:
self.assertEqual(dev.device, netinfo.getIfaceByIP(ip))
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.")
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.")
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.")
try:
if ethtool_present:
module = ethtool.get_module(interface)
else:
driver_file = open('/sys/class/net/%s/device/uevent' % interface, 'r')
module = driver_file.readline().split('=')[1].strip()
driver_file.close()
except:
if interface == 'lo':
module = "loopback"
else:
module = "Unknown"
try:
if ethtool_present:
ipaddr = ethtool.get_ipaddr(interface)
else:
ipaddr = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr']
except:
ipaddr = ""
try:
if ethtool_present:
netmask = ethtool.get_netmask(interface)
else:
netmask = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['netmask']
except:
netmask = ""
try:
if ethtool_present:
broadcast = ethtool.get_broadcast(interface)
except:
hwaddr = ""
# slave devices can have their hwaddr changed
try:
master = os.readlink('/sys/class/net/%s/master' % interface)
except:
master = None
if master:
master_interface = os.path.basename(master)
hwaddr = get_slave_hwaddr(master_interface, interface)
try:
if ethtool_present:
module = ethtool.get_module(interface)
else:
driver_file = open('/sys/class/net/%s/device/uevent' % interface, 'r')
module = driver_file.readline().split('=')[1].strip()
driver_file.close()
except:
if interface == 'lo':
module = "loopback"
else:
module = "Unknown"
try:
if ethtool_present:
ipaddr = ethtool.get_ipaddr(interface)
else:
ipaddr = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr']
except:
def get_interface_subjects(self):
netdev = self._proc.open('net', 'dev')
faces = []
subjects = {}
for line in netdev:
line = line.split()
if line[0].count(":"):
faces.append(line[0][:line[0].index(":")])
unis = UNISInstance(unis_url=self.unis_url)
for face in faces:
try:
capacity = ethtool.get_speed(face)
except OSError:
capacity = 0
### some sort of verification here that capacity is right
post_dict={"name":face,
"capacity":capacity}
resp = unis.post_port(post_dict)
if isinstance(resp, dict):
subjects[face]=resp['selfRef']
return subjects
def get_network_interfaces(self):
netinfdict = {}
old_ipv4_metakeys = ['ipv4_address', 'ipv4_netmask', 'ipv4_broadcast']
ipv4_metakeys = ['address', 'netmask', 'broadcast']
ipv6_metakeys = ['address', 'netmask']
try:
interfaces_info = ethtool.get_interfaces_info(ethtool.get_devices())
for info in interfaces_info:
master = None
mac_address = info.mac_address
device = info.device
# Omit mac addresses for sit and lo device types. See BZ838123
# mac address are per interface, not per address
if self._should_get_mac_address(device):
key = '.'.join(['net.interface', device, 'mac_address'])
netinfdict[key] = mac_address
# all of our supported versions of python-ethtool support
# get_ipv6_addresses
for addr in info.get_ipv6_addresses():
# ethtool returns a different scope for "public" IPv6 addresses
# on different versions of RHEL. EL5 is "global", while EL6 is
# "universe". Make them consistent.
def read_network_interfaces():
intDict = {}
intDict['class'] = "NETINTERFACES"
if not ethtool_present and not netifaces_present:
# ethtool is not available on non-linux platforms (as kfreebsd), skip it
sys.stderr.write("Warning: information about network interfaces could not be retrieved on this platform.\n")
return intDict
if ethtool_present:
interfaces = list(set(ethtool.get_devices() + ethtool.get_active_devices()))
else:
interfaces = netifaces.interfaces()
for interface in interfaces:
try:
if ethtool_present:
hwaddr = ethtool.get_hwaddr(interface)
else:
hwaddr = netifaces.ifaddresses(interface)[netifaces.AF_LINK][0]['addr']
except:
hwaddr = ""
# slave devices can have their hwaddr changed
try:
master = os.readlink('/sys/class/net/%s/master' % interface)
except:
def _getMyIPAddrList(self):
device = (
self.environment[ohostedcons.NetworkEnv.BRIDGE_NAME]
if self.environment[ohostedcons.NetworkEnv.BRIDGE_NAME]
in ethtool.get_devices()
else self.environment[ohostedcons.NetworkEnv.BRIDGE_IF]
)
self.logger.debug(
"Acquiring '{device}' address".format(
device=device,
)
)
rc, stdout, stderr = self.execute(
args=(
self.command.get('ip'),
'addr',
'show',
device,
'scope',
'global'
),