Hi,
Please consider the following AODV code (from aodv_rtable.h)
class AODV_Neighbor {
friend class AODV;
friend class aodv_rt_entry;
public:
AODV_Neighbor(u_int32_t a) { nb_addr =
a; }
protected:
LIST_ENTRY(AODV_Neighbor) nb_link;
nsaddr_t nb_addr;
double nb_expire; // ALLOWED_HELLO_LOSS * HELLO_INTERVAL
};
LIST_HEAD(aodv_ncache,
AODV_Neighbor);
/* AODV Precursor list data structure */
class AODV_Precursor {
friend class AODV;
friend class aodv_rt_entry;
public:
AODV_Precursor(u_int32_t a) { pc_addr =
a; }
protected:
LIST_ENTRY(AODV_Precursor) pc_link;
nsaddr_t pc_addr; // precursor address
};LIST_HEAD(aodv_precursors,
AODV_Precursor);
I don't understand:
1. LIST_ENTRY(AODV_Neighbor) nb_link;
2. LIST_ENTRY(AODV_Precursor) pc_link;
3. LIST_HEAD(aodv_ncache, AODV_Neighbor);
4. LIST_HEAD(aodv_precursors, AODV_Precursor);
Also, LIST_HEAD(aodv_ncache, AODV_Neighbor); and LIST_HEAD(aodv_precursors,
AODV_Precursor); occur after the class declaration, I don't understand.
Please help me here. Thanks in advance