in reply to Re: Net::RawIP question
in thread Net::RawIP question

This:
$n->send; $n->ethnew("eth0"); $n->ethset(source => 'my.target.lan', dest =>'my.target.lan'); $n->ethsend;
the packet is first send then setting the ethernet header? how? can you explain me this?

Replies are listed 'Best First'.
Re^3: Net::RawIP question
by anonymized user 468275 (Curate) on Aug 16, 2018 at 13:43 UTC
    The documentation says:

    ethset

    is a method for set an ethernet parameters in the current object. The given parameters must look like parameters for the ethnew without a $device.

    So for your manipulation, it expects the new header to be given in the ethset call as ip => { header keys and values }

    update: you might also want to check whether your calls are returning a true value i.e.

    $n->methodname(parms) or die "Net::RawIP->methodname failed";

    One world, one people

      thanks for information, this debug helps but i always get error at: Net::RawIP->ethnew failed
      #!/usr/bin/perl use Net::RawIP; $n = Net::RawIP->new({ ip => { saddr => '192.168.1.1', daddr => '192.168.1.2', }, tcp => { source => 139, dest => 139, psh => 1, syn => 1, }, }); $n->send; $n->ethnew("eth0") or die "Net::RawIP->ethnew failed"; # error here $n->ethset(source => 'my.target.lan', dest =>'my.target.lan'); $n->ethsend;
        I understand your frustration and I am thankful I didn't write this module, "there but for the grace of god go I", but you have to repeat the parameter
        ip => { saddr => '192.168.1.1', daddr => '192.168.1.2', }
        yet again for the ethset call as counter-intuitive as it might be.

        One world, one people