NS2 Packet包access函数
hdr_ip | hdr_ll | hdr_cmn | hdr_tcp | hdr_XCP | ........ | data_ |
packet数据包中会包含包括以上内容。
packet.h 文件中
class Packet : public Event {
private:
unsigned char* bits_; // header bits
AppData* data_; // variable size buffer for 'data'
......
}
其中bits_存储包头结构,而data_存储用户自定义的数据。
该文件中只有一重要函数access函数
inline unsigned char* access(int off) const {
if (off < 0)
abort();
return (&bits_[off]);
}
packet.cc中,
inline static hdr_cmn* access(const Packet* p) {
return (hdr_cmn*) p->access(offset_);
}
同样,在mac.cc文件中,也会存在hdr_mac* access(const Packet* p)这个函数。
那么,offset其实是每个包相对于packet开始的偏移值,通过这个偏移值即可确定其在整个包中的地址。