---
title: Hydra核心语法
description: "Hydra语言提供的核心抽象及语法如下所示。"
url: https://www.hikunpeng.com/document/detail/zh/flexda/devguide/dpak_dev0035.html
sourcePath: /source/zh/flexda/devguide/dpak_dev0035.html
indexId: 3153c02959b47febc069758d4975cdbc3132b180fd9f3ae0334663b60f00670e44
---
# 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;
```
