ZBLOG

具体分析一下这段代码 static void handle_ftp_ctl(struct conntrack *ct, const struct conn_lookup_ctx *ctx, struct dp_packet *pkt, const struct conn *conn_for_expectation, long long now, enum ftp_ctl_pkt ftp_ctl, bo...

这段代码实现了处理FTP控制报文的功能。具体分析如下:

  1. 首先通过detect_ftp_ctl_type函数判断是否为目标类型的FTP控制报文,如果不是则直接返回。

  2. 根据nat和conn_for_expectation->seq_skew的值确定是否需要进行序列号偏移调整。

  3. 根据ftp_ctl的值选择相应的处理函数process_ftp_ctl_v4或process_ftp_ctl_v6进行处理,并得到返回结果rc。如果rc为CT_FTP_CTL_INVALID,则说明报文格式无效,标记pkt为无效状态并返回;如果rc为CT_FTP_CTL_INTEREST,则需要进行地址替换操作,并进行序列号偏移调整,同时更新流跟踪表中的相关信息;如果rc为CT_FTP_CTL_OTHER,则说明为其他类型的FTP控制报文,此时需要直接使用conn_for_expectation中保存的序列号偏移量进行调整。

  4. 如果需要进行序列号偏移调整且seq_skew不为0,则根据ctx->reply与conn_for_expectation->seq_skew_dir的关系来确定是对TCP序列号还是确认号进行调整。调整后重新计算TCP头部校验和。

总之,这段代码的作用是对FTP控制报文进行处理,包括地址替换和序列号偏移调整等操作,并更新流跟踪表中的相关信息。

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?