Hydra核心语法
Hydra语言提供的核心抽象及语法如下所示。
/* 头文件: 编程框架提供的架构头文件 */
#include "hydra_model.hdr"
#include "hydra_externs.hdr"
#include "hydra_builtin.hdr"
#include "hydra_headers.hdr"
/* Header数据类型:描述网络数据包中每个报文头的格式 */
struct headers {···}
/* parser:描述数据包中允许的报文序列,并从数据包中提取报文头 */
parser MyParser( packet in packet,
out headers hdr){
state start {···}
state parse_ethernet{···}
state parse_ipv6 {···}
}
/* action:描述如何操作数据包报文头字段,可以包含控制面在运行时提供的数据 */
action ovs_action_mod fullnat(in headers hdr) {···}
/* control:描述网络数据包的处理流程,根据对Table的匹配结果,实现对数据包的转发、修改、丢弃等动作 */
control MyPrePipe(in headers hdr){
@main
table fullnat exact {
key ={···}
actions = {···}
size = 0x1000;
default_action = flexda_upcall;
aging_time = 50;
}
apply{}
}
control MyPostPipe(in headers hdr){
apply{}
}
/* Package:组装parser和control等组件,是每个Hydra程序的入口 */
Switch(
TX_ovs(MyParser(),MyPrePipe(),MyPostPipe()),
RX_ovs(MyParser(),MyPrePipe()),MyPostPipe()
)main;
父主题: 语法