hdr_sr.cc

Go to the documentation of this file.
00001 
00002 /*
00003  * hdr_sr.cc
00004  * Copyright (C) 2000 by the University of Southern California
00005  * $Id: hdr_sr.cc,v 1.6 2005/08/25 18:58:04 johnh Exp $
00006  *
00007  * This program is free software; you can redistribute it and/or
00008  * modify it under the terms of the GNU General Public License,
00009  * version 2, as published by the Free Software Foundation.
00010  *
00011  * This program is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License along
00017  * with this program; if not, write to the Free Software Foundation, Inc.,
00018  * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
00019  *
00020  *
00021  * The copyright of this module includes the following
00022  * linking-with-specific-other-licenses addition:
00023  *
00024  * In addition, as a special exception, the copyright holders of
00025  * this module give you permission to combine (via static or
00026  * dynamic linking) this module with free software programs or
00027  * libraries that are released under the GNU LGPL and with code
00028  * included in the standard release of ns-2 under the Apache 2.0
00029  * license or under otherwise-compatible licenses with advertising
00030  * requirements (or modified versions of such code, with unchanged
00031  * license).  You may copy and distribute such a system following the
00032  * terms of the GNU GPL for this module and the licenses of the
00033  * other code concerned, provided that you include the source code of
00034  * that other code when and as the GNU GPL requires distribution of
00035  * source code.
00036  *
00037  * Note that people who make modified versions of this module
00038  * are not obligated to grant this special exception for their
00039  * modified versions; it is their choice whether to do so.  The GNU
00040  * General Public License gives permission to release a modified
00041  * version without this exception; this exception also makes it
00042  * possible to release a modified version which carries forward this
00043  * exception.
00044  *
00045  */
00046 //
00047 // Other copyrights might apply to parts of this software and are so
00048 // noted when applicable.
00049 //
00050 // Ported from CMU/Monarch's code, appropriate copyright applies.  
00051 /* -*- c++ -*-
00052    hdr_sr.cc
00053 
00054    source route header
00055 */
00056 
00057 #include <stdio.h>
00058 #include "hdr_sr.h"
00059 
00060 int hdr_sr::offset_;
00061 
00062 static class SRHeaderClass : public PacketHeaderClass {
00063 public:
00064     SRHeaderClass() : PacketHeaderClass("PacketHeader/SR",
00065                          sizeof(hdr_sr)) {
00066         offset(&hdr_sr::offset_);
00067 
00068 #ifdef DSR_CONST_HDR_SZ
00069         fprintf(stderr,"WARNING: DSR treating all source route headers\n"
00070             "as having length %d. this should be used only to estimate effect\n"
00071             "of no longer needing a src rt in each packet\n",SR_HDR_SZ);
00072 #endif
00073 
00074     }
00075 #if 0
00076     void export_offsets() {
00077         field_offset("valid_", OFFSET(hdr_sr, valid_));
00078         field_offset("num_addrs_", OFFSET(hdr_sr, num_addrs_));
00079         field_offset("cur_addr_", OFFSET(hdr_sr, cur_addr_));
00080     }
00081 #endif
00082 } class_SRhdr;
00083 
00084 char *
00085 hdr_sr::dump()
00086 {
00087   static char buf[100];
00088   dump(buf);
00089   return (buf);
00090 }
00091 
00092 void
00093 hdr_sr::dump(char *buf)
00094 {
00095   char *ptr = buf;
00096   *ptr++ = '[';
00097   for (int i = 0; i < num_addrs_; i++)
00098     {
00099       ptr += sprintf(ptr, "%s%d ",
00100              (i == cur_addr_) ? "|" : "",
00101              addrs()[i].addr);
00102     }
00103   *ptr++ = ']';
00104   *ptr = '\0';
00105 }

Generated on Tue Mar 6 16:47:45 2007 for ns2 Network Simulator 2.29 by  doxygen 1.4.6