network loopback based kernle module and ping - calrification question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I had tried the following little module , which is based on
linux kernel loopback device. The module name is nic.
I run:
insmdo nic.ko
and it was loaded.

What I do is also create a file named: /etc/sysconfig/network-scripts/ifcfg-nic
and ran ifup nic up;

The ifcfg-nic file is:
DEVICE=nic
IPADDR=127.0.0.2
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=nicloopback

when I ran:
"ifconfig -a"
I saw:
nic       Link encap:AMPR NET/ROM  HWaddr
         inet addr:127.0.0.2  Mask:255.0.0.0
         UP RUNNING  MTU:0  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Now what I do not understand is:
when I ran
ping 127.0.0.2
I got:
PING 127.0.0.2 (127.0.0.2) 56(84) bytes of data.
64 bytes from 127.0.0.2: icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from 127.0.0.2: icmp_seq=2 ttl=64 time=0.040 ms

who does answer me ? there is no handling of recieve interrupts in that module.
What causes the packet which is sent to 127.0.0.2 to give this answer ?
where is this mechanism implemented in the kernel ?

Here is the code:


static int nic_xmit(struct sk_buff *skb, struct net_device *dev)
{
	printk("in nic_xmit\n");
	return 0;
}


struct net_device nic_device = {
	.name = "nic",
	.get_stats = NULL,
	.priv      = NULL,
	.hard_start_xmit = nic_xmit,
};

static int __init nic_init(void)
	{
	register_netdev(&nic_device);
	return 0;	
	}

//////////////////////////////////////////////////////////////////////////////

static void __exit nic_exit(void)
	{
	unregister_netdev(&nic_device);
	}

	
//////////////////////////////////////////////////////////////////////////////

module_init(nic_init)
module_exit(nic_exit)


MODULE_DESCRIPTION("test");
MODULE_LICENSE("GPL");

Regards,
Mark

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux