Hi all
I am working with the IEEE 802.15.4 ns-2 implementation. I added a new packet
type and I have problems when I try to send it.
I define the packet, which size of payload is 8 bytes (ch->size() = 8 +
IP_HEADER_LEN). Then, I populate the HDR_CMN fields like this:
___
struct hdr_cmn *ch = HDR_CMN(p);
ch->ptype() = PT_MYTYPE;
ch->size() = 8 + IP_HEADER_LEN
ch->iface() = -2;
ch->error() = 0;
ch->prev_hop_ = address;//node's address
ch->next_hop_ = IP_BROADCAST;//It is a broadcast transmission
ch->addr_type() =NS_AF_NONE;
ch->direction() = hdr_cmn::DOWN;
___
and the HDR_fields:
___
struct hdr_ip *ih = HDR_IP(p);
ih->saddr() = address;
ih->daddr() = IP_BROADCAST;
ih->sport() = RT_PORT;
ih->dport() = RT_PORT;
ih->ttl_ = 1;
___
and I send it from the routing layer (AODV) with:
___
Scheduler::instance().schedule(target_, p, 0.0);
___
This packet is transmitted periodically. Then, when I check the trace file, the
simulator generates the following: The first time that the packet is
transmitted, its size at the routing layer is 120 when it should be 8+20 = 28
bytes:
...
s 400.0 _0_ RTR --- 0 my_type 120 [0 0 0 0] --- [0:255 -1:255 1 0]
s 400.000345000 _0_ MAC --- 0 my_type 127 [0 0 800] --- [0:255
-1:255 1 0]
...
And the rest of messages have the correct size but they never go to the MAC
layer but to the IFQ (and dropped).
...
s 469.298724000 _0_ RTR --- 0 my_type 28 [0 0 0 0] --- [0:255 -1:255 1 0]
D 469.298749000 _0_ IFQ --- 0 my_type 28 [0 0 800] --- [0:255
-1:255 1 0]
...
I do not understant what I am doing wrong and why this is happening. If there
are no ideas about the first problem (strange size of the packet), I would like
to know why a packet is sent to the IFQ.
I appreciate all the help possible.
Thanks in advance,
David