Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

tora_logs.cc

Go to the documentation of this file.
00001 /*
00002   $Id: tora_logs.cc,v 1.3 2001/05/21 19:27:34 haldar Exp $
00003   */
00004 
00005 #include <agent.h>
00006 #include <random.h>
00007 #include <trace.h>
00008 
00009 #include <ll.h>
00010 #include <priqueue.h>
00011 #include <tora/tora_packet.h>
00012 #include <tora/tora.h>
00013 
00014 #define CURRENT_TIME    Scheduler::instance().clock()
00015 
00016 static const int verbose = 0;
00017 
00018 /* ======================================================================
00019    Logging Functions
00020    ====================================================================== */
00021 void
00022 toraAgent::log_route_loop(nsaddr_t prev, nsaddr_t next)
00023 {
00024         if(! logtarget || ! verbose ) return;
00025 
00026         sprintf(logtarget->pt_->buffer(),
00027                 "T %.9f _%d_ routing loop (%d --> %d --> %d)",
00028                 CURRENT_TIME, ipaddr(), prev, ipaddr(), next);
00029         logtarget->pt_->dump();
00030 }
00031 
00032 void
00033 toraAgent::log_link_layer_feedback(Packet *p)
00034 {
00035         static int link_layer_feedback = 0;
00036         struct hdr_cmn *ch = HDR_CMN(p);
00037 
00038         if(! logtarget || ! verbose) return;
00039 
00040         sprintf(logtarget->pt_->buffer(),
00041                 "T %.9f _%d_ LL unable to deliver packet %d to %d (%d) (reason = %d, ifqlen = %d)",
00042                 CURRENT_TIME,
00043                 ipaddr(),
00044                 ch->uid_,
00045                 ch->next_hop_,
00046                 ++link_layer_feedback,
00047                 ch->xmit_reason_,
00048                 ifqueue->length());
00049 
00050         logtarget->pt_->dump();
00051 }
00052 
00053 
00054 void
00055 toraAgent::log_link_layer_recycle(Packet *p)
00056 {
00057         struct hdr_cmn *ch = HDR_CMN(p);
00058         struct hdr_ip *ih = HDR_IP(p);
00059 
00060         if(! logtarget || ! verbose) return;
00061 
00062         sprintf(logtarget->pt_->buffer(),
00063                 "T %.9f _%d_ recycling packet %d (src = %d, dst = %d, prev = %d, next = %d)",
00064                 CURRENT_TIME,
00065                 ipaddr(),
00066                 ch->uid_,
00067                 //                ih->src_, ih->dst_,
00068                 ih->saddr(),ih->daddr(),
00069                 ch->prev_hop_, ch->next_hop_);
00070         logtarget->pt_->dump();
00071 }
00072         
00073 void
00074 toraAgent::log_lnk_del(nsaddr_t dst)
00075 {
00076         static int link_del = 0;
00077 
00078         if(! logtarget || ! verbose) return;
00079 
00080         /*
00081          *  If "god" thinks that these two nodes are still
00082          *  reachable then this is an erroneous deletion.
00083          */
00084         sprintf(logtarget->pt_->buffer(),
00085                 "T %.9f _%d_ deleting LL hop to %d (delete %d is %s)",
00086                 CURRENT_TIME,
00087                 ipaddr(),
00088                 dst,
00089                 ++link_del,
00090                 God::instance()->hops(ipaddr(), dst) != 1 ? "VALID" : "INVALID");
00091         logtarget->pt_->dump();
00092 }
00093 
00094 void
00095 toraAgent::log_lnk_kept(nsaddr_t dst)
00096 {
00097         static int link_kept = 0;
00098 
00099         if(! logtarget || ! verbose) return;
00100 
00101         /*
00102          *  If "god" thinks that these two nodes are now
00103          *  unreachable, then we are erroneously keeping
00104          *  a bad route.
00105          */
00106         sprintf(logtarget->pt_->buffer(),
00107                 "T %.9f _%d_ keeping LL hop to %d (keep %d is %s)",
00108                 CURRENT_TIME,
00109                 ipaddr(),
00110                 dst,
00111                 ++link_kept,
00112                 God::instance()->hops(ipaddr(), dst) == 1 ? "VALID" : "INVALID");
00113         logtarget->pt_->dump();
00114 }
00115 
00116 void
00117 toraAgent::log_nb_del(nsaddr_t dst, nsaddr_t id)
00118 {
00119         if(! logtarget || ! verbose) return;
00120 
00121         sprintf(logtarget->pt_->buffer(),
00122                 "T %.9f _%d_ destination %d removing neighbor %d",
00123                 CURRENT_TIME,
00124                 ipaddr(),
00125                 dst, id);
00126         logtarget->pt_->dump();
00127 }
00128 
00129 void
00130 toraAgent::log_recv_qry(Packet *p)
00131 {
00132         struct hdr_ip *ih = HDR_IP(p);
00133         struct hdr_tora_qry *qh = HDR_TORA_QRY(p);
00134 
00135         if(! logtarget || ! verbose) return;
00136 
00137         sprintf(logtarget->pt_->buffer(),
00138                 "T %.9f %d received `QRY` from %d --- %d",
00139                 CURRENT_TIME, ipaddr(), ih->saddr(), qh->tq_dst);
00140         logtarget->pt_->dump();
00141 }
00142 
00143 void
00144 toraAgent::log_recv_upd(Packet *p)
00145 {
00146         struct hdr_ip *ih = HDR_IP(p);
00147         struct hdr_tora_upd *uh = HDR_TORA_UPD(p);
00148 
00149         if(! logtarget || ! verbose) return;
00150 
00151         sprintf(logtarget->pt_->buffer(),
00152                 "T %.9f _%d_ received `UPD` from %d --- %d (%f %d %d %d %d)",
00153                 CURRENT_TIME,
00154                 ipaddr(),
00155                 // ih->src_, uh->tu_dst,
00156                 ih->saddr(), uh->tu_dst,
00157                 uh->tu_tau, uh->tu_oid, uh->tu_r, uh->tu_delta, uh->tu_id);
00158         logtarget->pt_->dump();
00159 }
00160 
00161 void
00162 toraAgent::log_recv_clr(Packet *p)
00163 {
00164         struct hdr_ip *ih = HDR_IP(p);
00165         struct hdr_tora_clr *ch = HDR_TORA_CLR(p);
00166 
00167         if(! logtarget || ! verbose) return;
00168 
00169         sprintf(logtarget->pt_->buffer(),
00170                 "T %.9f _%d_ received `CLR` from %d --- %d (%f %d)",
00171                 CURRENT_TIME,
00172                 ipaddr(),
00173                 // ih->src_,
00174                 ih->saddr(),
00175                 ch->tc_dst, ch->tc_tau, ch->tc_oid);
00176         logtarget->pt_->dump();
00177 }
00178 
00179 
00180 void 
00181 toraAgent::log_route_table()
00182 {
00183         TORADest *td;
00184         TORANeighbor *tn;
00185 
00186         if (!logtarget || ! verbose) return;
00187 
00188         for(td = dstlist.lh_first; td; td = td->link.le_next) {
00189                 tn = td->nb_find_next_hop();
00190 
00191                 sprintf(logtarget->pt_->buffer(),
00192                         "T %.9f _%d_ %2d (%9f %2d %2d %2d %2d) ---> %2d (%9f %2d %2d %2d %2d) %d %.9f --- (%2d a, %2d d, %2d u) %d %9f",
00193                         CURRENT_TIME,
00194                         ipaddr(),
00195                         td->index,
00196                         td->height.tau, td->height.oid, td->height.r,
00197                         td->height.delta, td->height.id,
00198                         tn ? tn->index : -1,
00199                         tn ? tn->height.tau : -1.0,
00200                         tn ? tn->height.oid : -1,
00201                         tn ? tn->height.r : -1,
00202                         tn ? tn->height.delta : -1,
00203                         tn ? tn->height.id: -1,
00204                         tn ? tn->lnk_stat : -1,
00205                         tn ? tn->time_act : -1.0,
00206                         td->num_active, td->num_down, td->num_up,
00207                         td->rt_req, td->time_upd);
00208 
00209                 logtarget->pt_->dump();
00210         }
00211 
00212         sprintf(logtarget->pt_->buffer(),
00213                 "T --------------------------------------------------");
00214         logtarget->pt_->dump();
00215 }
00216 
00219 
00220 void
00221 toraAgent::logToraDest(TORADest *td)
00222 {
00223         if(! verbose) return;
00224 
00225         assert(td);
00226 
00227         sprintf(logtarget->pt_->buffer(),
00228                 "T %.9f _%d_ TD %2d (%9f %2d %2d %2d %2d) --- (%2d a, %2d d, %2d u) %d %9f",
00229                         CURRENT_TIME,
00230                         ipaddr(),
00231                         td->index,
00232                         td->height.tau, td->height.oid, td->height.r,
00233                         td->height.delta, td->height.id,
00234                         td->num_active, td->num_down, td->num_up,
00235                         td->rt_req, td->time_upd);
00236         logtarget->pt_->dump();
00237 }
00238 
00239 
00240 void
00241 toraAgent::logToraNeighbor(TORANeighbor *tn)
00242 {
00243         if(! verbose) return;
00244 
00245         assert(tn);
00246 
00247         sprintf(logtarget->pt_->buffer(),
00248                 "T %.9f _%d_ TN %2d (%.9f %2d %2d %2d %2d) %d %.9f",
00249                 CURRENT_TIME,
00250                 ipaddr(),
00251                 tn->index,
00252                 tn->height.tau,
00253                 tn->height.oid,
00254                 tn->height.r,
00255                 tn->height.delta,
00256                 tn->height.id,
00257                 tn->lnk_stat,
00258                 tn->time_act);
00259         logtarget->pt_->dump();
00260 }
00261 
00262 void
00263 toraAgent::logNextHopChange(TORADest *td)
00264 {
00265         if(! verbose) return;
00266 
00267         TORANeighbor *n;
00268 
00269         assert(td);
00270 
00271         logToraDest(td);
00272 
00273         for(n = td->nblist.lh_first; n; n = n->link.le_next)
00274                 logToraNeighbor(n);
00275 
00276         n = td->nb_find_next_hop();
00277         if(n) {
00278                 sprintf(logtarget->pt_->buffer(), "T %.9f _%d_ nexthop for %d is %d", 
00279                         CURRENT_TIME, ipaddr(), td->index, n->index);
00280                 logtarget->pt_->dump();
00281         }
00282 
00283         sprintf(logtarget->pt_->buffer(),
00284                 "T %.9f _%d_ --------------------------------------------------",
00285                 CURRENT_TIME,
00286                 ipaddr());
00287         logtarget->pt_->dump();
00288 }
00289 
00290 void
00291 toraAgent::logNbDeletedLastDN(TORADest *td)
00292 {
00293         if(! verbose) return;
00294 
00295         sprintf(logtarget->pt_->buffer(), "T %.9f _%d_ lost last downstream link for destination %d",
00296                 CURRENT_TIME,
00297                 ipaddr(),
00298                 td->index);
00299         logtarget->pt_->dump();
00300 
00301         logNextHopChange(td);
00302 }
00303 

Generated on Tue Apr 20 12:14:37 2004 for NS2.26SourcesOriginal by doxygen 1.3.3