---
name: "Net::Frame::Layer"
section: "3pm"
platform: "linux"
package: "libnet-frame-perl"
version: "1.21-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::Frame::Layer"
---

# Net::Frame::Layer(3pm)

base class for all layer objects

## NAME

Net::Frame::Layer - base class for all layer objects

## DESCRIPTION

This is the base class for all other layer modules. It provides those layers with inheritable attributes, methods, constants and useful subroutines.

## ATTRIBUTES

- **raw**

  Stores the raw layer (as captured from the network, or packed to send to network).

- **payload**

  Stores what is not part of the layer, that is the encapsulated part to be decoded by upper layers.

- **nextLayer**

  User definable next layer. It may be used to define custom protocols.

## METHODS

- **new**

  - **new** (hash)

  Object constructor.

- **layer**

  Returns the string describing the layer (example: 'IPv4' for a **Net::Frame::Layer::IPv4** object).

- **computeLengths**

  - **computeChecksums**

  Generally, when a layer is built, some attributes are not yet known until all layers that will be assembled are known. Those methods computes various lengths and checksums attributes found in a specific layer. Return 1 on success, undef otherwise. The usage depends from layer to layer, so see related documentation.

  Also note that in most cases, you will need to call **computeLength** before **computeChecksums**, because checksums may depend upon lengths.

- **pack**

  Packs all attributes into a raw format, in order to inject to network. Returns the raw packed string on success, undef otherwise. Result is stored into **raw** attribute.

- **unpack**

  Unpacks raw data from network and stores attributes into the object. Returns **$self** on success, undef otherwise.

- **encapsulate**

  Returns the next layer type (parsed from payload). This is the same string as returned by **layer** method.

- **getLength**

  Returns the layer length in bytes.

- **getPayloadLength**

  Returns the length of layer's payload in bytes.

- **print**

  Just returns a string in a human readable format describing attributes found in the layer.

- **dump**

  Just returns a string in hexadecimal format which is how the layer appears on the network.

## USEFUL SUBROUTINES

Load them: use Net::Frame::Layer qw(:subs);

- **getHostIpv4Addr** (hostname)

  Resolves IPv4 address of specified hostname.

- **getHostIpv4Addrs** (hostname)

  Same as above, but returns an array of IPv4 addresses.

- **getHostIpv6Addr** (hostname)

  Resolves IPv6 address of specified hostname.

- **inet6Aton** (IPv6 address)

  Takes IPv6 address and returns the network form.

- **inet6Ntoa** (IPv6 network form)

  Takes IPv6 address in network format, and returns the IPv6 human form.

- **inetAton** (IPv4 address)

  - **inetNtoa** (IPv4 network form)

  Same as for IPv6, but for IPv4 addresses.

- **convertMac** (MAC network form)

  Takes a MAC address from network form, and returns the human form.

- **getRandom16bitsInt**

  - **getRandom32bitsInt**

  Returns respectively a random 16 bits integer, and a random 32 bits integer.

- **getRandomHighPort**

  Returns a random high port (\> 1024).

- **inetChecksum** (pseudo header format)

  Will take a frame in pseudo header format, and compute the INET checksum.

## CONSTANTS

Load them: use Net::Frame::Layer qw(:consts);

- **NF\_LAYER\_NONE**

  - **NF\_LAYER\_UNKNOWN**

  - **NF\_LAYER\_NOT\_AVAILABLE**

  ## AUTHOR

Patrice \<GomoR\> Auffret

## COPYRIGHT AND LICENSE

Copyright (c) 2006-2019, Patrice \<GomoR\> Auffret

You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive.
