/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 2 1 Ġ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 . netty . buffer . Byte Buf Ċ import Ġio . sip 3 . capt ain . ce . domain . Packet Ċ import Ġio . sip 3 . commons . domain . payload . En codable Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . core . json . JsonObject Ċ Ċ /** Ċ Ġ* ĠHandles ĠEthernet Ġpackets Ċ Ġ*/ Ċ class ĠEthernet Handler ( vertx : ĠVert x , Ġconfig : ĠJsonObject , Ġbulk Operations Enabled : ĠBoolean ) Ġ: ĠHandler ( vertx , Ġconfig , Ġbulk Operations Enabled ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ IPV 4 Ġ= Ġ 0 x 0 8 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ IPV 6 Ġ= Ġ 0 x 8 6 dd ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ 8 0 2 _ 1 _ Q Ġ= Ġ 0 x 8 1 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ 8 0 2 _ 1 _ AD Ġ= Ġ 0 x 8 8 a 8 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ LINUX _ CO OK ED _ CAPTURE Ġ= Ġ 0 x 0 0 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġipv 4 Handler : ĠI pv 4 Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠI pv 4 Handler ( vertx , Ġconfig , Ġbulk Operations Enabled ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġipv 6 Handler : ĠI pv 6 Handler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠI pv 6 Handler ( vertx , Ġconfig , Ġbulk Operations Enabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Packet ( packet : ĠPacket ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= Ġ( packet . payload Ġas ĠEn codable ). encode () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSource ĠMAC Ġand ĠDestination ĠMAC ĊĠĠĠĠĠĠĠ Ġbuffer . skip Bytes ( 1 2 ) ĊĠĠĠĠĠĠĠ Ġ// ĠEthernet ĠType ĊĠĠĠĠĠĠĠ Ġval Ġether Type Ġ= Ġread Ethernet Type ( buffer ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( ether Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ IPV 4 Ġ-> Ġipv 4 Handler . handle ( packet ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ IPV 6 Ġ-> Ġipv 6 Handler . handle ( packet ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Ethernet Type ( buffer : ĠByte Buf ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠEthernet ĠType Ġor ĠT PI ĊĠĠĠĠĠĠĠ Ġval Ġe thernet Type Ġ= Ġbuffer . read Unsigned Short () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( e thernet Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ 8 0 2 _ 1 _ AD , ĠTYPE _ 8 0 2 _ 1 _ Q Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠT CI ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . skip Bytes ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Ethernet Type ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ LINUX _ CO OK ED _ CAPTURE Ġ-> Ġread Ethernet Type ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġe thernet Type ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }