flexda_custom_extract_hdr
接口功能
用户从报文中提取头信息。
接口格式
int flexda_custom_extract_hdr ( void *ctx, const struct flexda_custom_info_t *info)
参数说明
参数名 |
参数类型 |
入参/出参 |
说明 |
|---|---|---|---|
ctx |
void * |
入参 |
自定义上下文的地址。提取的头信息也保存其中。 |
info |
struct flexda_custom_info_t * |
入参 |
dpak-ovs提供flexda-ovs读取使用的信息。详情请参见表1。 |
函数返回值 |
int |
出参 |
若函数执行成功则返回0,若函数执行失败则返回错误码。 |
使用实例
int flexda_custom_extract_hdr(void *ctx, flexda_custom_info_t info)
{
struct custom_packet_ctx *custom_ctx = (struct custom_packet_ctx *)ctx;
struct flexda_sub_hdr *out_header = &custom_ctx->out_header; // 框架提供的默认报文头信息结构体,搭配报文解析api使用
struct dp_packet *pkt = info.pkt;
struct flexda_extract_ctx pkt_parser; // 框架提供的默认报文解析结构体,搭配报文解析api使用
pkt_parser.pkt_itr = (uint8_t *)flexda_dp_packet_data(pkt);
pkt_parser.pkt_end = (uint8_t *)flexda_dp_packet_data(pkt) + flexda_dp_packet_size(pkt);
if (custom_ctx->vlan_poped == 1) {
// 调用框架提供的默认报文头解析API,将报文头信息解析保存在报文自定义上下文中
if (!flexda_extract_hdr(&pkt_parser, out_header)) { // 解析不成功
return -EINVAL;
}
return 0; // 解析成功
}
return false;// 标志位不为1
}
父主题: Hook函数