gpt4 book ai didi

更改 MTU 大小的 Linux 内核模块不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:48 25 4
gpt4 key购买 nike

我正在学习内核模块并且是新手。我想更改 eth0 的 MTU 大小。这是我写的模块程序。

本意是将 eth0 的 MTU 大小更改为 1000。但它没有得到更改。谁能告诉我,我错过了什么。如果方法本身是错误的,你能指出我正确的方向吗?

#include <linux/module.h>       
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/etherdevice.h>
#include <linux/netdevice.h>

static int __init hello_2_init(void)
{
printk(KERN_INFO "Hello, world 2\n");

struct net_device dev;
eth_change_mtu(&dev,1000); //calling eth_change_mtu
return 0;
}

static void __exit hello_2_exit(void)
{
printk(KERN_INFO "Goodbye, world 2\n");
}


int eth_change_mtu(struct net_device *dev, int new_mtu)
{
dev->mtu = new_mtu;
printk(KERN_INFO "New MTU is %d",new_mtu);
return 0;
}

module_init(hello_2_init);
module_exit(hello_2_exit);

最佳答案

您正在为未分配给任何实际网络设备的结构设置 MTU。您在 init 中声明了 local 变量 dev,然后更改了它的字段。

您应该首先找到您要更改的网络设备。这是通过 __dev_get_by_name 完成的,如下所示:

struct net_device *dev = __dev_get_by_name("eth0");

之后您的更改将应用​​到您的网络接口(interface)。

关于更改 MTU 大小的 Linux 内核模块不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com