/Users/yzchen/ns/ns-allinone-2.33/ns-2.33/common/ip.h
对一些重要的地方加一些中文注解00037 /* a network layer; basically like IPv6 */ 00038 #ifndef ns_ip_h 00039 #define ns_ip_h 00040 00041 #include "config.h" 00042 #include "packet.h" 00043 00044 00045 #define IP_HDR_LEN 20 00046 #define IP_DEF_TTL 32 00047 00048 // The following undef is to suppress warnings on systems were 00049 // IP_BROADCAST is defined. 00050 #ifdef IP_BROADCAST 00051 #undef IP_BROADCAST 00052 #endif 00053 00054 // #define IP_BROADCAST ((u_int32_t) 0xffffffff) 00055 static const u_int32_t IP_BROADCAST = ((u_int32_t) 0xffffffff); 00056 00057 00058 struct hdr_ip { 00059 /* common to IPv{4,6} */ 00060 ns_addr_t src_; //源地址 00061 ns_addr_t dst_;//目的地址 00062 int ttl_;//生存时间 00063 00064 /* Monarch extn */ 00065 // u_int16_t sport_; 00066 // u_int16_t dport_; 00067 00068 /* IPv6 */ 00069 int fid_; /* flow id */ 00070 int prio_; 00071 00072 static int offset_; 00073 inline static int& offset() { return offset_; } 00074 inline static hdr_ip* access(const Packet* p) { 00075 return (hdr_ip*) p->access(offset_); 00076 } 00077 00078 /* per-field member acces functions */ 00079 ns_addr_t& src() { return (src_); } 00080 nsaddr_t& saddr() { return (src_.addr_); }//返回源地址 00081 int32_t& sport() { return src_.port_;}//返回源端口号 00082 00083 ns_addr_t& dst() { return (dst_); } 00084 nsaddr_t& daddr() { return (dst_.addr_); } 00085 int32_t& dport() { return dst_.port_;} 00086 int& ttl() { return (ttl_); } 00087 /* ipv6 fields */ 00088 int& flowid() { return (fid_); } 00089 int& prio() { return (prio_); } 00090 }; 00091
struct hdr_ip
最新推荐文章于 2022-05-13 20:31:58 发布