/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 2 2 ĠSIP 3 . IO , ĠCorp . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . sip 3 . capt ain . ce . pipeline Ċ Ċ import Ġio . sip 3 . capt ain . ce . domain . Packet Ċ import Ġio . sip 3 . capt ain . ce . util . S ip Util Ċ import Ġio . sip 3 . commons . domain . payload . En codable Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . json . JsonObject Ċ Ċ /** Ċ Ġ* ĠHandles ĠUDP Ġpackets Ċ Ġ*/ Ċ class ĠU dp Handler ( vertx : ĠVert x , Ġconfig : ĠJsonObject , Ġbulk Operations Enabled : ĠBoolean ) Ġ: ĠHandler ( vertx , Ġconfig , Ġbulk Operations Enabled ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ V XL AN Ġ= Ġ 0 x 0 8 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġr tcp Enabled Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġr tp Enabled Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġsip Enabled Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġvx lan Enabled Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġtz sp Enabled Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġr tcp Handler : ĠR tcp Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠR tcp Handler ( vertx , Ġconfig , Ġbulk Operations Enabled ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġr tp Handler : ĠR tp Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠR tp Handler ( vertx , Ġconfig , Ġbulk Operations Enabled ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġsip Handler : ĠS ip Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠS ip Handler ( vertx , Ġconfig , Ġbulk Operations Enabled ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġvx lan Handler : ĠV x lan Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠV x lan Handler ( vertx , Ġconfig , Ġbulk Operations Enabled ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġtz sp Handler : ĠT z sp Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠT z sp Handler ( vertx , Ġconfig , Ġbulk Operations Enabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig . get JsonObject (" rt cp ") ?. getBoolean (" enabled ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr tcp Enabled Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfig . get JsonObject (" rtp ") ?. getBoolean (" enabled ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr tp Enabled Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfig . get JsonObject (" sip ") ?. getBoolean (" enabled ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsip Enabled Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfig . get JsonObject (" vx lan ") ?. getBoolean (" enabled ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvx lan Enabled Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfig . get JsonObject (" tz sp ") ?. getBoolean (" enabled ") ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtz sp Enabled Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Packet ( packet : ĠPacket ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġ( packet . payload Ġas ĠEn codable ). encode () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSource ĠPort ĊĠĠĠĠĠĠĠ Ġpacket . src Port Ġ= Ġbuffer . read Unsigned Short () ĊĠĠĠĠĠĠĠ Ġ// ĠDestination ĠPort ĊĠĠĠĠĠĠĠ Ġpacket . dst Port Ġ= Ġbuffer . read Unsigned Short () ĊĠĠĠĠĠĠĠ Ġ// ĠLength ĊĠĠĠĠĠĠĠ Ġbuffer . skip Bytes ( 2 ) ĊĠĠĠĠĠĠĠ Ġ// ĠCheck sum ĊĠĠĠĠĠĠĠ Ġbuffer . skip Bytes ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFilter Ġpackets Ġof Ġsize Ġsmaller Ġthan Ġminimal ĠR TP / RT CP Ġor ĠSIP ĊĠĠĠĠĠĠĠ Ġif Ġ( buffer . readable Bytes () Ġ< Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġbuffer . reader Index () ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠR TP Ġor ĠR TCP Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . get Unsigned Byte ( offset ). toInt (). shr ( 6 ) Ġ== Ġ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Type Ġ= Ġbuffer . get Unsigned Byte ( offset Ġ+ Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( packet Type Ġin Ġ 2 0 0 .. 2 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip ĠIC MP ( RT CP ) Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rt cp Enabled Ġ&& Ġpacket . rejected Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr tcp Handler . handle ( packet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( rtp Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr tp Handler . handle ( packet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSIP Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsip Enabled Ġ&& ĠS ip Util . startsWith S ip Word ( buffer ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip ĠIC MP ( S IP ) Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( packet . rejected Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsip Handler . handle ( packet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠV XL AN Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvx lan Enabled Ġ&& Ġbuffer . get Unsigned Short ( offset ) Ġ== ĠTYPE _ V XL AN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip ĠIC MP ( V XL AN ) Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( packet . rejected Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvx lan Handler . handle ( packet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTZ SP Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtz sp Enabled Ġ&& Ġbuffer . getByte ( offset ). toInt () Ġ== Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip ĠIC MP ( TZ SP ) Ġpacket ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( packet . rejected Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtz sp Handler . handle ( packet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ