요즘 일 때문에 ns-2 (네트워크 시뮬레이터) 를 아주 자세히 들여다보고 있다.
그 중, 모바일 노드를 생성하는 부분에서 사소하게 보이는(?) 버그를 발견했는데,
참 이상하게도, 이게 몇 년째 고쳐지지 않고 있다는 사실이 놀라워 이렇게
소심하게 고발(!) 하고자 한다.
다음은 mobilenode.cc 파일의
MobileNode::command() 메소드의 일부분이다.
===
1: } else if(argc == 3) {
2:
if(strcmp(argv[1], "addif") == 0) {
3: WiredPhy* phyp = (WiredPhy*)TclObject::lookup(argv[2]);
4: if(phyp == 0)
5: return TCL_ERROR;
6: phyp->insertnode(&ifhead_);
7: phyp->setnode(this);
8: return TCL_OK;
9: } else if (strcmp(argv[1], "setsleeptime") == 0) {
10: energy_model()->afe()->set_sleeptime(atof(argv[2]));
11: energy_model()->afe()->set_sleepseed(atof(argv[2]));
12: return TCL_OK;
13: } else if (strcmp(argv[1], "setenergy") == 0) {
14: energy_model()->setenergy(atof(argv[2]));
15: return TCL_OK;
16: } else if (strcmp(argv[1], "settalive") == 0) {
17: energy_model()->max_inroute_time() = atof(argv[2]);
18: return TCL_OK;
19: } else if (strcmp(argv[1], "maxttl") == 0) {
20: energy_model()->maxttl() = atoi(argv[2]);
21: return TCL_OK;
22: } else if(strcmp(argv[1], "radius") == 0) {
23: radius_ = strtod(argv[2],NULL);
24: return TCL_OK;
25: } else if(strcmp(argv[1], "random-motion") == 0) {
26: random_motion_ = atoi(argv[2]);
27: return TCL_OK;
28: }
else if(strcmp(argv[1], "addif") == 0) {
29: WirelessPhy *n = (WirelessPhy*)
30: TclObject::lookup(argv[2]);
31: if(n == 0)
32: return TCL_ERROR;
33: n->insertnode(&ifhead_);
34: n->setnode(this);
35: return TCL_OK;
아주 자세히 보면, addif 라는 command가 두번 선언되어 있다.
즉, 28번째 줄의 addif 명령은 전혀 실행될 수 없음을 뜻한다.
이게 뭔가!
처음엔, ns-2를 만드는 애들이 뭔가 생각이 있겠지.. 싶었는데
다음의 링크를 찾아보니 그런것도 아니었다.
http://www.isi.edu/nsnam/archive/ns-users/webarch/2001/msg06098.htmlOn Wed, 12 Dec 2001,
Yes, you are right. Thanks for the bug report. We'll update the code and
post a patch.
--Padma
고치겠다고 답변한지가 무려 7년 전!!
꾸엑~ 이제 좀 고쳐봅시다~
이것 땜에 몇 시간 찾아헤맸나 몰라-
Trackback Address :: http://build21c.byus.net/blog/tt/mi/trackback/81