栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Linux内核中添加了新的网络协议

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Linux内核中添加了新的网络协议

要处理从用户空间到协议的通信,请使用内核套接字API注册协议。这使您可以从用户空间创建普通套接字。

看一下相关代码示例的蓝牙/
RFCOM套接字实现。

static const struct proto_ops rfcomm_sock_ops = {     .family         = PF_BLUETOOTH,     .owner          = THIS_MODULE,     .bind= rfcomm_sock_bind,     .connect        = rfcomm_sock_connect,     .listen         = rfcomm_sock_listen,     .     .     .     .accept         = rfcomm_sock_accept,};static const struct net_proto_family rfcomm_sock_family_ops = {     .family         = PF_BLUETOOTH,     .owner          = THIS_MODULE,     .create         = rfcomm_sock_create};

要注册协议,您将必须填写proto_ops结构。这种结构遵循内核内部其他地方观察到的面向对象的模式。此结构定义了实现自己的套接字接口的开发人员可以遵循的接口。

实现接口定义的功能,例如绑定,连接,侦听并将功能指针分配给结构条目。为操作界面未涵盖的功能定义ioctl。

您最终得到一个结构,之后将其嵌入我们从create函数返回的套接字结构中。

结构net_proto_family定义了一个新的协议族。此结构包括create函数,您的函数实现应在其中填充由proto_ops结构填充的套接字结构。

之后,使用sock_register注册家族,如果一切正常,则应该能够从用户空间创建适当的套接字。

内部协议应该使用skbuffs1,[2],[3](pdf)。与网络设备通信。

skbuffs是在Linux内核中处理网络数据包的通用方法。数据包由网卡接收,放入一些skbuff中,然后传递到网络堆栈,该网络堆栈始终使用该skbuff。

这是在Linux内核中实现网络协议的基本数据结构和io路径。

我不知道从头到尾描述此过程的文档。来源与您有关。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399216.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号