简单内核模块---通过网卡名称获取网卡对象

借用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 根据自己系统上内核源码路径修改。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值