📄 mttable.h
字号:
/******************************************************************* Copyright (C) 2004 Thomas Kunz, CRC Canada, BCAST for IPv4. DISTRIBUTED WITH NO WARRANTY, EXPRESS OR IMPLIED. See the GNU Library General Public License (file COPYING in the MANET_multicast directory) for conditions of use and redistribution.*********************************************************************/#ifndef __mtable_h__#define __mtable_h__#include <assert.h>#include <sys/types.h>#include <config.h>#include <lib/bsd-list.h>#include <scheduler.h>#include <MANET_multicast/nhlist.h>#include <packet.h>#define CURRENT_TIME Scheduler::instance().clock()#define INFINITY2 0xff/* ===================================================================== Multicast Route Table Entry ===================================================================== */class mt_entry { friend class mttable; friend class MAODV; friend class ODMRP; friend class nhlist;public: mt_entry(); ~mt_entry(){};protected: LIST_ENTRY(mt_entry) mt_link;// Internet Class D addresses are or multicast// 1110 XXXX XXXX XXXX XXXX XXXX XXXX XXXX// Class D Range: 0xE0000000 - 0xEFFFFFFF#define IP_MULTICAST_RANGE 0xE000000#define NO_LEADER 0xFFFFFFF nsaddr_t mt_dst; // Multicast Group IP Address u_int8_t mt_flags; // Entry status#define MTF_UP 1#define MTF_DOWN 0 nsaddr_t mt_grp_leader_dst; // Multicast Group Leader IP Address u_int32_t mt_seqno; // Multicast Group Sequence Number u_int16_t mt_hops_grp_leader; // Hop Count to Multicast Grp Leader double mt_expire; // Lifetime nhlist mt_nexthops; // Mcast Grp Next hops IP addresses int mt_req_last_ttl; u_int8_t mt_req_flags; double mt_req_timeout; double mt_req_timestamp; u_int8_t mt_req_cnt; double mt_prune_time; double mt_rep_timestamp; nsaddr_t mt_rep_dst; u_int32_t mt_rep_seqno; u_int16_t mt_rep_hop_count; u_int16_t mt_rep_hops_grp_leader; nsaddr_t mt_rep_upstream; nsaddr_t mt_rep_src; nsaddr_t mt_rep_grp_leader_dst; // ODMRP specific info u_int8_t fg_flag;#define FG_FLAG_SET 1 nhlist fg_senders; u_int8_t src;#define FG_MEMBER_SRC 1 u_int8_t recv;#define FG_MEMBER_RECV 1 double fg_expire;};/* ===================================================================== The Multicast Routing Table ===================================================================== */class mttable { public: mttable() { LIST_INIT(&mthead); } mt_entry* head() { return mthead.lh_first; } mt_entry* mt_lookup(nsaddr_t id); void mt_delete(nsaddr_t id); mt_entry* mt_add(nsaddr_t id); private: LIST_HEAD(, mt_entry) mthead;};#endif /* __mtable_h__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -