mirror of
				https://github.com/CumulusNetworks/ifupdown2.git
				synced 2024-05-06 15:54:50 +00:00 
			
		
		
		
	linkutils: _bridge_attrs_fill: use sysfs
This commit is contained in:
		| @@ -231,41 +231,38 @@ class LinkUtils(utilsBase): | |||||||
|         battrs = {} |         battrs = {} | ||||||
|         bports = {} |         bports = {} | ||||||
|  |  | ||||||
|         brout = utils.exec_command('%s showstp %s' % (utils.brctl_cmd, bridgename)) |  | ||||||
|         chunks = re.split(r'\n\n', brout, maxsplit=0, flags=re.MULTILINE) |  | ||||||
|  |  | ||||||
|         try: |         try: | ||||||
|             # Get all bridge attributes |             # Get all bridge attributes | ||||||
|             broutlines = chunks[0].splitlines() |  | ||||||
|             # battrs['pathcost'] = broutlines[3].split('path cost')[1].strip() |             # battrs['pathcost'] = broutlines[3].split('path cost')[1].strip() | ||||||
|  |  | ||||||
|             try: |             try: | ||||||
|                 battrs['maxage'] = broutlines[4].split('bridge max age')[ |                 battrs['maxage'] = self.read_file_oneline( | ||||||
|                     1].strip().replace('.00', '') |                     '/sys/class/net/%s/bridge/max_age' % bridgename) | ||||||
|  |             except: | ||||||
|  |                 pass | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             try: | ||||||
|  |                 battrs['hello'] = self.read_file_oneline( | ||||||
|  |                     '/sys/class/net/%s/bridge/hello_time' % bridgename) | ||||||
|             except: |             except: | ||||||
|                 pass |                 pass | ||||||
|  |  | ||||||
|             try: |             try: | ||||||
|                 battrs['hello'] = broutlines[5].split('bridge hello time')[ |                 battrs['fd'] = self.read_file_oneline( | ||||||
|                     1].strip().replace('.00', '') |                     '/sys/class/net/%s/bridge/forward_delay' % bridgename) | ||||||
|             except: |             except: | ||||||
|                 pass |                 pass | ||||||
|  |  | ||||||
|             try: |             try: | ||||||
|                 battrs['fd'] = broutlines[6].split('bridge forward delay')[ |                 battrs['ageing'] = self.read_file_oneline( | ||||||
|                     1].strip().replace('.00', '') |                     '/sys/class/net/%s/bridge/ageing_time' % bridgename) | ||||||
|             except: |             except: | ||||||
|                 pass |                 pass | ||||||
|  |  | ||||||
|             try: |             try: | ||||||
|                 battrs['ageing'] = broutlines[7].split('ageing time')[ |                 battrs['mcrouter'] = self.read_file_oneline( | ||||||
|                     1].strip().replace('.00', '') |                     '/sys/class/net/%s/bridge/multicast_router' % bridgename) | ||||||
|             except: |  | ||||||
|                 pass |  | ||||||
|  |  | ||||||
|             try: |  | ||||||
|                 battrs['mcrouter'] = broutlines[12].split('mc router')[ |  | ||||||
|                     1].strip().split('\t\t\t')[0] |  | ||||||
|             except: |             except: | ||||||
|                 pass |                 pass | ||||||
|  |  | ||||||
| @@ -289,30 +286,24 @@ class LinkUtils(utilsBase): | |||||||
|  |  | ||||||
|                 # XXX: comment this out until mc attributes become available |                 # XXX: comment this out until mc attributes become available | ||||||
|                 # with brctl again |                 # with brctl again | ||||||
|                 # battrs['hashel'] = broutlines[10].split('hash elasticity')[1].split()[0].strip() |  | ||||||
|                 # battrs['hashmax'] = broutlines[10].split('hash max')[1].strip() |  | ||||||
|                 # battrs['mclmc'] = broutlines[11].split('mc last member count')[1].split()[0].strip() |  | ||||||
|                 # battrs['mciqc'] = broutlines[11].split('mc init query count')[1].strip() |                 # battrs['mciqc'] = broutlines[11].split('mc init query count')[1].strip() | ||||||
|                 # battrs['mcrouter'] = broutlines[12].split('mc router')[1].split()[0].strip() |  | ||||||
|                 ##battrs['mcsnoop'] = broutlines[12].split('mc snooping')[1].strip() |  | ||||||
|                 # battrs['mclmt'] = broutlines[13].split('mc last member timer')[1].split()[0].strip() |                 # battrs['mclmt'] = broutlines[13].split('mc last member timer')[1].split()[0].strip() | ||||||
|         except Exception, e: |         except Exception, e: | ||||||
|             self.logger.warn('%s: error while processing bridge attributes: %s' % (bridgename, str(e))) |             self.logger.warn('%s: error while processing bridge attributes: %s' % (bridgename, str(e))) | ||||||
|             pass |             pass | ||||||
|  |  | ||||||
|         linkCache.update_attrdict([bridgename, 'linkinfo'], battrs) |         linkCache.update_attrdict([bridgename, 'linkinfo'], battrs) | ||||||
|         for cidx in range(1, len(chunks)): |  | ||||||
|             bpout = chunks[cidx].lstrip('\n') |         names = [os.path.basename(x) for x in glob.glob("/sys/class/net/%s/brif/*" % bridgename)] | ||||||
|             if not bpout or bpout[0] == ' ': |         for pname in names: | ||||||
|                 continue |  | ||||||
|             bplines = bpout.splitlines() |  | ||||||
|             pname = bplines[0].split()[0] |  | ||||||
|             bportattrs = {} |             bportattrs = {} | ||||||
|             try: |             try: | ||||||
|                 bportattrs['pathcost'] = bplines[2].split( |  | ||||||
|                     'path cost')[1].strip() |                 bportattrs['pathcost'] = self.read_file_oneline( | ||||||
|                 bportattrs['fdelay'] = bplines[4].split( |                     '/sys/class/net/%s/brport/path_cost' % pname) | ||||||
|                     'forward delay timer')[1].strip() |                 bportattrs['fdelay'] = self.read_file_oneline( | ||||||
|  |                     '/sys/class/net/%s/brport/forward_delay_timer' % pname) | ||||||
|                 bportattrs['portmcrouter'] = self.read_file_oneline( |                 bportattrs['portmcrouter'] = self.read_file_oneline( | ||||||
|                     '/sys/class/net/%s/brport/multicast_router' % pname) |                     '/sys/class/net/%s/brport/multicast_router' % pname) | ||||||
|                 bportattrs['portmcfl'] = self.read_file_oneline( |                 bportattrs['portmcfl'] = self.read_file_oneline( | ||||||
| @@ -327,8 +318,12 @@ class LinkUtils(utilsBase): | |||||||
|                     '/sys/class/net/%s/brport/learning' % pname) |                     '/sys/class/net/%s/brport/learning' % pname) | ||||||
|                 bportattrs['arp-nd-suppress'] = self.read_file_oneline( |                 bportattrs['arp-nd-suppress'] = self.read_file_oneline( | ||||||
|                     '/sys/class/net/%s/brport/neigh_suppress' % pname) |                     '/sys/class/net/%s/brport/neigh_suppress' % pname) | ||||||
|                 # bportattrs['mcrouters'] = bplines[6].split('mc router')[1].split()[0].strip() |  | ||||||
|                 # bportattrs['mc fast leave'] = bplines[6].split('mc fast leave')[1].strip() |                 #bportattrs['mcrouters'] = self.read_file_oneline( | ||||||
|  |                 #    '/sys/class/net/%s/brport/multicast_router' % pname) | ||||||
|  |                 #bportattrs['mc fast leave'] = self.read_file_oneline( | ||||||
|  |                 #    '/sys/class/net/%s/brport/multicast_fast_leave' % pname)								 | ||||||
|  |  | ||||||
|             except Exception, e: |             except Exception, e: | ||||||
|                 self.logger.warn('%s: error while processing bridge attributes: %s' % (bridgename, str(e))) |                 self.logger.warn('%s: error while processing bridge attributes: %s' % (bridgename, str(e))) | ||||||
|             bports[pname] = bportattrs |             bports[pname] = bportattrs | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user