ZBLOG

具体分析一下这段代码 static void get_ftp_ctl_msg(struct dp_packet *pkt, char *ftp_msg) { struct tcp_header *th = dp_packet_l4(pkt); char *tcp_hdr = (char *) th; uint32_t tcp_payload_len = tcp_payload_length(pkt); // 获取包有效载荷长度 size_t tcp_payl...

该段代码用于从TCP包中提取FTP控制消息,即获取FTP命令和响应。

具体分析如下:

  1. 通过dp_packet_l4()函数获取TCP报文头部指针th。

  2. 将TCP报文头部指针th转换为char类型的指针tcp_hdr。

  3. 使用tcp_payload_length()函数获取TCP报文有效载荷长度。

  4. 定义一个tcp_payload_of_interest变量作为感兴趣的FTP消息的最大长度,其值被限制在LARGEST_FTP_MSG_OF_INTEREST和tcp_payload_len之间,取两者中较小的那个。

  5. 使用TCP_OFFSET(th->tcp_ctl) * 4计算TCP报文头部长度,其中TCP_OFFSET宏用于获取TCP头部长度字段,乘以4是因为TCP头部长度单位是4字节。

  6. 使用ovs_strlcpy()函数将tcp_hdr + tcp_hdr_len处开始,长度为tcp_payload_of_interest的内容复制到ftp_msg缓冲区中。其中,ovs_strlcpy()函数类似于strncpy()函数,但会确保目标缓冲区以’\0’结尾,并返回实际复制的字符数。

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?