Quagga zebra between kernel interface method
Quagga开源路由协议的核心功能,就是维护内核中的路由表,这是通过用户态的路由协议和内核交互实现的。那么用户态程序如何与内核进行交互,本文就来探究一下。 在 Quagga 1.2.4的 configure.ac 文件中有下面这一段代码: dnl ------------------------------------ dnl Determine routing get and set ...
Quagga开源路由协议的核心功能,就是维护内核中的路由表,这是通过用户态的路由协议和内核交互实现的。那么用户态程序如何与内核进行交互,本文就来探究一下。 在 Quagga 1.2.4的 configure.ac 文件中有下面这一段代码: dnl ------------------------------------ dnl Determine routing get and set ...
GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替...
最近在一台 Ubuntu 上编译 frr, 发现编译之后运行总是提示找不到文件路径 /etc/frr.conf,而该路径确实没有这个文件,后来发现 frr.conf 安装后的实际路径是 /etc/frr。 看代码发现当前编译的版本是9.1.3,而之前按照同样的方法编译和运行成功的版本是10.2。难道和版本有关,经过一番分析和查找,终于发现 frr 官网上Ubuntu22.04 的构建方法是针...
最近在使用 Linux上的iproute2工具的时候,发现很多基础命令在网上得花费很大的力气找到,比如配置 IPv6静态路由的方法。而且因为iproute2包含了大量网络功能配置,导致iproute2的配置命令以及格式有很多,命令行自带的Help信息也不容易理解和掌握,所以自己在这里做一些总结和整理,便于自己查找使用。 下面是在shell下输入ip命令回车显示的打印信息,也是iproute...
Segment Routing Part III: SRv6英文版现在已经出版,Kinle版本可以购买,Amazon上的出版日期显示为:October 12, 2024。估计中文纸质版应该也不会等太久。相对来说,这本书距离上一本 Part II出版的时间,比 Part II 和 Part I 间隔的时间要长了很多。英文版Segment Routing, Part I出版于October 6,...
除了之前介绍的几种常用数据结构外,Python 的collections模块,还支持了很多容器数据类型(Container datatypes)。研究了一下,其中counter,deque和defaultdict 对目前的一些场景比较有用,特此记录一下。 1.counter Counter是Dict的一个子类(subclass),主要用于可散列对象的计数场景。具体数据结构实现是Dict,...
前两篇文章我们已经介绍了List列表,Tuple元组,Range范围,Set集合,Dict字典这几种数据类型,以及它们支持的一些操作。 如果之前一直使用C语言编程,会感觉Python的数据类型有很多,其实上面只是一小部分,还有很多我们还没有介绍。C语言本身支持的数据类型很少,数组和结构体是两个基本且常用的类型了,再加上强大的指针可以实现各种数据结构了,比如Python官方的解释器Cpyth...
上一篇文章展示了 List 列表, Tuple 元组和Range范围的一些定义和用法,这篇文章继续介绍 Set 集合以及 Dict 字典。 Set是一种包含无序成员(unordered collection)的数据类型, 它包含可散列的不相同的成员对象(distinct hashable objects),这里的可散列的含义是,对象成员是不可修改的,且可以相互比较的,原文如下: A...
上一篇文章SONiC 中的 Python 编程中提到了 Python 的具体应用,为了打好基础,我们先复习一下 Python 内置的数据结构,并编写一些示例代码,展示一下如何使用他们。 List 列表, Tuple 元组和Range范围 List是一种序列类型(Sequence Types), 它包含List,Tuple和Range,序列类型支持一些通用操作: ...
工作这些年的主力开发语言是 C/C++,确切地说是以 C 语言为主。最近一些年由于在 Linux 下开发,Shell 脚本语言用的也多了一些,各种编译构建,服务加载,系统监控等都可以通过 Shell 来实现。除此之外,在设备脚本执行,自动化测试等场景也涉及到了 Python,但是相对于 C 和 Shell,使用量还是少很多。 最近在深入研究交换机开源操作系统 SONiC,发现其中大量用到了...