Added a new check to check whether an network interface is in promiscuous mode

This commit is contained in:
Cristobal Rosa 2013-09-27 09:14:11 +02:00
parent 80a8ba1b51
commit 0b10e1d019

View file

@ -1440,6 +1440,15 @@ class LinuxNetwork(Network):
path = os.path.join(path, 'bonding', 'all_slaves_active') path = os.path.join(path, 'bonding', 'all_slaves_active')
if os.path.exists(path): if os.path.exists(path):
interfaces[device]['all_slaves_active'] = open(path).read() == '1' interfaces[device]['all_slaves_active'] = open(path).read() == '1'
#Check whether a interface is in promiscuous mode
if os.path.exists(os.path.join(path,'flags')):
promisc_mode = False
# The second byte indicates whether the interface is in promiscuous mode.
# 1 = promisc
# 0 = no promisc
data = int(open(os.path.join(path, 'flags')).read().strip(),16)
promisc_mode = (data & 0x0100 > 0)
interfaces[device]['promisc'] = promisc_mode
ip_path = module.get_bin_path("ip") ip_path = module.get_bin_path("ip")
output = subprocess.Popen([ip_path, 'addr', 'show', device], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0] output = subprocess.Popen([ip_path, 'addr', 'show', device], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
for line in output.split('\n'): for line in output.split('\n'):