| Net-Packet documentation | Contained in the Net-Packet distribution. |
Net::Packet::DescL4 - object for a transport layer (layer 4) descriptor
require Net::Packet::DescL4;
# Get NP_DESC_* constants
use Net::Packet::Consts qw(:desc :layer);
# Usually, you use it to send TCP and UDP frames over IPv4
my $d4 = Net::Packet::DescL4->new(
target => '192.168.0.1',
protocol => NP_DESC_IPPROTO_TCP,
family => NP_LAYER_IPv4,
);
$d4->send($rawStringToNetwork);
See also Net::Packet::Desc for other attributes and methods.
IPv4 address of the target host. You must set it to be able to send frames.
Transport protocol to use, see NP_DESC_IPPROTO_* constants in Net::Packet::Desc. You must set it to be able to send frames.
The family address of target attribute. It is either NP_LAYER_IPv4 or NP_LAYER_IPv6.
Create the object, using default $Env object values for dev, ip, ip6 and mac (see Net::Packet::Env). When the object is created, the $Env global object has its desc attributes set to it. You can avoid this behaviour by setting noDescAutoSet in $Env object (see Net::Packet::Env).
Default values for attributes:
dev: $Env->dev
ip: $Env->ip
ip6: $Env->ip6
mac: $Env->mac
protocol: NP_DESC_IPPROTO_TCP
family: NP_LAYER_IPv4
Helper method to know about the layer 3 type.
Returns if the protocol attribute is of specified type.
Patrice <GomoR> Auffret
Copyright (c) 2004-2009, Patrice <GomoR> Auffret
You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive.
NetPacket, Net::RawIP, Net::RawSock
| Net-Packet documentation | Contained in the Net-Packet distribution. |
# # $Id: DescL4.pm 1640 2009-11-09 17:58:27Z gomor $ # package Net::Packet::DescL4; use strict; use warnings; use Carp; require Net::Packet::Desc; our @ISA = qw(Net::Packet::Desc); __PACKAGE__->cgBuildIndices; use Net::Packet::Consts qw(:desc :layer); use Socket; require Socket6; require Net::Write::Layer4; sub new { my $self = shift->SUPER::new( protocol => NP_DESC_IPPROTO_TCP, family => NP_LAYER_IPv4, @_, ); confess("@{[(caller(0))[3]]}: you must pass `target' parameter\n") unless $self->target; my $families = { NP_LAYER_IPv4() => AF_INET(), NP_LAYER_IPv6() => AF_INET6(), }; my $nwrite = Net::Write::Layer4->new( dst => $self->target, family => $families->{$self->family}, protocol => $self->protocol, ); $nwrite->open; $self->_io($nwrite); $self; } # # Helpers # sub _isFamily { shift->family eq shift } sub isFamilyIpv4 { shift->_isFamily(NP_LAYER_IPv4) } sub isFamilyIpv6 { shift->_isFamily(NP_LAYER_IPv6) } sub _isProtocol { shift->protocol eq shift } sub isProtocolTcp { shift->_isProtocol(NP_DESC_IPPROTO_TCP) } sub isProtocolUdp { shift->_isProtocol(NP_DESC_IPPROTO_UDP) } sub isProtocolIcmpv4 { shift->_isProtocol(NP_DESC_IPPROTO_ICMPv4) } 1; __END__