软件定义网络Software Defined Network 是一种网络创新架构,是网络虚拟化的一种实现方式。它通过把网络设备的控制面和数据面分离开来,实现了网络流量的灵活控制。
P4是一种用于网络设备数据平面的编程语言。我们将以P4语言手册(版本1.2.1)为主要内容结合ONF开放网络基金会和O-RAN联盟的相关框架和标准进行软件定义网络、网络功能虚拟化相关知识的学习。
P4语言手册全书共18章,本文我们一起进行第八章内容的学习。
第八章 8.10 元组表达式运算8.11 列表的运算
8.10 元组表达式运算
元组可以通过传递自变量参数被赋值给具有相同类型的其它元组或者作为一个方法的返回值list初始化,也可以被列表表达式初始化。
tuple, bool> x= {10, false };
8.11 列表的运算
列表表达式是使用花括号来书写的,其中的每个元素都用逗号进行了分隔:
expression …
| ‘{‘ expressionList ‘}’
expressionList
: /* empty */
| expression
| expressionList ‘,’ expression
;
表列表达式的类型是元组类型(详见本书7.2.8节)。列表表达式可以被赋值给类型是元组tuple,结构体struct或头部header的表达式,也可以作为自变量参数传递给方法。列表也可以是嵌套的。但是列表表达式不能是1值的。
例如,下面的程序片段使用一个列表表达式来同时传递一些报头字段到外部的learning provider。
extern LearningProvider {
void learn(in T data);
}
LearningProvider() lp;
lp.learn( { hdr.ethernet.srcAddr, hdr.ipv4.src } );
当列表的元素数量和结构体中字段的数量相同时,列表也可以用于初始化一个结构体。这样的初始化的效果就是把列表中的第i个元素赋值给了结构体中的第i个字段。
struct S {
bit a;
bit b;
}
const S x = { 10, 20 }; //a = 10, b = 20
列表表达式也可以用于初始化变量,这个变量的类型也是元组类型。
tuple x = { 10, false };
空列表表达式的类型可以是tuple,该类型是一个没有组件的元组。
【小编提示】第八章是P4语言表达式。在这一小节中我们一起了解了P4语言中的元组表达式的运算和列表的运算。下期文章我们一起继续第八章P4语言有值结构体表达式的学习。P4是为网络设备控制平面设计的编程语言。感谢阅读list初始化,欢迎订阅收藏和转发!
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688