我一直试图找到答案,但我现在变得绝望,因为我无法找到任何可靠的来源或参考文件 .

我正在尝试做的是,使用高级API将一个ipv6数据包发送到一个连接了HopbyHop扩展头的客户端RFC 3542

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错误 .

有没有办法,使用任何套接字选项或过滤器告诉内核不要处理逐跳扩展标头的选项类型,因为我希望能够在用户空间中完成所有这些操作 .

任何帮助或参考资料都会有很大帮助 . 我一直试图解决这个问题,但没有成功 .