From be279295b6d5d89fd7b3e9eb20fe62d4e5bac699 Mon Sep 17 00:00:00 2001 From: Cristobal Rosa Date: Fri, 27 Sep 2013 09:14:11 +0200 Subject: [PATCH] Added a new check to check whether an network interface is in promiscuous mode --- library/system/setup | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/system/setup b/library/system/setup index a0901ec366..7ede90c98d 100755 --- a/library/system/setup +++ b/library/system/setup @@ -1440,6 +1440,15 @@ class LinuxNetwork(Network): path = os.path.join(path, 'bonding', 'all_slaves_active') if os.path.exists(path): 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") output = subprocess.Popen([ip_path, 'addr', 'show', device], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0] for line in output.split('\n'):