def _make_bridge_setup(self, name): try: self._make_group_fwd_mask_setup(name) except OSError as e: raise exc.SystemCompatibilityError( type(self), name, 'filed to alter {} file: {}'.format(e.filename, e.strerror))
def _make_group_fwd_mask_setup(self, name): p = pathlib.Path('/sys/class/net') p /= name p /= 'bridge/group_fwd_mask' with p.open('w+') as stream: raw = stream.readline() bitmask = raw.strip() try: bitmask = int(bitmask, 0) except ValueError as e: raise exc.SystemCompatibilityError( type(self), name, '{!r} read from group_fwd_mask is not a number'.format( raw)) bitmask |= 0x4000 # allow LLDP forwarding (ie 01:80:c2:00:00:0e) stream.seek(0, os.SEEK_SET) stream.write('0x{:x}\n'.format(bitmask))