INET Framework for OMNeT++/OMNEST
IPDatagram_m.h
Go to the documentation of this file.
00001 //
00002 // Generated file, do not edit! Created by opp_msgc 4.2 from networklayer/ipv4/IPDatagram.msg.
00003 //
00004 
00005 #ifndef _IPDATAGRAM_M_H_
00006 #define _IPDATAGRAM_M_H_
00007 
00008 #include <omnetpp.h>
00009 
00010 // opp_msgc version check
00011 #define MSGC_VERSION 0x0402
00012 #if (MSGC_VERSION!=OMNETPP_VERSION)
00013 #    error Version mismatch! Probably this file was generated by an earlier version of opp_msgc: 'make clean' should help.
00014 #endif
00015 
00016 // cplusplus {{
00017 #include "IPAddress.h"
00018 #include "IPProtocolId_m.h"
00019 
00020 
00021 const int IP_HEADER_BYTES = 20;
00022 
00023 
00024 const int IP_MAX_HEADER_BYTES = 60;
00025 
00026 
00027 const unsigned int MAX_IPADDR_OPTION_ENTRIES = 9;
00028 const unsigned int MAX_TIMESTAMP_OPTION_ENTRIES = 4;
00029 // }}
00030 
00031 
00032 
00045 enum IPOptionClass {
00046     IPOPTION_CLASS_CONTROL = 0,
00047     IPOPTION_CLASS_RESERVED = 1,
00048     IPOPTION_CLASS_DEBUGGING = 2,
00049     IPOPTION_CLASS_RESERVED2 = 3
00050 };
00051 
00069 enum IPOption {
00070     IPOPTION_END_OF_OPTIONS = 0,
00071     IPOPTION_NO_OPTION = 1,
00072     IPOPTION_SECURITY = 2,
00073     IPOPTION_LOOSE_SOURCE_ROUTING = 3,
00074     IPOPTION_TIMESTAMP = 4,
00075     IPOPTION_RECORD_ROUTE = 7,
00076     IPOPTION_STREAM_ID = 8,
00077     IPOPTION_STRICT_SOURCE_ROUTING = 9,
00078     IPOPTION_ROUTER_ALERT = 20
00079 };
00080 
00092 enum TimestampFlag {
00093     IP_TIMESTAMP_TIMESTAMP_ONLY = 0,
00094     IP_TIMESTAMP_WITH_ADDRESS = 1,
00095     IP_TIMESTAMP_SENDER_INIT_ADDRESS = 3
00096 };
00097 
00108 class IPRecordRouteOption : public ::cObject
00109 {
00110   protected:
00111     IPAddress recordAddress_var[MAX_IPADDR_OPTION_ENTRIES];
00112     short nextAddressPtr_var;
00113 
00114   private:
00115     void copy(const IPRecordRouteOption& other);
00116 
00117   protected:
00118     // protected and unimplemented operator==(), to prevent accidental usage
00119     bool operator==(const IPRecordRouteOption&);
00120 
00121   public:
00122     IPRecordRouteOption();
00123     IPRecordRouteOption(const IPRecordRouteOption& other);
00124     virtual ~IPRecordRouteOption();
00125     IPRecordRouteOption& operator=(const IPRecordRouteOption& other);
00126     virtual IPRecordRouteOption *dup() const {return new IPRecordRouteOption(*this);}
00127     virtual void parsimPack(cCommBuffer *b);
00128     virtual void parsimUnpack(cCommBuffer *b);
00129 
00130     // field getter/setter methods
00131     virtual unsigned int getRecordAddressArraySize() const;
00132     virtual IPAddress& getRecordAddress(unsigned int k);
00133     virtual const IPAddress& getRecordAddress(unsigned int k) const {return const_cast<IPRecordRouteOption*>(this)->getRecordAddress(k);}
00134     virtual void setRecordAddress(unsigned int k, const IPAddress& recordAddress);
00135     virtual short getNextAddressPtr() const;
00136     virtual void setNextAddressPtr(short nextAddressPtr);
00137 };
00138 
00139 inline void doPacking(cCommBuffer *b, IPRecordRouteOption& obj) {obj.parsimPack(b);}
00140 inline void doUnpacking(cCommBuffer *b, IPRecordRouteOption& obj) {obj.parsimUnpack(b);}
00141 
00158 class IPTimestampOption : public ::cObject
00159 {
00160   protected:
00161     int flag_var;
00162     short overflow_var;
00163     short nextAddressPtr_var;
00164     IPAddress recordAddress_var[MAX_TIMESTAMP_OPTION_ENTRIES];
00165     simtime_t recordTimestamp_var[MAX_IPADDR_OPTION_ENTRIES];
00166 
00167   private:
00168     void copy(const IPTimestampOption& other);
00169 
00170   protected:
00171     // protected and unimplemented operator==(), to prevent accidental usage
00172     bool operator==(const IPTimestampOption&);
00173 
00174   public:
00175     IPTimestampOption();
00176     IPTimestampOption(const IPTimestampOption& other);
00177     virtual ~IPTimestampOption();
00178     IPTimestampOption& operator=(const IPTimestampOption& other);
00179     virtual IPTimestampOption *dup() const {return new IPTimestampOption(*this);}
00180     virtual void parsimPack(cCommBuffer *b);
00181     virtual void parsimUnpack(cCommBuffer *b);
00182 
00183     // field getter/setter methods
00184     virtual int getFlag() const;
00185     virtual void setFlag(int flag);
00186     virtual short getOverflow() const;
00187     virtual void setOverflow(short overflow);
00188     virtual short getNextAddressPtr() const;
00189     virtual void setNextAddressPtr(short nextAddressPtr);
00190     virtual unsigned int getRecordAddressArraySize() const;
00191     virtual IPAddress& getRecordAddress(unsigned int k);
00192     virtual const IPAddress& getRecordAddress(unsigned int k) const {return const_cast<IPTimestampOption*>(this)->getRecordAddress(k);}
00193     virtual void setRecordAddress(unsigned int k, const IPAddress& recordAddress);
00194     virtual unsigned int getRecordTimestampArraySize() const;
00195     virtual simtime_t getRecordTimestamp(unsigned int k) const;
00196     virtual void setRecordTimestamp(unsigned int k, simtime_t recordTimestamp);
00197 };
00198 
00199 inline void doPacking(cCommBuffer *b, IPTimestampOption& obj) {obj.parsimPack(b);}
00200 inline void doUnpacking(cCommBuffer *b, IPTimestampOption& obj) {obj.parsimUnpack(b);}
00201 
00213 class IPSourceRoutingOption : public ::cObject
00214 {
00215   protected:
00216     IPAddress recordAddress_var[MAX_IPADDR_OPTION_ENTRIES];
00217     short nextAddressPtr_var;
00218     short lastAddressPtr_var;
00219 
00220   private:
00221     void copy(const IPSourceRoutingOption& other);
00222 
00223   protected:
00224     // protected and unimplemented operator==(), to prevent accidental usage
00225     bool operator==(const IPSourceRoutingOption&);
00226 
00227   public:
00228     IPSourceRoutingOption();
00229     IPSourceRoutingOption(const IPSourceRoutingOption& other);
00230     virtual ~IPSourceRoutingOption();
00231     IPSourceRoutingOption& operator=(const IPSourceRoutingOption& other);
00232     virtual IPSourceRoutingOption *dup() const {return new IPSourceRoutingOption(*this);}
00233     virtual void parsimPack(cCommBuffer *b);
00234     virtual void parsimUnpack(cCommBuffer *b);
00235 
00236     // field getter/setter methods
00237     virtual unsigned int getRecordAddressArraySize() const;
00238     virtual IPAddress& getRecordAddress(unsigned int k);
00239     virtual const IPAddress& getRecordAddress(unsigned int k) const {return const_cast<IPSourceRoutingOption*>(this)->getRecordAddress(k);}
00240     virtual void setRecordAddress(unsigned int k, const IPAddress& recordAddress);
00241     virtual short getNextAddressPtr() const;
00242     virtual void setNextAddressPtr(short nextAddressPtr);
00243     virtual short getLastAddressPtr() const;
00244     virtual void setLastAddressPtr(short lastAddressPtr);
00245 };
00246 
00247 inline void doPacking(cCommBuffer *b, IPSourceRoutingOption& obj) {obj.parsimPack(b);}
00248 inline void doUnpacking(cCommBuffer *b, IPSourceRoutingOption& obj) {obj.parsimUnpack(b);}
00249 
00277 class IPDatagram : public ::cPacket
00278 {
00279   protected:
00280     short version_var;
00281     short headerLength_var;
00282     IPAddress srcAddress_var;
00283     IPAddress destAddress_var;
00284     int transportProtocol_var;
00285     short timeToLive_var;
00286     int identification_var;
00287     bool moreFragments_var;
00288     bool dontFragment_var;
00289     int fragmentOffset_var;
00290     unsigned char diffServCodePoint_var;
00291     int optionCode_var;
00292     IPRecordRouteOption recordRoute_var;
00293     IPTimestampOption timestampOption_var;
00294     IPSourceRoutingOption sourceRoutingOption_var;
00295 
00296   private:
00297     void copy(const IPDatagram& other);
00298 
00299   protected:
00300     // protected and unimplemented operator==(), to prevent accidental usage
00301     bool operator==(const IPDatagram&);
00302 
00303   public:
00304     IPDatagram(const char *name=NULL, int kind=0);
00305     IPDatagram(const IPDatagram& other);
00306     virtual ~IPDatagram();
00307     IPDatagram& operator=(const IPDatagram& other);
00308     virtual IPDatagram *dup() const {return new IPDatagram(*this);}
00309     virtual void parsimPack(cCommBuffer *b);
00310     virtual void parsimUnpack(cCommBuffer *b);
00311 
00312     // field getter/setter methods
00313     virtual short getVersion() const;
00314     virtual void setVersion(short version);
00315     virtual short getHeaderLength() const;
00316     virtual void setHeaderLength(short headerLength);
00317     virtual IPAddress& getSrcAddress();
00318     virtual const IPAddress& getSrcAddress() const {return const_cast<IPDatagram*>(this)->getSrcAddress();}
00319     virtual void setSrcAddress(const IPAddress& srcAddress);
00320     virtual IPAddress& getDestAddress();
00321     virtual const IPAddress& getDestAddress() const {return const_cast<IPDatagram*>(this)->getDestAddress();}
00322     virtual void setDestAddress(const IPAddress& destAddress);
00323     virtual int getTransportProtocol() const;
00324     virtual void setTransportProtocol(int transportProtocol);
00325     virtual short getTimeToLive() const;
00326     virtual void setTimeToLive(short timeToLive);
00327     virtual int getIdentification() const;
00328     virtual void setIdentification(int identification);
00329     virtual bool getMoreFragments() const;
00330     virtual void setMoreFragments(bool moreFragments);
00331     virtual bool getDontFragment() const;
00332     virtual void setDontFragment(bool dontFragment);
00333     virtual int getFragmentOffset() const;
00334     virtual void setFragmentOffset(int fragmentOffset);
00335     virtual unsigned char getDiffServCodePoint() const;
00336     virtual void setDiffServCodePoint(unsigned char diffServCodePoint);
00337     virtual int getOptionCode() const;
00338     virtual void setOptionCode(int optionCode);
00339     virtual IPRecordRouteOption& getRecordRoute();
00340     virtual const IPRecordRouteOption& getRecordRoute() const {return const_cast<IPDatagram*>(this)->getRecordRoute();}
00341     virtual void setRecordRoute(const IPRecordRouteOption& recordRoute);
00342     virtual IPTimestampOption& getTimestampOption();
00343     virtual const IPTimestampOption& getTimestampOption() const {return const_cast<IPDatagram*>(this)->getTimestampOption();}
00344     virtual void setTimestampOption(const IPTimestampOption& timestampOption);
00345     virtual IPSourceRoutingOption& getSourceRoutingOption();
00346     virtual const IPSourceRoutingOption& getSourceRoutingOption() const {return const_cast<IPDatagram*>(this)->getSourceRoutingOption();}
00347     virtual void setSourceRoutingOption(const IPSourceRoutingOption& sourceRoutingOption);
00348 };
00349 
00350 inline void doPacking(cCommBuffer *b, IPDatagram& obj) {obj.parsimPack(b);}
00351 inline void doUnpacking(cCommBuffer *b, IPDatagram& obj) {obj.parsimUnpack(b);}
00352 
00353 
00354 #endif // _IPDATAGRAM_M_H_