[Click] encapsulating from IPEncap to EtherEncap exception

Roman Chertov rchertov at cs.ucsb.edu
Tue Apr 28 21:22:40 EDT 2009


Hristo,

Essentially, a new packet has to be allocated with a larger headroom to 
accommodate extra headers.  Hence, there is a warning message regarding 
an expensive push.

You need to use the HEADROOM parameter in the Socket element to increase 
the headroom.  The default is 28 bytes.  Since you are 6 bytes short 
"have 8 wanted 14", you need to set the HEADROOM to 34 bytes.


Roman

Hristo Asenov wrote:
> Hello,
> 
> We are currently using CLICK to form our own packets, with the DATA field of IP packet set to our own value, which we get from an arbitrary socket. We are using IPEncap to encapsulate our data in a valid IP packet, then using EtherEncap to encapsulate it into an ethernet frame. Our script looks like:
> 
> Socket(TCP, 0.0.0.0, 7777)
>    -> Print("From Socket: ")
>    -> IPEncap(0, 192.168.0.2, 192.168.0.3)
>    -> Print("From IP: ")
>    -> IPPrint("From IP: ")
>    -> EtherEncap(0x0800, 0:0:0:0:0:0, 1:1:1:1:1:1)
>    -> Print("From Ethernet: ")
>    -> Queue 
>    -> ToDevice(eth0);
> 
> Going from IPEncap to EtherEncap, we are getting the exception "expensive Packet::push; have 8 wanted 14". I have a feeling that the exception is inside IPEncap. The packet is still transmitted over the network, however we have no idea why that exception is being generated. If anyone can help us out, it would be appreciated.
> 
>                                                                        Hristo
> 
> 
> 
> 
>       
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
> 



More information about the click mailing list