|
INET Framework for OMNeT++/OMNEST
|
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_