YNL CLI

YNL CLI YNL CLIYAML Netlink CLI是 Linux 内核源码树中自带的一个基于 Python 开发的命令行工具主要用于通过YAML 协议规范文件与内核中的Generic Netlink​ 子系统进行交互。它是内核网络开发者进行调试、测试 Netlink API 的利器避免了手写 C 程序或依赖特定版本的ip/ethtool等用户态工具。核心概念与定位YNL 是什么YNLYAML Netlink是一套框架利用YAML 文件位于Documentation/netlink/specs/来描述 Netlink 协议族的操作、属性和消息格式。CLI 工具则是这个框架的用户态前端。解决什么问题传统 Netlink 接口复杂且容易变动YNL 通过规范驱动Spec-driven的方式自动处理 Netlink 消息的编码Encode和解码Decode让开发者可以直接用JSON​ 输入输出来操作内核极大简化了开发验证流程。工具位置与依赖代码路径通常位于内核源码树的tools/net/ynl/pyynl/cli.py​ 或较老版本的tools/net/ynl/cli.py。依赖需要 Python3 环境以及内核源码中配套的tools/net/ynl/lib/库文件。常用用法与参数YNL CLI 的核心是指定一个YAML 规范文件然后执行具体的操作--spec file指定 YAML 规范文件路径如Documentation/netlink/specs/ethtool.yaml。--do op_name执行单次请求操作Do。--dump op_name执行遍历请求操作Dump。--json attrs以 JSON 格式传入操作所需的属性参数。--subscribe group订阅内核的通知组Notifications。典型示例查询网卡队列设置./tools/net/ynl/pyynl/cli.py \ --spec Documentation/netlink/specs/ethtool.yaml \ --do rings-get \ --json {header:{dev-index: 18