# # $Id: Layer4.pm 732 2008-02-17 18:08:47Z gomor $ # package Net::Write::Layer4; use strict; use warnings; use Carp; use Net::Write::Layer qw(:constants); our @ISA = qw(Net::Write::Layer); __PACKAGE__->cgBuildIndices; BEGIN { my $osname = { cygwin => \&_newWin32, MSWin32 => \&_newWin32, }; *new = $osname->{$^O} || \&_newOther; } no strict 'vars'; sub _newWin32 { croak("Not possible to use layer 4 under Windows. Use layer 2 instead.\n"); } sub _newOther { my $self = shift->SUPER::new( protocol => NW_IPPROTO_TCP, family => NW_AF_INET, @_, ); croak("@{[(caller(0))[3]]}: you must pass `dst' parameter\n") unless $self->[$__dst]; $self; } 1; __END__ =head1 NAME Net::Write::Layer4 - object for a transport layer (layer 4) descriptor =head1 SYNOPSIS use Net::Write::Layer qw(:constants); use Net::Write::Layer4; my $desc = Net::Write::Layer4->new( dst => '192.168.0.1', protocol => NW_IPPROTO_TCP, family => NW_AF_INET, ); $desc->open; $desc->send('G'x666); $desc->close; =head1 DESCRIPTION This is the class for creating a layer 4 descriptor. =head1 ATTRIBUTES =over 4 =item B The target IPv4 or IPv6 address we will send frames to. =item B Address family, see B CONSTANTS section. =item B Transport layer protocol to use, see B CONSTANTS section. =back =head1 METHODS =over 4 =item B Object constructor. You MUST pass a valid B attribute. Default values: protocol: NW_IPPROTO_TCP family: NW_AF_INET =item B Open the interface. =item B (scalar) Send raw data to the network. =item B Close the descriptor. =back =head1 CAVEATS Does not work at all under Win32 systems. They can't send frames at layer 4. =head1 SEE ALSO L =head1 AUTHOR Patrice EGomoRE Auffret =head1 COPYRIGHT AND LICENSE Copyright (c) 2006-2008, Patrice EGomoRE Auffret You may distribute this module under the terms of the Artistic license. See LICENSE.Artistic file in the source distribution archive. =cut