리눅스 커널에서 수신 패킷이 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;
}

