鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

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;