Asraf wrote:
> I am trying to print out the route table, and rt_print function in aodv.cc
> plus this code on in AODV::command:
>
> int
> AODV::command(int argc, const char*const* argv) {
> ...
> ...
> else if (strcasecmp(argv[1], "rt_print") == 0) {// print routing tables to a
> file
>         FILE *fp = fopen("route.txt","a");
>         printf("\nRouting table at node %d\n", addr());
>         fclose(fp);
>
>         return TCL_OK;
>         } 
> }
>  
> and call this in my TCL like this:
>
> for {set i 1} {$i < $nodes} {incr i} {
>         $ns_ at 10.0 "$node_($i) rt_print"
> }
>
> But I get an error:
>
> ns: _o32 rt_print:
>     (_o32 cmd line 1)
>     invoked from within
> "_o32 cmd rt_print"
>     invoked from within
> "catch "$self cmd $args" ret"
>     (procedure "_o32" line 2)
>     (SplitObject unknown line 2)
>     invoked from within
> "_o32 rt_print"
>
>
> Does anyone know how to solve this SplitObject error. From my understanding,
> SplitObject error is caused by no having a corresponding C++ object used in
> TCL. Any pointers?? 
>
> Or If I want to print out the routing table in AODV, how do I do it?
>
> Many Thanks,
> Asraf.
>
>   
In your TCL script, you have called "rt_print" as :

*$ns_ at 10.0 "$node_($i) rt_print"*

This is as if it is a /procedure of NODE object/, (which is certainly 
not true here!). Rather you should call it as
/ ................... "$val(rp) rt_print"/
where, $val(rp) is your AODV, adhocRouting. You can now fine tune 
yourself as per your need.

regards,
Mayur

Reply via email to