code: def read_vlan(self, length):
          
          if length is None:
              length = len(self)
  
          _tcif = self._read_binary(2)
          _type = self._read_protos(2)
  
          vlan = dict(
              tci=dict(
                  pcp=_PCP.get(int(_tcif[:3], base=2)),
                  dei=True if _tcif[3] else False,
                  vid=int(_tcif[4:], base=2),
              ),
              type=_type,
          )
  
          length -= 4
          vlan['packet'] = self._read_packet(header=4, payload=length)
  
          return self._decode_next_layer(vlan, _type, length)
docs: Read 802.1Q Customer VLAN Tag Type.
  
          Structure of 802.1Q Customer VLAN Tag Type [RFC 7042]:
              Octets      Bits        Name                    Description
                1           0     vlan.tci                Tag Control Information
                1           0     vlan.tci.pcp            Priority Code Point
                1           3     vlan.tci.dei            Drop Eligible Indicator
                1           4     vlan.tci.vid            VLAN Identifier
                3          24     vlan.type               Protocol (Internet Layer)