Exemple #1
0
        def get_vlan_list(row):
            concatenated_bits = b''
            for column in ('vlanTrunkPortVlansEnabled',
                           'vlanTrunkPortVlansEnabled2k',
                           'vlanTrunkPortVlansEnabled3k',
                           'vlanTrunkPortVlansEnabled4k'):
                value = row[column] or b''
                concatenated_bits += value.ljust(CHARS_IN_1024_BITS, b'\x00')

            enabled = BitVector(concatenated_bits)
            return as_bitvector and enabled or enabled.get_set_bits()
Exemple #2
0
    def test_chunkify(self):
        vlans = [10, 33, 513, 1023, 1025, 2048, 4095]
        b = BitVector(512 * '\000')
        for vlan in vlans:
            b[vlan] = 1

        self.assertEqual(b.get_set_bits(), vlans)
        first, second, third, fourth = SNMPHandler._chunkify(b, 4)

        self.assertEqual(first.get_set_bits(), [10, 33, 513, 1023])
        self.assertEqual(second.get_set_bits(), [1])
        self.assertEqual(third.get_set_bits(), [0])
        self.assertEqual(fourth.get_set_bits(), [1023])
        def get_vlan_list(row):
            concatenated_bits = ''
            # There is no point in concatening more bitstrings if one of them
            # are empty, that would just produced a skewed result.
            for column in ('vlanTrunkPortVlansEnabled',
                           'vlanTrunkPortVlansEnabled2k',
                           'vlanTrunkPortVlansEnabled3k',
                           'vlanTrunkPortVlansEnabled4k'):
                if row[column]:
                    concatenated_bits += row[column]
                else:
                    break

            enabled = BitVector(concatenated_bits)
            return as_bitvector and enabled or enabled.get_set_bits()
Exemple #4
0
    def get_native_and_trunked_vlans(self, interface):
        ifindex = interface.ifindex
        native_vlan = self._query_netbox(self.TRUNKPORTNATIVEVLAN, ifindex)

        blocks = [
            self._query_netbox(oid, ifindex) or ''
            for oid in (self.TRUNKPORTVLANSENABLED,
                        self.TRUNKPORTVLANSENABLED2K,
                        self.TRUNKPORTVLANSENABLED3K,
                        self.TRUNKPORTVLANSENABLED4K)]
        bitstring = "".join(value.ljust(CHARS_IN_1024_BITS, '\x00')
                            for value in blocks)

        bitvector = BitVector(bitstring)
        return native_vlan, bitvector.get_set_bits()
Exemple #5
0
        def get_vlan_list(row):
            concatenated_bits = ''
            # There is no point in concatening more bitstrings if one of them
            # are empty, that would just produced a skewed result.
            for column in ('vlanTrunkPortVlansEnabled',
                           'vlanTrunkPortVlansEnabled2k',
                           'vlanTrunkPortVlansEnabled3k',
                           'vlanTrunkPortVlansEnabled4k'):
                if row[column]:
                    concatenated_bits += row[column]
                else:
                    break

            enabled = BitVector(concatenated_bits)
            return as_bitvector and enabled or enabled.get_set_bits()