[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [ns] Need help on new Node Classifier!!!



It seems you didn't install the object(link head) into the slot table of the
classifiers. BTW, where are your links?

Regards,
Peng He

-----Original Message-----
From: [email protected] [mailto:[email protected]]On Behalf Of
Xiaojun Cao
Sent: July 24, 2001 3:02 PM
Cc: [email protected]
Subject: [ns] Need help on new Node Classifier!!!


hi,
I am trying to simulate a node which has packet filter. So I create a
new classifer inherted from AddressClassifier and override its Function
::recv, it's just like following:

void myClassifier::recv(Packet *p, Handler *h)
{
    hdr_ip * iph=hdr_ip::access(p);
    nsaddr_t src=mshift(iph->saddr());
    nsaddr_t dst=mshift(iph->daddr());
    int fid=iph->flowid();

NsObject * target =find(p);
if(dst==Currentid){

    if(!target) target->recv(p,h);
....
}
....

}

Basically, I will check the destionation address and decide whether this
packet will be passed to an upper agent or next node.
The problem came from: find(p)----> I can trace and found that  nslot_
is always 0, however, cl=classify(p) would be 3.  I dont know why?
Could you give me a hand?
Thanks a lot!

yours,
Xiaojun Cao

********Here is the dump info:

--- Classfier::no-slot{} default handler (tcl/lib/ns-lib.tcl) ---
    _o17: no target for slot 3
    _o17 type: Classifier/Addr/MYFiL
content dump:
classifier _o17
    0 offset
    0 shift
    2147483647 mask
    0 slots
---------- Finished standard no-slot{} default handler ----------

********The toplogy is as following:

set n0 [$ns node]
set n1 [$ns MyNode]
set n2 [$ns MyNode]

#n0--->n1-->n2
#n0 send udp packet to n2
....

******The node tcl code is as following:
MyNode instproc mk-default-classifier {} {

    $self instvar address_ classifier_ id_
    set classifier_ [new Classifier/Addr/MYFiL]
     $classifier_ set mask_ [AddrParams NodeMask 1]
     $classifier_ set shift_ [AddrParams NodeShift 1]
     set address_ $id_
}