NS2 Packet包access函数

                                                                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开始的偏移值,通过这个偏移值即可确定其在整个包中的地址。