Hi list!

I got a problem handling broadcast packets. Here it is the code:

set ns [new Simulator]
$ns use-scheduler RealTime

set f [open out.tr w]
$ns trace-all $f
set nf [open out.nam w]
$ns namtrace-all $nf


proc finish {} {
    global ns f nf
    $ns flush-trace
    close $f
    close $nf
    exit 0
}

set node1 [$ns node]
set node2 [$ns node]
set node3 [$ns node]
set node4 [$ns node]
set node5 [$ns node]
set node6 [$ns node]


#Network objects to access the TAP devices at the link layer
set raw1 [new Network/Raw]
set raw2 [new Network/Raw]
set raw3 [new Network/Raw]
set raw4 [new Network/Raw]

$raw1 open tap0 readwrite
$raw2 open tap1 readwrite
$raw3 open tap2 readwrite
$raw4 open tap3 readwrite

#Tap Agent for each node
Agent/Tap set maxpkt_ 3100
set a1 [new Agent/Tap/Raw "FE:FD:0A:00:00:02"]
set a2 [new Agent/Tap/Raw "FE:FD:0A:00:00:03"]
set a3 [new Agent/Tap/Raw "FE:FD:0A:00:00:04"]
set a4 [new Agent/Tap/Raw "FE:FD:0A:00:00:05"]

puts "install nets into taps..."
#Assign network objects to TAP agents
$a1 network $raw1
$a2 network $raw2
$a3 network $raw3
$a4 network $raw4


#Assign TAP agents to ns-2 nodes
$ns attach-agent $node1 $a1
$ns attach-agent $node2 $a2
$ns attach-agent $node3 $a3
$ns attach-agent $node4 $a4


# Setup connections between the nodes
$ns duplex-link $node1 $node5 2Mb 2ms DropTail
$ns duplex-link $node2 $node5 2Mb 2ms DropTail
$ns duplex-link $node5 $node6 2Mb 15ms DropTail
$ns duplex-link $node6 $node3 2Mb 2ms DropTail
$ns duplex-link $node6 $node4 2Mb 2ms DropTail



$ns at 20.0 "finish"

$ns run


I'm using a nse extension to have some real (UML) machines talking each other 
via ns-2. If I use this code I get the error:

[EMAIL PROTECTED] ns2emulation]# ../nse mah.tcl
Using gettimeofday() insdead of the CPU cycle counter to guarantee portability
install nets into taps...
TapAgent: changing the src and dst address to 0:0 ---> -1:0
0.478134: Tap(_o33): recvpkt, writing to target: _o13
--- Classfier::no-slot{} default handler (tcl/lib/ns-lib.tcl) ---
        _o13: no target for slot -1
        _o13 type: Classifier/Hash/Dest
content dump:
classifier _o13
        0 offset
        0 shift
        2147483647 mask
        1 slots
                slot 0: _o37 (Classifier/Port)
        -1 default
---------- Finished standard no-slot{} default handler ----------

Usually I get this error when something is not correctly linked. If on the UML 
machines I set the ARP statically, it's work (I get the error  on the 
arp-request Who has 10.0.0.2...that is broadcast)

The code than handle this is:

void
RawTapAgent::processpkt (Packet* p, const NodeInfo& srcinfo) {

        hdr_cmn* ch = HDR_CMN(p);
        hdr_ip* ip = HDR_IP(p);
        NodeInfo dstinfo = ((uint8_t*)p->accessdata ());
        if (dstinfo.mac () == NodeInfo::broadcast_addr) { //A broadcast packet
                ip->daddr () = IP_BROADCAST;
                ip->dport () = 0;
                TDEBUG5 ("TapAgent: changing the src and dst address to %d:%d 
---> %d:%d\n", srcinfo.get_node_addr (), 0, -1, 0);
        } else {
                nit = lower_bound (nodes.begin (), nodes.end (), dstinfo);
                if (nit == nodes.end () || (dstinfo < *nit)) { //Destination 
address not found in the map table
                        Packet::free (p);
                        TDEBUG ("Dropped packet: invalid destination\n");
                        return;
                }
                ip->daddr () = (*nit).get_node_addr ();
                ip->dport () = 0;
                TDEBUG5 ("TapAgent: changing the src and dst address to %d:%d 
---> %d:%d\n", srcinfo.get_node_addr (), 0, (*nit).get_node_addr (), 0);
        }
                
        ip->saddr () = srcinfo.get_node_addr ();
        ip->sport () = 0;
        
        TDEBUG4("%f: Tap(%s): recvpkt, writing to target: %s\n",
                now(), name(), target_->name());

        Scheduler::instance().sync ();
        ch->timestamp() = now();
        target_->recv(p);

        return;
}


How can I solve this? Please, I really need a soluzione for this!
If I use the wireless scenario they provided me, all works fine.

Regards,
                          Paolo Carpo  

Reply via email to