def read_vlan(self, length):
if length is None:<EOL><INDENT>length = len(self)<EOL><DEDENT>_tcif = self._read_binary(<NUM_LIT:2>)<EOL>_type = self._read_protos(<NUM_LIT:2>)<EOL>vlan = dict(<EOL>tci=dict(<EOL>pcp=_PCP.get(int(_tcif[:<NUM_LIT:3>], base=<NUM_LIT:2>)),<EOL>dei=True if _tcif[<NUM_LIT:3>] else False,<EOL>vid=int(_tcif[<NUM_LIT:4>:], base=<NUM_LIT:2>),<EOL>),<EOL>type=_type,<EOL>)<EOL>length -= <NUM_LIT:4><EOL>vlan['<STR_LIT>'] = self._read_packet(header=<NUM_LIT:4>, payload=length)<EOL>return self._decode_next_layer(vlan, _type, length)<EOL>
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)