커널에서 Local IP 확인

프로그래밍 | 2008/01/27 23:13 | letsme

리눅스 커널에서 수신 패킷이 Local IN 패킷인지 Forward할 패킷인지를 라우팅을 하기 전에 확인하기 위해서는 패킷의 Destination IP 가 Local IP 와 같은지로 확인할 수 있습니다.

int is_local_address(struct net_device *dev, __u32 addr)
{
    struct in_device *in_dev;
    struct in_ifaddr *ifa = NULL;
    int ret = 0;

    in_dev = in_dev_get(dev);

    if (in_dev)
    {
        if( in_dev->ifa_list )
        {
            for ( ifa=in_dev->ifa_list; ifa; ifa=ifa->ifa_next )
            {
                if ( addr == ifa->ifa_local )
                {
                    ret = 1;
                    break;
                }
            }
        }       

        in_dev_put(in_dev);
    }

    return ret;
}
이전 1 ... 17 18 19 20 21 22 23 24 25 ... 42 다음