모듈 컴파일 질문입니다.(컴파일 에러)

mtg1의 이미지

학교에서 예제로 주어진 get_ip.c 코드입니다.

static int __init getip_init(void)
{
    struct ifreq ifr;
    struct in_device *in_dev;
    struct in_ifaddr **ifap = NULL;
    struct in_ifaddr *ifa = NULL;
    struct net_device *dev;
 
    printf("get ip module init\n");
    strcpy(ifr.ifr_name, "eth0");
    rtnl_lock();
    dev = __dev_get_by_name(&init_net, ifr.ifr_name);
    if((in_dev = __in_dev_get_rtnl(dev))!=NULL){
        if(!ifa){
            for(ifap=&in_deb->ifa_list; (ifa = *ifap)!=NULL; ifap = &ifa->ifa_next)
                if(!strcmp(ifr.ifr_name,ifa->label))
                    break;
        }
    }
    rtnl_unlock();
    printk("%x\n", ifa->ifa_local);
 
    return 0;
}

컴파일 할 때 에러가 납니다; 구체적으로는
/home/ath/ip/get_ip.c:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘getip_init’
이런 에러가 발생하는데요, makefile을 이용해서 커널 컴파일을 하는 것입니다.

makefile 내용은

KDIR :=/lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
 
obj-m += get_ip.o
 
default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
 
clean:
    rm -rf *.o
    rm -rf *.mod.*
    rm -rf *.ko

에러가 무슨 내용인지, 어떤 식으로 수정해야 하는지 알려주세요;

mtg1의 이미지

에러가 한가득...이네요.

포인터가 잘못되었다고 나오는 것 같기도 하고..

정의되지 않은 변수도 있다고 하고..

...예제로 올라온 소스인데 실제로 해보니..;

...하아;