ZBLOG

分析一下这段代码 static bool conn_update_state(struct conntrack *ct, struct dp_packet *pkt, struct conn_lookup_ctx *ctx, struct conn **conn, long long now, unsigned bucket) OVS_REQUIRES(ct->buckets[bucket].lock) {

这段代码定义了一个名为conn_update_state的函数,接受六个参数:一个指向conntrack结构体的指针ct,一个指向dp_packet结构体的指针pkt,一个指向conn_lookup_ctx结构体的指针ctx,一个指向指向conn结构体的指针的指针conn,一个long long类型的now和一个unsigned类型的bucket。

函数首先定义了一个布尔类型的变量create_new_conn,并将其初始化为false。然后进入条件判断,如果ctx->icmp_related为true,则设置pkt->md.ct_state的CS_RELATED位,并检查ctx->reply的值,如果为true则还需设置CS_REPLY_DIR位。否则,检查(*conn)->alg_related的值是否为true,若是则设置pkt->md.ct_state的CS_RELATED位。

接下来,调用conn_update函数,传入相应的参数。根据返回值,进行不同的操作。如果返回值为CT_UPDATE_VALID,则设置pkt->md.ct_state的CS_ESTABLISHED位,并清除CS_NEW位;若ctx->reply为true,则还需设置CS_REPLY_DIR位。如果返回值为CT_UPDATE_INVALID,则设置pkt->md.ct_state为CS_INVALID。如果返回值为CT_UPDATE_NEW,则调用conn_clean函数清理连接并将create_new_conn设置为true。如果返回值为CT_UPDATE_VALID_NEW,则设置pkt->md.ct_state的CS_NEW位。

最后,返回create_new_conn的值。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=346

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?