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

l4protocol.h

Go to the documentation of this file.
00001 // GENERAL PUBLIC LICENSE AGREEMENT
00002 // 
00003 // PLEASE READ THIS DOCUMENT CAREFULLY BEFORE UTILIZING THE PROGRAM
00004 // 
00005 // BY UTILIZING THIS PROGRAM, YOU AGREE TO BECOME BOUND BY THE TERMS OF
00006 // THIS LICENSE.  IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENSE, DO
00007 // NOT USE THIS PROGRAM OR ANY PORTION THEREOF IN ANY FORM OR MANNER.
00008 // 
00009 // This Program is licensed, not sold to you by GEORGIA TECH RESEARCH
00010 // CORPORATION ("GTRC"), owner of all code and accompanying documentation
00011 // (hereinafter "Program"), for use only under the terms of this License,
00012 // and GTRC reserves any rights not expressly granted to you.
00013 // 
00014 // 1.  This License allows you to:
00015 // 
00016 // (a) make copies and distribute copies of the Program's source code
00017 // provide that any such copy clearly displays any and all appropriate
00018 // copyright notices and disclaimer of warranty as set forth in Article 5
00019 // and 6 of this License.  All notices that refer to this License and to
00020 // the absence of any warranty must be kept intact at all times.  A copy
00021 // of this License must accompany any and all copies of the Program
00022 // distributed to third parties.
00023 // 
00024 // A fee may be charged to cover the cost associated with the physical
00025 // act of transferring a copy to a third party.  At no time shall the
00026 // program be sold for commercial gain either alone or incorporated with
00027 // other program(s) without entering into a separate agreement with GTRC.
00028 //  
00029 // 
00030 // (b) modify the original copy or copies of the Program or any portion
00031 // thereof ("Modification(s)").  Modifications may be copied and
00032 // distributed under the terms and conditions as set forth above,
00033 // provided the following conditions are met:
00034 // 
00035 //     i) any and all modified files must be affixed with prominent
00036 // notices that you have changed the files and the date that the changes
00037 // occurred.
00038 //              
00039 //     ii) any work that you distribute, publish, or make available, that
00040 // in whole or in part contains portions of the Program or derivative
00041 // work thereof, must be licensed at no charge to all third parties under
00042 // the terms of this License.
00043 // 
00044 //    iii) if the modified program normally reads commands interactively
00045 // when run, you must cause it, when started running for such interactive
00046 // use in the most ordinary way, to display and/or print an announcement
00047 // with all appropriate copyright notices and disclaimer of warranty as
00048 // set forth in Article 5 and 6 of this License to be clearly displayed.
00049 // In addition, you must provide reasonable access to this License to the
00050 // user.
00051 // 
00052 // Any portion of a Modification that can be reasonably considered
00053 // independent of the Program and separate work in and of itself is not
00054 // subject to the terms and conditions set forth in this License as long
00055 // as it is not distributed with the Program or any portion thereof.
00056 // 
00057 // 
00058 // 2. This License further allows you to copy and distribute the Program
00059 //    or a work based on it, as set forth in Article 1 Section b in
00060 //    object code or executable form under the terms of Article 1 above
00061 //    provided that you also either:
00062 // 
00063 //    i) accompany it with complete corresponding machine-readable source
00064 // code, which must be distributed under the terms of Article 1, on a
00065 // medium customarily used for software interchange; or,
00066 // 
00067 //   ii) accompany it with a written offer, valid for no less than three
00068 // (3) years from the time of distribution, to give any third party, for
00069 // no consideration greater than the cost of physical transfer, a
00070 // complete machine-readable copy of the corresponding source code, to be
00071 // distributed under the terms of Article 1 on a medium customarily used
00072 // for software interchange; or,
00073 // 
00074 // 
00075 // 3.  Export Law Assurance.
00076 // 
00077 // You agree that the Software will not be shipped, transferred or
00078 // exported, directly into any country prohibited by the United States
00079 // Export Administration Act and the regulations thereunder nor will be
00080 // used for any purpose prohibited by the Act.
00081 //  
00082 // 4.  Termination.
00083 // 
00084 // If at anytime you are unable to comply with any portion of this
00085 // License you must immediately cease use of the Program and all
00086 // distribution activities involving the Program or any portion thereof.
00087 // 
00088 // 
00089 // 5.  Disclaimer of Warranties and Limitation on Liability.
00090 // 
00091 // YOU ACCEPT THE PROGRAM ON AN "AS IS" BASIS.  GTRC MAKES NO WARRANTY
00092 // THAT ALL ERRORS CAN BE OR HAVE BEEN ELIMINATED FROM PROGRAM.  GTRC
00093 // SHALL NOT BE RESPONSIBLE FOR LOSSES OF ANY KIND RESULTING FROM THE USE
00094 // OF PROGRAM AND ITS ACCOMPANYING DOCUMENT(S), AND CAN IN NO WAY PROVIDE
00095 // COMPENSATION FOR ANY LOSSES SUSTAINED, INCLUDING BUT NOT LIMITED TO
00096 // ANY OBLIGATION, LIABILITY, RIGHT, CLAIM OR REMEDY FOR TORT, OR FOR ANY
00097 // ACTUAL OR ALLEGED INFRINGEMENT OF PATENTS, COPYRIGHTS, TRADE SECRETS,
00098 // OR SIMILAR RIGHTS OF THIRD PARTIES, NOR ANY BUSINESS EXPENSE, MACHINE
00099 // DOWNTIME OR DAMAGES CAUSED TO YOU BY ANY DEFICIENCY, DEFECT OR ERROR
00100 // IN PROGRAM OR MALFUNCTION THEREOF, NOR ANY INCIDENTAL OR CONSEQUENTIAL
00101 // DAMAGES, HOWEVER CAUSED.  GTRC DISCLAIMS ALL WARRANTIES, BOTH EXPRESS
00102 // AND IMPLIED RESPECTING THE USE AND OPERATION OF PROGRAM AND ITS
00103 // ACCOMPANYING DOCUMENTATION, INCLUDING ALL IMPLIED WARRANTIES OF
00104 // MERCHANTABILITY AND FITNESS FOR PARTICULAR PURPOSE AND ANY IMPLIED
00105 // WARRANTY ARISING FROM COURSE OF PERFORMANCE, COURSE OF DEALING OR
00106 // USAGE OF TRADE.  GTRC MAKES NO WARRANTY THAT PROGRAM IS ADEQUATELY OR
00107 // COMPLETELY DESCRIBED IN, OR BEHAVES IN ACCORDANCE WITH ANY
00108 // ACCOMPANYING DOCUMENTATION.  THE USER OF PROGRAM IS EXPECTED TO MAKE
00109 // THE FINAL EVALUATION OF PROGRAM'S USEFULNESS IN USER'S OWN
00110 // ENVIRONMENT.
00111 // 
00112 // GTRC represents that, to the best of its knowledge, the software
00113 // furnished hereunder does not infringe any copyright or patent.
00114 // 
00115 // GTRC shall have no obligation for support or maintenance of Program.
00116 // 
00117 // 6.  Copyright Notice.
00118 // 
00119 // THE SOFTWARE AND ACCOMPANYING DOCUMENTATION ARE COPYRIGHTED WITH ALL
00120 // RIGHTS RESERVED BY GTRC.  UNDER UNITED STATES COPYRIGHT LAWS, THE
00121 // SOFTWARE AND ITS ACCOMPANYING DOCUMENTATION MAY NOT BE COPIED EXCEPT
00122 // AS GRANTED HEREIN.
00123 // 
00124 // You acknowledge that GTRC is the sole owner of Program, including all
00125 // copyrights subsisting therein.  Any and all copies or partial copies
00126 // of Program made by you shall bear the copyright notice set forth below
00127 // and affixed to the original version or such other notice as GTRC shall
00128 // designate.  Such notice shall also be affixed to all improvements or
00129 // enhancements of Program made by you or portions thereof in such a
00130 // manner and location as to give reasonable notice of GTRC's copyright
00131 // as set forth in Article 1.
00132 // 
00133 // Said copyright notice shall read as follows:
00134 // 
00135 // Copyright 2004
00136 // Dr. George F. Riley
00137 // Georgia Tech Research Corporation
00138 // Atlanta, Georgia 30332-0415
00139 // All Rights Reserved
00140 //
00141 // $Id: l4protocol.h 475 2006-03-13 17:03:29Z sunithab $
00142 
00143 
00144 
00145 // Georgia Tech Network Simulator - Layer 4 Protocol base class
00146 // George F. Riley.  Georgia Tech, Spring 2002
00147 
00148 // Define the layer 4 protocol interface
00149 
00150 #ifndef __l4protocol_h__
00151 #define __l4protocol_h__
00152 
00153 #include "protocol.h"
00154 #include "l3protocol.h"
00155 #include "node.h"
00156 #include "ipv4.h"
00157 #include "datapdu.h"
00158 #include "event.h"
00159 #include "handler.h"
00160 
00161 class Application;
00162 class Interface;
00163 class Notifier;
00164 class Interface;
00165 
00166 class QColor;
00167 
00168 //Doc:ClassXRef
00169 class L4PDU : public PDU {
00170 public:
00171   L4PDU() : PDU() { }
00172   virtual Layer_t Layer() { return 4; }
00173 };
00174 
00175 //Doc:ClassXRef
00176 class L4Protocol : public Protocol, public Handler {
00177   //Doc:Class Class {\tt L4Protocol} is a virtual base class defines
00178   //Doc:Class the interface
00179   //Doc:Class for all of the layer 4 protocols in \GTNS.
00180 
00181 public:
00182   typedef enum { DELAYED_RX, DELAYED_TX } L4DelayEv_t;
00183 
00184 public:
00185   //Doc:Method
00186   L4Protocol();
00187     //Doc:Desc Default constructor, no arguments.
00188 
00189   //Doc:Method
00190   L4Protocol(Node* n);
00191     //Doc:Desc Construct a layer 4 protocol and assign it to the specified
00192     //Doc:Desc node.
00193     //Doc:Arg1 Pointer to node to which to assign this protocol.
00194 
00195   //Doc:Method
00196   L4Protocol(const L4Protocol&); // Copy constructor
00197     //Doc:Desc Copy constructor.
00198     //Doc:Arg1 L4Protocol object to copy.
00199 
00200   virtual ~L4Protocol();
00201 
00202   //Doc:Method
00203   virtual void Handle(Event*, Time_t);
00204     //Doc:Desc The layer 4 protocol class is a subclass of {\tt Handler}, 
00205     //Doc:Desc since it must handle events, specificaly
00206     //Doc:Desc the delayed transmit and receive events for processing
00207     //Doc:Desc "ExtraDelay".
00208     //Doc:Arg1 A pointer to the event being handled.
00209     //Doc:Arg2 The current simulation time.
00210 
00211 
00212   //Doc:Method
00213   virtual Layer_t Layer() { return 4;}   // Protocol layer number
00214     //Doc:Desc All protocol objects in \GTNS\ must define the {\tt Layer}
00215     //Doc:Desc method, returning the protocol layer for this protocol.
00216     //Doc:Return Protocol layer number for this L4 protocol (always 4).
00217 
00218 public:
00219   // Data indication From lower layer
00220   //Doc:Method
00221   virtual void DataIndication(Node*, Packet*, IPAddr_t, Interface*) = 0;
00222     //Doc:Desc Indicates that a packet has been received by the layer 3
00223     //Doc:Desc protocol addressed to this node, and the protocol number in 
00224     //Doc:Desc the L3 header matches the registered protocol number for 
00225     //Doc:Desc this protocol.
00226     //Doc:Arg1 Node pointer to associated node.
00227     //Doc:Arg2 Pointer to the received packet.  The L3 PDU has been removed,
00228     //Doc:Arg3 so the L4 PDU is the top of the PDU stack.
00229     //Doc:Arg3 \IPA\ of destination, since nodes can have multiple \IPA{s}.
00230     //Doc:Arg4 Interface from which this packet was received.
00231 public:
00232   // Sending data
00233   //Doc:Method
00234   virtual NCount_t Send(Size_t) = 0;         // Send empty data
00235     //Doc:Desc Send the specified amount of data.  This version of {\tt Send}
00236     //Doc:Desc does not actually use data contents, just an indication
00237     //Doc:Desc of the amount of data.  This is useful for applications
00238     //Doc:Desc where data contents is not needed for the simulation.
00239     //Doc:Arg1 Number of bytes to send.
00240     //Doc:Return Number of bytes actually sent.
00241 
00242   //Doc:Method
00243   virtual NCount_t Send(char*, Size_t) = 0;  // Send with data
00244     //Doc:Desc Send the specified data.  This version uses both data size
00245     //Doc:Desc and data contents.
00246     //Doc:Arg1 Pointer to data to send.
00247     //Doc:Arg2 Number of bytes to send.
00248     //Doc:Return Number of bytes actually sent.
00249 
00250   //Doc:Method
00251   virtual NCount_t Send(Data&) = 0;          // Send with data
00252     //Doc:Desc Send the specified {\tt Data} PDU.
00253     //Doc:Arg1 Reference to the {\tt Data} PDU to send.  {\tt Data} PDUs
00254     //Doc:Arg1 have size and an optional contents field.
00255     //Doc:Return Number of bytes actually sent.
00256 
00257   //Doc:Method
00258   virtual NCount_t SendTo(Size_t, IPAddr_t, PortId_t) = 0; // Send to target
00259     //Doc:Desc Send  the specifed number of bytes to the specified \IPA\ and
00260     //Doc:Desc port.  Does not include data contents.
00261     //Doc:Arg1 Number of bytes to send.
00262     //Doc:Arg2 Destination \IPA.
00263     //Doc:Arg3 Destination port.
00264     //Doc:Return Number of bytes actually sent.
00265 
00266   //Doc:Method
00267   virtual NCount_t SendTo(char*, Size_t, IPAddr_t, PortId_t) = 0;// Send w/data
00268     //Doc:Desc Send  the specifed number of bytes with associated
00269     //Doc:Desc data contents to the specified \IPA\ and
00270     //Doc:Desc port.
00271     //Doc:Arg1 Number of bytes to send.
00272     //Doc:Arg2 Pointer to data to send.
00273     //Doc:Arg3 Destination \IPA.
00274     //Doc:Arg4 Destination port.
00275     //Doc:Return Number of bytes actually sent.
00276 
00277   //Doc:Method
00278   virtual NCount_t SendTo(Data&, IPAddr_t, PortId_t) = 0;        // Send w/data
00279     //Doc:Desc Send a {\tt Data} PDU to the specified destination.
00280     //Doc:Arg1 Reference to the {\tt Data} PDU to send.  {\tt Data} PDUs
00281     //Doc:Arg1 have size and an optional contents field.
00282     //Doc:Arg2 Destination \IPA.
00283     //Doc:Arg3 Destination port.
00284     //Doc:Return Number of bytes actually sent.
00285 
00286   // Binding
00287   //Doc:Method
00288   virtual bool Bind(PortId_t);       // Bind to specific port
00289     //Doc:Desc Bind this L4 protocol to the specifed port on the the attached
00290     //Doc:Desc node.
00291     //Doc:Arg1 Port number to bind.
00292     //Doc:Return True if successful.
00293 
00294   //Doc:Method
00295   virtual bool Bind();               // Bind to available port
00296     //Doc:Desc Bind this L4 protocol to any available port on the
00297     //Doc:Desc attached node.
00298     //Doc:Return True if successful.
00299 
00300   //Doc:Method
00301   virtual bool Unbind(Proto_t proto, PortId_t port); // Remove port binding
00302     //Doc:Desc Remove a port binding.
00303     //Doc:Arg1 Protocol number for this L4 object.
00304     //Doc:Arg2 Port number to remove binding for.
00305     //Doc:Return True  if successful.
00306 
00307   // Connection management
00308   //Doc:Method
00309   void Attach(Node* n) { localNode = n;}
00310     //Doc:Desc Attach this L4 object to the specified node.
00311     //Doc:Arg1 Pointer to node to attach.
00312 
00313   //Doc:Method
00314   PortId_t Port() { return localPort;}
00315     //Doc:Desc Return the currently bound port number.
00316     //Doc:Return Currently bound port, or PORT_NONE if not bound.
00317 
00318   //Doc:Method
00319   virtual Proto_t  Proto() const = 0;
00320     //Doc:Desc Return the protocol number for this layer  4 protocol
00321     //Doc:Return Protocol number
00322 
00323   //Doc:Method
00324   virtual bool Connect(IPAddr_t, PortId_t) = 0; // Connect to remote host
00325     //Doc:Desc Initiate a connection to a remote host.
00326     //Doc:Arg1 \IPA\ of remote host.
00327     //Doc:Arg2 Port number of remote L4 protocol.
00328     //Doc:Return True if connection initiated ok.  This does not mean
00329     //Doc:Return the connection was successful if a {\tt TCP} L4 object.
00330 
00331   //Doc:Method
00332   virtual bool Close() = 0;                     // Close connection to remote
00333     //Doc:Desc Close an open connection.
00334     //Doc:Return True if close  is successful.  This does not mean that a
00335     //Doc:Return {\tt TCP} connection has completely closed, since the
00336     //Doc:Return return is immediate.  {\tt TCP} will timeout and retry
00337     //Doc:Return the close action if the {\tt FIN} packet is lost.
00338 
00339   // Miscellaneous
00340   //Doc:Method
00341   void    TTL(Count_t t) { ttl = t;}     // Set TTL
00342     //Doc:Desc Set the time--to--live value to set in all packet created
00343     //Doc:Desc by this protocol endpoing.
00344     //Doc:Arg1 {\tt TTL} value to set.
00345 
00346   //Doc:Method
00347   Count_t TTl()          { return ttl;}  // Get TTL
00348     //Doc:Desc Return the current {\tt TTL} value for this connection.
00349     //Doc:Return Current {\tt TTL} value for this connection.
00350 
00351   //Doc:Method
00352   void    TOS(Byte_t t) { tos = t;}
00353     //Doc:Desc Set the "Type of Service" required for all packets created
00354     //Doc:Desc by this protocol.  It will be passed to the L3 processor
00355     //Doc:Desc which will set the appropriate field in the L3 header.
00356     //Doc:Arg1 TOS desired.
00357 
00358   //Doc:Method
00359   Byte_t  TOS() { return tos;}
00360     //Doc:Desc   Return the current {\tt Tos} value for this protocol.
00361     //Doc:Return TOS Value.
00362 
00363   //Doc:Method
00364   void    FlowId(FId_t f){ fid = f;}     // Set flow id
00365     //Doc:Desc Assign a {\em Flow Identifier} for this connection.
00366     //Doc:Desc The flow id is a simulation artifact with no basis in
00367     //Doc:Desc real networks, but is useful for simulations to keep
00368     //Doc:Desc track of all packets associated with a given flow.
00369     //Doc:Desc The flow identifer is logged in the trace file for
00370     //Doc:Desc each packet.
00371     //Doc:Arg1 Flow identifier to assign.
00372 
00373   //Doc:Method
00374   FId_t   FlowId()       { return fid;}  // Get flow id
00375     //Doc:Desc Return the current flow identifier for this connection.
00376     //Doc:Return Flow identifier for this connection.
00377 
00378   //Doc:Method
00379   virtual L4Protocol* Copy() const = 0;  // Create a copy of this protocol
00380     //Doc:Desc Make a copy of this protocol endpoint.
00381     //Doc:Return Pointer to copy of this protocol.
00382 
00383   //Doc:Method
00384   virtual Proto_t ProtocolNumber() = 0;  // Return the l4 protocol number
00385     //Doc:Desc Return the protocol number registered for this layer 4 protocol.
00386     //Doc:Return Protocol number.
00387 
00388   //Doc:Method
00389   virtual bool    IsTCP() = 0;           // True if TCP
00390     //Doc:Desc Determine if this endpoint is {\tt TCP}.
00391     //Doc:Return True if {\tt TCP}
00392 
00393   //Doc:Method
00394   void    AttachApplication(Application* a) { localApplication = a;}
00395     //Doc:Desc Attach an application to this L4 protocol.
00396     //Doc:Arg1 Pointer to application to attach.
00397 
00398   //Doc:Method
00399   Application* GetApplication() { return localApplication;}
00400     //Doc:Desc Get the currently attached application.
00401     //Doc:Return Pointer to the currently attached application,  or {\tt nil}
00402     //Doc:Return if none.
00403 
00404   //Doc:Method
00405   void    AddNotification(NotifyHandler* n);
00406     //Doc:Desc Adds a "Packet Transmission" notification for all packets
00407     //Doc:Desc sent by this protocol.
00408     //Doc:Arg1 Notifier object to receive the notification.
00409 
00410 #ifdef HAVE_QT
00411   //Doc:Method
00412   bool IsColored() {return (color!=nil);}
00413     //Doc:Desc Determine if this application has a color assigned for
00414     //Doc:Desc created packets
00415     //Doc:Return True if a color assigned.
00416 
00417   //Doc:Method
00418    void SetColor(const QColor&);
00419     //Doc:Desc Specifiy a color for all packets generated by this protocol.
00420     //Doc:Arg1 Desired color (see qcolor.h in qt). 
00421 #endif
00422    
00423   //Doc:Method
00424    Packet* NewPacket();
00425     //Doc:Desc Allocate a new packet.
00426     //Doc:Desc Uses either a normal "uncolored" packet or
00427     //Doc:Desc a colored packet, depending on whether the protocol is colored
00428     //Doc:Desc or not.
00429 
00430   //Doc:Method
00431    void AddExtraRxDelay(Time_t);
00432     //Doc:Desc The "Extra Delay" mechanism allows the simulator to
00433     //Doc:Desc vary the round--trip time on a protocol by protocol basis,
00434     //Doc:Desc rather than using link delays.
00435     //Doc:Desc The Rx delay is extra delay added to received packets.
00436     //Doc:Arg1 Extra propagation delay on the last--hop link.
00437 
00438   //Doc:Method
00439    void AddExtraTxDelay(Time_t);
00440     //Doc:Desc The "Extra Delay" mechanism allows the simulator to
00441     //Doc:Desc vary the round--trip time on a protocol by protocol basis,
00442     //Doc:Desc rather than using link delays.
00443     //Doc:Desc The Rx delay is extra delay added to received packets.
00444     //Doc:Arg1 Extra propagation delay on the last--hop link.
00445 
00446 
00447 protected:
00448   void    RequestNotification(NotifyHandler*, void*); // Request notification
00449   void    CancelNotification(NotifyHandler*);    // Cancel pending notif.
00450   bool    BufferAvailable(Size_t,Packet* = nil); // True if output buff avail.
00451 private:
00452   void    SetInterface();                // Set the interface for tx packets
00453 public:
00454   Node*    localNode;                    // Local node 
00455   IPAddr_t peerIP;                       // Remote peer IP Address
00456   PortId_t localPort;                    // Local port number
00457   PortId_t peerPort;                     // Remote peer port
00458   Application*   localApplication;       // Local application object
00459   NotifyHandler* notification;           // Object to notify on packet tx
00460   L3Protocol*  l3Proto;                  // Layer 3 protocol to use
00461   Count_t      ttl;                      // Layer 3 ttl
00462   FId_t        fid;                      // Flow id
00463   Byte_t       tos;                      // Layer 3 "type of service"
00464   Interface*   iFace;                    // Interface used for this flow
00465   Time_t       extraRxDelay;             // Extra Rx Delay info (if any)
00466   Time_t       extraTxDelay;             // Extra Tx Delay info (if any)
00467         bool                             deleteAppOnComplete;
00468 #ifdef HAVE_QT
00469   QColor*      color;                    // Color for all packets (if non-nil)
00470 #endif
00471 };
00472 
00473 // Define the event for a delayed receive.  This allows for variable
00474 // round trip times for flows.
00475 //Doc:ClassXRef
00476 class L4DelayedRxEvent : public Event {
00477 public:
00478   L4DelayedRxEvent() 
00479       : Event(L4Protocol::DELAYED_RX), l4Proto(nil), node(nil), packet(nil),
00480                                ipAddr(IPADDR_NONE), fromIF(nil) {}
00481   L4DelayedRxEvent(L4Protocol* l4,Node* n,Packet* p,IPAddr_t ip,Interface* i)
00482       : Event(L4Protocol::DELAYED_RX), l4Proto(l4), node(n), packet(p),
00483                                ipAddr(ip), fromIF(i) {}
00484 public:
00485   L4Protocol* l4Proto;
00486   Node*       node;
00487   Packet*     packet;
00488   IPAddr_t    ipAddr;
00489   Interface*  fromIF;
00490 };
00491 
00492     
00493 // Define the event for a delayed transmit.  This allows for variable
00494 // round trip times for flows.
00495 //Doc:ClassXRef
00496 class L4DelayedTxEvent : public Event {
00497 public:
00498   L4DelayedTxEvent() 
00499       : Event(L4Protocol::DELAYED_TX), l3Proto(nil), node(nil), packet(nil),
00500         msgLength(0), notifySent(false) {}
00501   L4DelayedTxEvent(L3Protocol* l3, Node* n, Packet* p, const IPV4ReqInfo& v4,
00502                    Count_t m, bool notif)
00503       : Event(L4Protocol::DELAYED_TX), l3Proto(l3), node(n), packet(p),
00504         reqInfo(v4), msgLength(m), notifySent(notif) {}
00505 public:
00506   L3Protocol* l3Proto;
00507   Node*       node;
00508   Packet*     packet;
00509   IPV4ReqInfo reqInfo;
00510   Count_t     msgLength;
00511   bool        notifySent;
00512 };
00513 
00514     
00515 #endif

Generated on Wed Aug 27 16:17:13 2008 for Georgia Tech Network Simulator (GTNetS) by  doxygen 1.3.9.1