ioctl명령을 사용하여 ip를 다시 셋팅후..
글쓴이: yhlvyp / 작성시간: 목, 2005/06/16 - 2:34오후
프로젝트로 ad-hoc라우팅 프로토콜을 짜고있습니다.
커널의 일반적인 네턱 프로토콜을 놔두고 거기에 제 모듈을 올려
라우팅 프로토콜을 적용 시키려 합니다.
모듈을 올리기전에 아이피를 셋팅하는 초기화 작업을 하기위해
어플리케이션을 실행하는데
프로그램을 실행하면 아래와 같이 아이피를 다시 생성하여 셋팅하게 됩니다.
void set_ip( ) { sockfd = socket( PF_INET, SOCK_DGRAM, 0 ); memset(&ld->ifr, 0, sizeof(ld->ifr)); strcpy( ld->ifr.ifr_name, device ); struct sockaddr_in *sin = (void *) &ld->ifr.ifr_ifru.ifru_addr; sin->sin_family = AF_INET; sin->sin_addr.s_addr = ld->gen_addr; sin->sin_port = 0; if( ioctl(sockfd, SIOCSIFADDR, &ld->ifr )<0 ) { ERR("main(): Couldn't change IP address of device"); perror("main():ioctl(SIOCSIFADDR)"); exit(-11); } #ifdef Debug else DBG( "ip generated..\n" ); #endif }
(ld->gen_addr는 생성한 새로 셋팅할 아이피입니다.)
ifconfig로 확인한결과 아이피는 잘 바뀌었습니다.
그러나 ip를 다시 셋팅한 후에는 network is unrecheable이라면서
더이상 네턱이 되질 않습니다.
물론 제 프로그램도 더이상 돌지 않습니다.
고수분들 제 잘못한 점을 알려주세요ㅠㅠ
Forums:
프로그램 실행후 console로 접속하셔서 1. IP addres
프로그램 실행후 console로 접속하셔서
1. IP address가 정확히 setting 되었는지.
2. routing 이 제대로 설정되어 있는지.
먼저 확인해 보시죠.
읔...윗글은 ... 제글입니다.
읔...
윗글은 ... 제글입니다.
^^*
댓글 달기