package Ġid . go . b pk . secure vpn . unit Ċ Ċ import Ġid . go . b pk . secure vpn . misc . Data Unit Parsing Error Ċ import Ġid . go . b pk . secure vpn . misc . Incoming Buffer Ċ import Ġjava . nio . ByteBuffer ĊĊ Ċ internal Ġconst Ġval ĠS ST P _ PACKET _ TYPE _ DATA : ĠShort Ġ= Ġ 0 x 1 0 0 0 Ċ internal Ġconst Ġval ĠS ST P _ PACKET _ TYPE _ CONTROL : ĠShort Ġ= Ġ 0 x 1 0 0 1 Ċ Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ CALL _ CONNECT _ REQUEST : ĠShort Ġ= Ġ 1 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ CALL _ CONNECT _ ACK : ĠShort Ġ= Ġ 2 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ CALL _ CONNECT _ NA K : ĠShort Ġ= Ġ 3 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ CALL _ CONNECTED : ĠShort Ġ= Ġ 4 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ CALL _ ABORT : ĠShort Ġ= Ġ 5 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ CALL _ DIS CONNECT : ĠShort Ġ= Ġ 6 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ CALL _ DIS CONNECT _ ACK : ĠShort Ġ= Ġ 7 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ ECHO _ REQUEST : ĠShort Ġ= Ġ 8 Ċ internal Ġconst Ġval ĠS ST P _ MESSAGE _ TYPE _ ECHO _ RESPONSE : ĠShort Ġ= Ġ 9 Ċ Ċ internal Ġabstract Ġclass ĠControl Packet Ġ: ĠShort Length Data Unit () Ġ{ ĊĠĠĠ Ġinternal Ġabstract Ġval Ġtype : ĠShort ĊĊĠĠĠ Ġoverride Ġval Ġvalid Length Range Ġ= Ġ 8 .. Short . MAX _ VALUE ĊĊĠĠĠ Ġinternal Ġfun Ġread Header ( bytes : ĠIncoming Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbytes . move (- 4 ) ĊĠĠĠĠĠĠĠ Ġset Typed Length ( bytes . get Short ()) ĊĠĠĠĠĠĠĠ Ġbytes . move ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġwrite Header ( bytes : ĠByteBuffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbytes . put Short ( S ST P _ PACKET _ TYPE _ CONTROL ) ĊĠĠĠĠĠĠĠ Ġbytes . put Short ( get Typed Length ()) ĊĠĠĠĠĠĠĠ Ġbytes . put Short ( type ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠS stp Call Connect Request Ġ: ĠControl Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ CALL _ CONNECT _ REQUEST ĊĊĠĠĠ Ġoverride Ġval Ġvalid Length Range Ġ= Ġ 1 4 .. 1 4 ĊĊĠĠĠ Ġinternal Ġvar Ġprotocol Ġ= ĠEn caps ulated Protocol Id () ĊĊĠĠĠ Ġoverride Ġfun Ġread ( bytes : ĠIncoming Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . get Short (). toInt () Ġ== Ġ 1 ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠ Ġbytes . move ( 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . getByte () Ġ!= ĠS ST P _ ATTRIBUTE _ ID _ ENC AP S UL ATED _ PROTOCOL _ ID ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠ ĠEn caps ulated Protocol Id (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . read ( bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotocol Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( bytes : ĠByteBuffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġbytes . put Short ( 1 ) ĊĠĠĠĠĠĠĠ Ġprotocol . write ( bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġprotocol . update () ĊĠĠĠĠĠĠĠ Ġ_ length Ġ= Ġvalid Length Range . first ĊĠĠĠ Ġ} Ċ } Ċ internal Ġclass ĠS stp Call Connect Ack Ġ: ĠControl Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ CALL _ CONNECT _ ACK ĊĊĠĠĠ Ġoverride Ġval Ġvalid Length Range Ġ= Ġ 4 8 .. 4 8 ĊĊĠĠĠ Ġinternal Ġvar Ġrequest Ġ= ĠCrypto Binding Request () ĊĊĠĠĠ Ġoverride Ġfun Ġread ( bytes : ĠIncoming Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . get Short (). toInt () Ġ!= Ġ 1 ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠ Ġbytes . move ( 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . getByte () Ġ!= ĠS ST P _ ATTRIBUTE _ ID _ CRYPTO _ BINDING _ REQ ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠ ĠCrypto Binding Request (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . read ( bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( bytes : ĠByteBuffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġbytes . put Short ( 1 ) ĊĠĠĠĠĠĠĠ Ġrequest . write ( bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest . update () ĊĠĠĠĠĠĠĠ Ġ_ length Ġ= Ġvalid Length Range . first ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠS stp Call Connected Ġ: ĠControl Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ CALL _ CONNECTED ĊĊĠĠĠ Ġoverride Ġval Ġvalid Length Range Ġ= Ġ 1 1 2 .. 1 1 2 ĊĊĠĠĠ Ġinternal Ġvar Ġbinding Ġ= ĠCrypto Binding () ĊĊĠĠĠ Ġoverride Ġfun Ġread ( bytes : ĠIncoming Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . get Short (). toInt () Ġ!= Ġ 1 ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠ Ġbytes . move ( 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . getByte () Ġ!= ĠS ST P _ ATTRIBUTE _ ID _ CRYPTO _ BINDING ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠ ĠCrypto Binding (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . read ( bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( bytes : ĠByteBuffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġbytes . put Short ( 1 ) ĊĠĠĠĠĠĠĠ Ġbinding . write ( bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . update () ĊĠĠĠĠĠĠĠ Ġ_ length Ġ= Ġvalid Length Range . first ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġabstract Ġclass ĠTermin ate Packet Ġ: ĠControl Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġvalid Length Range Ġ= Ġ 8 .. Short . MAX _ VALUE ĊĊĠĠĠ Ġinternal Ġvar Ġstatus Info : ĠStatus Info ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġread ( bytes : ĠIncoming Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġstatus Info Ġ= Ġwhen Ġ( bytes . get Short (). toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes . move ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bytes . getByte () Ġ!= ĠS ST P _ ATTRIBUTE _ ID _ STATUS _ INFO ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatus Info (). also Ġ{ Ġit . read ( bytes ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠData Unit Parsing Error () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( bytes : ĠByteBuffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġstatus Info . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes . put Short ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes . put Short ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . write ( bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġstatus Info ?. update () ĊĠĠĠĠĠĠĠ Ġ_ length Ġ= Ġvalid Length Range . first Ġ+ Ġ( status Info ? ._ length Ġ?: Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠS stp Call Abort Ġ: ĠTermin ate Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ CALL _ ABORT Ċ } Ċ Ċ internal Ġclass ĠS stp Call Disconnect Ġ: ĠTermin ate Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ CALL _ DIS CONNECT Ċ } Ċ Ċ internal Ġabstract Ġclass ĠNo Attribute Packet Ġ: ĠControl Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġvalid Length Range Ġ= Ġ 8 .. 8 ĊĊĠĠĠ Ġoverride Ġfun Ġread ( bytes : ĠIncoming Buffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġread Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . get Short (). toInt () Ġ!= Ġ 0 ) Ġthrow ĠData Unit Parsing Error () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite ( bytes : ĠByteBuffer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite Header ( bytes ) ĊĠĠĠĠĠĠĠ Ġbytes . put Short ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ length Ġ= Ġvalid Length Range . first ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠS stp Call Disconnect Ack Ġ: ĠNo Attribute Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ CALL _ DIS CONNECT _ ACK Ċ } Ċ Ċ internal Ġclass ĠS stp Echo Request Ġ: ĠNo Attribute Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ ECHO _ REQUEST Ċ } Ċ Ċ internal Ġclass ĠS stp Echo Response Ġ: ĠNo Attribute Packet () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= ĠS ST P _ MESSAGE _ TYPE _ ECHO _ RESPONSE Ċ } Ċ