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