[Click] ToDevice(ath0) send: Massage too long
Alexandre Becholey
alexandre.becholey at epfl.ch
Thu Dec 9 15:23:43 EST 2010
Hi,
Everybody says that first impressions hard really hard to change. I
think I ruined mine on that mailing-list... Sorry to have bother you.
Well the problem is fixed, after pushing the packet on output(0), I
killed it (p->kill()). Therefore ToDevice received a packet with data()
pointing to NULL and some random (read bufferoverflow here) length.
Best regards,
Alexandre
On Thu, 2010-12-09 at 13:32 +0000, Becholey Alexandre wrote:
> Hi,
>
> I'm trying to create a click element that add a custom header between the mac header and the ip header. My element has 1 input (ethernet frames) and 1 output (frames with the custom header).
> Here is the script:
> RatedSource
> -> UDPIPEncap(my_ip, 254, dst_ip, 254)
> -> EtherEncap(...) // I do this just to create some random ethernet frames
> -> Print(1)
> -> MyElement
> -> Print(2)
> -> EtherEncap(0x0800, my_mac, dst_mac)
> -> Print(3)
> -> Queue(2000)
> -> ToDevice(ath0)
>
> Here is what my element does in his push function:
> struct my_custom_header my_header;
> my_header.n = 1; //an unsigned int
> my_header.addr = some_addr; //a struct in_addr
> WriteablePacket * encaped_pkt = p->uniqueify();
> encaped_pkt->pull(sizeof(click_ether));
> encaped_pkt = encaped_pkt->push(sizeof(my_custom_header_t));
> memcpy(p->data(), &my_header, sizeof(my_custom_header_t));
> output(0).push(p);
>
> With the Prints I can see that my header is correctly written in the packet:
> 1: 106 | ffffffff ffff0002 6fffff04 08004500 005c0113 0000fa11
> 2: 100 | 01000000 0a0a0a07 4500005c 01130000 fa11985b 0a0a0a04
> 3: 114 | ffffffff ffff0002 6fffff04 08000100 00000a0a 0a074500
> But then I get the "ToDevice(ath0) send: Message too long"
>
> I'm using click (userlevel) on an assus router running OpenWRT (8.09) with an atheros wifi card (madwifi driver).
> When I remove MyElement and the Following EtherEncap in the script, there is no problem (I can sniff the sent frames from another router with tcpdump for example).
>
> Any idee why? It's the first time I encounter this problem. I can without any problem create some packets (Packet::make(...)) and send them.
>
> Alexandre Becholey
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
More information about the click
mailing list