| [ CnUnix ] in KIDS 글 쓴 이(By): chunmok (준목) 날 짜 (Date): 2003년 11월 14일 금요일 오전 11시 13분 34초 제 목(Title): Re: [Q] 커널안에서 자기 주소 알기? 장치의 이름(eth0 등)을 이용해서 dev_get_by_name()함수로 net_device 구조체를 얻으세요. net_device::ip_ptr를 사용하셔서 in_device::in_ifaddr 구조체를 따라가시면 될것 같네요. static int __init ipcheck_init_module(void) { int re; struct net_device *ndp; struct in_device *idp; struct in_ifaddr *iip; printk(KERN_INFO "--> ipcheck_init_module\n" ); ndp = dev_get_by_name( "eth0" ); if( ndp ) printk(KERN_INFO "name=%s\n", ndp->name ); if( (idp=ndp->ip_ptr) && (iip=idp->ifa_list) ) printk(KERN_INFO "local=%lX, address=%lX, mask=%lX\n", iip->ifa_local, iip->ifa_address, iip->ifa_mask ); printk(KERN_INFO "<-- ipcheck_init_module\n" ); return 0; } 위와 같이 하니까 대략 아래와 같이 나오네요. 주소랑 마스크랑 byte ordering이 반대니까, ntohl등으로 변경해서 확인하세요. name=eth0 local=4B18939C, address=4B18939C, mask=FFFFFF [root@paran driver]# ifconfig eth0 Link encap:Ethernet HWaddr00:50:56:46:12:89 inet addr:156.147.24.75 Bcast:156.147.24.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3187 errors:0 dropped:0 overruns:0 frame:0 TX packets:1516 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:11 Base address:0x1080 |