ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

lldpd开发指南:如何为开源链路层协议贡献代码

lldpd开发指南:如何为开源链路层协议贡献代码 lldpd开发指南如何为开源链路层协议贡献代码【免费下载链接】lldpdimplementation of IEEE 802.1ab (LLDP)项目地址: https://gitcode.com/gh_mirrors/ll/lldpdlldpd是一个实现IEEE 802.1abLLDP协议的开源项目它支持多种操作系统包括FreeBSD、GNU/Linux、macOS等能够实现链路层发现协议的接收和发送并提供SNMP子代理等功能。本指南将详细介绍如何为lldpd项目贡献代码帮助新手和普通用户快速参与到开源链路层协议的开发中。一、准备开发环境1.1 克隆代码仓库首先你需要克隆lldpd的代码仓库到本地。打开终端执行以下命令git clone https://gitcode.com/gh_mirrors/ll/lldpd1.2 编译项目克隆完成后进入项目目录按照以下步骤编译项目cd lldpd ./autogen.sh ./configure make sudo make install在编译过程中lldpd使用特权分离来提高安全性需要创建用户_lldpd和组_lldpd以及目录/usr/local/var/run/lldpd该目录需由root拥有。1.3 开发期间运行在开发过程中若不想执行make install可以使用以下命令在当前位置执行lldpdsudo ./libtool execute src/daemon/lldpd -L $PWD/src/client/lldpcli -d你可以在命令后追加其他参数。如果lldpd无法找到lldpcli它将以未配置模式启动不会发送或接受LLDP帧。二、编码规范2.1 整体风格贡献的代码应大致遵循OpenBSD风格。重要的是使用制表符每个制表符宽度为8个字符这能限制过度嵌套。尽量遵守80列的限制。2.2 代码格式示例函数的返回类型单独占一行函数体的左花括号在单独的行上右花括号也总是单独占一行例如int main(int argc, char *argv[]) { /* [...] */ }三、提交补丁3.1 提交修改完成代码修改后使用有意义的提交消息进行提交。提交消息应遵循以下规则第一行使用描述性内容。第一行前加上修改的子系统名称如lldpd、lib、client或更精确的内容。不要害怕在提交消息中添加大量细节。3.2 生成补丁使用git format-patch生成要提交的补丁git format-patch origin/master你也可以使用git send-email直接通过电子邮件发送补丁或者在代码托管平台上打开拉取请求。四、测试4.1 一般测试套件项目提供了一般测试套件使用以下命令运行make check4.2 集成测试集成测试需要pytest并依赖Linux容器执行。你可以在项目中找到相关的测试文件如tests/integration/test_basic.py等。4.3 代码覆盖率要启用代码覆盖率使用以下配置和命令../configure --prefix/usr --sysconfdir/etc --localstatedir/var \ --enable-sanitizers --enable-gcov --with-snmp \ CFLAGS-O0 -g make make check # 可能还需要运行集成测试 lcov --base-directory $PWD/src/lib \ --directory src --capture --output-file gcov.info genhtml gcov.info --output-directory coverage五、代码结构5.1 主要目录src/daemon/包含守护进程相关代码如协议实现src/daemon/protocols/lldp.c、接口管理等。src/client/客户端相关代码如lldpcli的实现。src/lib/库文件代码如liblldpctl。5.2 重要文件CONTRIBUTE.md贡献指南包含编码规范和提交补丁的说明。README.md项目概述、安装和使用说明。六、常见问题解决6.1 编译兼容性如果内核版本早于Linux 4.0需要使用--enable-oldies编译lldpd以启用一些兼容性函数./configure --enable-oldies6.2 网络接口问题某些网络接口可能会影响LLDP数据包的接收和发送如Intel X710网卡可能会自行处理LLDP。若使用tcpdump看不到数据包可以尝试停止嵌入式LLDP守护进程。在Linux上for f in /sys/kernel/debug/i40e/*/command; do echo lldp stop $f done在FreeBSD上for oid in $(sysctl -Nq dev.ixl | grep fw_lldp); do sysctl $oid0 done七、总结通过本文的指南你可以了解如何准备lldpd的开发环境、遵循编码规范、提交补丁、进行测试以及解决常见问题。希望这些内容能帮助你顺利为lldpd项目贡献代码推动开源链路层协议的发展。如果你在开发过程中遇到其他问题可以查阅项目的官方文档或在社区中寻求帮助。【免费下载链接】lldpdimplementation of IEEE 802.1ab (LLDP)项目地址: https://gitcode.com/gh_mirrors/ll/lldpd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表