<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_vlan(self, length):
 """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) """

        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)