If you want to implement a subip protocol then read this,please.    

Let me to explain my propositions. I think that

1) There is no reason to implement all of the protocols in the 
one module.
There are so many protocols.

2)There is a "generic" subclass which can be used for the implementing
those subip protocols.

You could to write the module for manipulate your desired protocol
and use it with Net::RawIP.
Let imagine that you have a module NetPacket::PROTO which know about
a low level of the PROTO.

Then 

######################
#!/usr/bin/perl

use Net::RawIP;
use NetPacket::PROTO;

$proto = new NetPacket::PROTO; 
$proto->set(.......);
$datagramm = $proto->packet;

$packet = new Net::RawIP({
                     ip => { protocol => NUMBER_OF_PROTO },
                     generic => { data => $datagramm }
                    });
$packet->send;
....
....
($datagramm) = $packet->get({generic => [qw(data)]});

$proto->bset($datagramm);

($field1,$field2) = $proto->get(.....);

####################

So you have to implement the methods (new,set,bset,get) for your desired
protocol in your NetPacket::PROTO and you could use it with Net::RawIP.  

Is it ok for you ?

Regards,
        Sergey.

