我一直试图找到答案,但由于我无法找到任何可靠的来源或参考文档,我现在感到绝望。
我尝试做的是,使用高级API RFC 3542
将ipv6数据包发送到连接了HopbyHop扩展标头的客户端HopbyHop扩展头的选项类型是OPT_X,它是用户定义的。现在,当我将数据包发送到接收器时,数据包不会显示在接收端。但它表明我在界面上收到了一个带有Wireshark的正确数据包。
我使用原始套接字进行上述通信。
socket(AF_INET6, SOCk_RAW, IPPROTO_RAW)
在我的IPv6标头中,我将下一个标头的值定义为0(适用于HopbyHop扩展标头)
对于发送和接收数据包,我使用sendmsg()和recvmsg()系统调用,这似乎对以下场景正常工作,
当我的nextHeader值为255时,接收器会成功打印它,
但是如果我将nextHeader值设置为0,则接收器似乎没有收到它,因为它处理头部中没有任何实现的头中的Option Type值。
对于我已定义的选项类型' OPT_X'它向我发送ICMP错误,说明参数无法识别。但是,如果我将其更改为内核实现的值,例如' Router Alert'或者' Jumbo Frame'它没有给出ICMP错误。
有没有办法,使用任何套接字选项或过滤器告诉内核不要处理逐跳扩展标头的选项类型,因为我希望能够在用户空间中完成所有这些操作。
任何帮助或参考资料都会有很大帮助。我一直试图解决这个问题,但没有成功。