logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

NetPacket::Ethernet - Assemble and disassemble ethernet packets.

Author

       Tim Potter <tpot@samba.org>

perl v5.36.0                                       2022-11-19                           NetPacket::Ethernet(3pm)

Description

       "NetPacket::Ethernet" provides a set of routines for assembling and disassembling packets using the
       Ethernet protocol.

   Methods
       "NetPacket::Ethernet->decode([RAW PACKET])"
           Decode  the  raw  packet  data given and return an object containing instance data.  This method will
           quite happily decode garbage input.  It is the responsibility  of  the  programmer  to  ensure  valid
           packet data is passed to this method.

       "NetPacket::Ethernet->encode(param => value)"
           Return an ethernet packet encoded with the instance data specified.  Not implemented.

   Functions
       "NetPacket::Ethernet::strip([RAW PACKET])"
           Return the encapsulated data (or payload) contained in the ethernet packet.  This data is suitable to
           be used as input for other "NetPacket::*" modules.

           This  function is equivalent to creating an object using the "decode()" constructor and returning the
           "data" field of that object.

   Instancedata
       The instance data for the "NetPacket::Ethernet" object consists of the following fields.

       src_mac
           The source MAC address for the ethernet packet as a hex string.

       dest_mac
           The destination MAC address for the ethernet packet as a hex string.

       type
           The protocol type for the ethernet packet.

       data
           The payload for the ethernet packet.

   Exports
       default
           none

       exportable
           ETH_TYPE_IP ETH_TYPE_ARP ETH_TYPE_APPLETALK ETH_TYPE_SNMP ETH_TYPE_IPv6 ETH_TYPE_PPP

       tags
           The following tags group together related exportable items.

           ":types"
               ETH_TYPE_IP ETH_TYPE_ARP ETH_TYPE_APPLETALK ETH_TYPE_SNMP ETH_TYPE_IPv6 ETH_TYPE_PPP

           ":strip"
               Import the strip function "eth_strip" which is an alias for "NetPacket::Ethernet::strip"

           ":ALL"
               All the above exportable items.

Example

       The following script dumps ethernet frames by mac address and protocol to standard output.

         #!/usr/bin/perl -w

         use strict;
         use Net::PcapUtils;
         use NetPacket::Ethernet;

         sub process_pkt {
             my($arg, $hdr, $pkt) = @_;

             my $eth_obj = NetPacket::Ethernet->decode($pkt);
             print("$eth_obj->{src_mac}:$eth_obj->{dest_mac} $eth_obj->{type}\n");
         }

         Net::PcapUtils::loop(\&process_pkt);

Name

       NetPacket::Ethernet - Assemble and disassemble ethernet packets.

Synopsis

         use NetPacket::Ethernet;

         $eth_obj = NetPacket::Ethernet->decode($raw_pkt);
         $eth_pkt = NetPacket::Ethernet->encode(params...);   # Not implemented
         $eth_data = NetPacket::Ethernet::strip($raw_pkt);

Todo

       Implement "encode()" function

Version

       version 1.7.2

See Also