0
C++에서 ns2의 aodv 프로토콜을 수정 중입니다. 함수 호출시 오류가 발생합니다. rft_add. 여기에 파일을 넣을거야.ns2에서 C++ 정의되지 않은 참조
선언 파일 : aodv_rftable.cc AODV 프로토콜 파일에서 호출
aodv_rft_entry*
aodv_rftable::rft_add(nsaddr_t dst, nsaddr_t src)
{
aodv_rft_entry *rft;
rft = new aodv_rft_entry;
rft->rft_dst = dst;
rft->rft_src = src;
LIST_INSERT_HEAD(&rfthead, rft, rft_link);
return rft;
}
:
void
AODV::sendRequest(nsaddr_t dst)
{
// Allocate a RREQ packet
Packet *p = Packet::alloc();
struct hdr_cmn *ch = HDR_CMN(p);
struct hdr_ip *ih = HDR_IP(p);
struct hdr_aodv_request *rq = HDR_AODV_REQUEST(p);
aodv_rt_entry *rt = rtable.rt_lookup(dst);
aodv_rft_entry *rft = aodv_rftable.rft_add(dst, index);
//Here i declare and fill the components of RREQ packet
rft = rftable.rft_add(dst, index);
}
aodv.cc
구현 파일 class aodv_rft_entry
{
friend class aodv_rftable;
friend class AODV;
friend class LocalRepairTimer;
public:
aodv_rft_entry(); //Constructor
~aodv_rft_entry();
protected:
LIST_ENTRY(aodv_rft_entry) rft_link;
nsaddr_t rft_dst;
nsaddr_t rft_src;
double rft_lifetime;
u_int8_t rft_relay;
u_int8_t rft_forward;
};
class aodv_rftable
{
public:
aodv_rftable() { LIST_INIT(&rfthead); }
aodv_rft_entry* head() { return rfthead.lh_first; }
aodv_rft_entry* rft_add(nsaddr_t dst, nsaddr_t src);
void rft_delete(nsaddr_t dst, nsaddr_t src);
aodv_rft_entry* rft_lookup(nsaddr_t dst, nsaddr_t src);
private:
LIST_HEAD(aodv_rfthead, aodv_rft_entry) rfthead;
};
aodv_rftable.h 제가 NS2를 다시하려고하면
는 다음과 같은 오류가
정의되지 않은 참조가