On 10/9/06, Pedro Vale Estrela <[EMAIL PROTECTED]> wrote:
>
> Inside my recv() function I do like this without problems:
>
>
> // clone the current packet and change some fields
> Packet* new_p = clone_pkt(p);
>
> hdr_ip *new_iph = hdr_ip::access(new_p);
>
> new_iph->daddr() = ...;
> new_iph->saddr() = addr();
>
> // change fields on the current packet
> iph->daddr() = id2iaddr(th->b_id);
> iph->saddr() = addr();
>
>
> // send original packet somewhere
> send(p, 0);
>
> // send cloned packet elsewhere
> send(new_p, 0);
>
That doesn't seem to work for me when my class inherits from the queue class.
In my recv function I am doing:
while ((pkt = deque()) != NULL) {
send(pkt,0);
}
I get this error:
Scheduler: attempt to schedule an event with a NULL handler. Don't DO that.
If I change it to use the handler that is inherited from the queue class as
while ((pkt = deque()) != NULL) {
send(pkt,&qh_);
}
I get an error like:
Scheduler: Event UID not valid!
If I only do process one packet each time recv is called but always
schedule() with a small
delay, I get NS time backwards error.
I need to schedule every 5-10ms even if no packets are arriving as the
object may have
held packets because of the queuing functions.