借用helloworld ko模板,通过网卡名称,如eth0,lo等,获取该网卡设备,并打印索引号ifindex。
hello.c如下:
/* hello.c */
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <asm/current.h>
#include <linux/nsproxy.h>
#include <linux/netdevice.h>
int init_hello_module(void)
{
struct net_device *dev1,*dev2;
printk("===============Beginning=================\n");
dev1=dev_get_by_name(current->nsproxy->net_ns, "eth0");
if (dev1)
printk("=======eth0 ifindex:%d\n", dev1->ifindex);
dev2=dev_get_by_name(current->nsproxy->net_ns, "lo");
if (dev2)
printk("=======lo ifindex:%d\n", dev2->ifindex);
return 0;
}
void exit_hello_module(void)
{
printk("===============The End================\n");
}
MODULE_LICENSE("GPL");
module_init(init_hello_module);
module_exit(exit_hello_module);
Makefile如下,注意使用tab键,
obj-m := hello.o
KERNELDIR = /usr/src/kernels/$(shell uname -r)
PWD := $(shell pwd)
all:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *.symvers .*.cmd *.ko *.mod.c .tmp_versions *.order
KERNELDIR 根据自己系统上内核源码路径修改。