网络编程中的虚拟接口与协议处理
一、网络设备统计获取
在网络编程中,获取网络设备的统计信息是一项重要的操作。有一个简单的函数 my_get_stats 用于获取网络设备的统计信息,其代码如下:
static struct net_device_stats *my_get_stats(struct net_device *dev) {
return &dev->stats;
}
对于新的统计信息累积方案 ndo_get_stats64 ,可以使用方案 1 或 2,但在返回结果时,该结构必须通过调用指针进行复制。同时,在网络接口操作表 struct net_device_ops 中, ndo_get_stats 和 ndo_get_stats64 这两个函数指针字段常常为 NULL。因此,在向驱动程序请求统计信息时,在解引用指针(调用方法函数)之前,一定要检查其是否为 NULL,否则可能导致系统崩溃。
二、虚拟网络接口
在之前的示例中创建的网络接口,并未真正实现与物理传输介质的收发操作。要实现这一功能,需要有 PCI 总线上的实际通信设备,并考虑与之相关的操作。但这并不总是可行的,而且会使讨论陷入大量特定设备的细节中。不过,我们可以创建一个接口,它能够拦截系统中另一个实际存在的接口的网络输入输出流量,并对这些流量进行处理。
以下是 virt.c 文件的代码示例:
超级会员免费看
订阅专栏 解锁全文

6582

被折叠的 条评论
为什么被折叠?



