Start of project
This commit is contained in:
commit
fc983d033c
2 changed files with 70 additions and 0 deletions
7
cpanfile
Normal file
7
cpanfile
Normal file
|
@ -0,0 +1,7 @@
|
|||
requires 'Net::Frame::Layer::IGMP';
|
||||
requires 'Net::Frame::Layer::IGMP::v3Report';
|
||||
requires 'Net::Frame::Layer::IPv4';
|
||||
requires 'Net::Frame::Simple';
|
||||
requires 'Net::Write::Layer';
|
||||
requires 'Net::Write::Layer3';
|
||||
requires 'Sys::HostIP';
|
63
igmp.pl
Executable file
63
igmp.pl
Executable file
|
@ -0,0 +1,63 @@
|
|||
#!/usr/bin/env perl
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Net::Frame::Layer::IGMP qw/:consts/;
|
||||
use Net::Frame::Layer::IGMP::v3Report qw/:consts/;
|
||||
use Net::Frame::Layer::IPv4 qw/:consts/;
|
||||
use Net::Frame::Simple;
|
||||
use Net::Write::Layer qw/:constants/;
|
||||
use Net::Write::Layer3;
|
||||
use Sys::HostIP;
|
||||
|
||||
my $src_ip = Sys::HostIP->new()->ip;
|
||||
|
||||
#socket my $raw_socket, AF_INET, SOCK_RAW, IPPROTO_RAW or die "Couldn't open socket $!";
|
||||
|
||||
my $ipv4 = Net::Frame::Layer::IPv4->new(
|
||||
src => $src_ip,
|
||||
dst => '224.0.0.22',
|
||||
protocol => NF_IPv4_PROTOCOL_IGMP,
|
||||
flags => NF_IPv4_DONT_FRAGMENT,
|
||||
ttl => 1,
|
||||
);
|
||||
|
||||
my $report = Net::Frame::Layer::IGMP::v3Report->new(
|
||||
type => NF_IGMP_REPORTv3TYPE_CHANGEEXCLUDE,
|
||||
auxDataLen => 0,
|
||||
numSources => 0,
|
||||
multicastAddress => '239.255.42.44',
|
||||
sourceAddress => [],
|
||||
auxData => '',
|
||||
);
|
||||
|
||||
#my $igmp = Net::Frame::Layer::IGMP->new(
|
||||
# type => NF_IGMP_TYPE_REPORTv3,
|
||||
# maxResp => 0,
|
||||
# checksum => 0,
|
||||
# groupAddress => '239.255.42.44',
|
||||
#);
|
||||
|
||||
my $igmp = Net::Frame::Layer::IGMP->v3report(
|
||||
type => NF_IGMP_TYPE_REPORTv3,
|
||||
maxResp => 0,
|
||||
checksum => 0,
|
||||
reserved => 0,
|
||||
numGroupRecs => 1,
|
||||
);
|
||||
|
||||
my $osimple = Net::Frame::Simple->new(
|
||||
layers => [$ipv4, $igmp, $report],
|
||||
);
|
||||
|
||||
my $writer = Net::Write::Layer3->new(
|
||||
dst => '224.0.0.22',
|
||||
protocol => NW_IPPROTO_RAW,
|
||||
family => NW_AF_INET,
|
||||
);
|
||||
$writer->open();
|
||||
|
||||
$osimple->send($writer);
|
||||
$writer->close();
|
||||
|
||||
#print Dumper(unpack("H*", $osimple->pack));
|
Loading…
Add table
Reference in a new issue