-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add udp multicast support #37
Conversation
Starry 原先使用 1 年前的 smoltcp 依赖 是为了使用loopback来作为轮询方式通过 libc test 的 socket 测例,而在当时的 ArceOS 中使用的 以太网 模型无法通过。如果想要用上最新的 smoltcp,一个方法可以是先尝试是否可以用最新的 smoltcp 库加以太网模型通过 libc test 的 socket 测例,之后再尝试支持 SO_REUSEADDR。 |
顺带一提 是如何确定是 smoltcp 库的错误导致出现了 SO_REUSEADDR 的错误呢?之前也有 smoltcp 库报错,但是实际上是内核本身的缓冲区设置过小导致出现了问题。 |
目前fastdds需要使用SO_REUSEADDR, 来让两个bind在广播地址上的udpsocket都能接收到消息, 但是现在smoltcp逻辑是找到第一个符合地址的socket就返回了, 这样就导致另一个socket recv不到数据
|
如果可能的话,建议是对接最新的 smoltcp 库,先兼容原有功能,如 libc test,然后再尝试进行修改。 @scPointer 有何建议呢 |
可以检查 smoltcp 最新的版本是否能过目前 Arceos 和 Starry 里的所有网络测例,如果可以,就同步 这样做的原因是我们没法预期 |
赞同, 那我在smoltcp最新的版本来试着做做看🌟 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
把之前说的关于改 smoltcp 的 commit 加一下,其他的没什么问题
@@ -283,6 +316,15 @@ impl UdpSocket { | |||
f() | |||
} else { | |||
loop { | |||
#[cfg(feature = "signal")] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
这个地方目前暂时使用不安全的符号链接跳转,之后考虑 Starry 的单向依赖性质的时候可以把信号部分移植到底层,从而避免直接调用 Unsafe 代码。
…MediaKit Add the x86 support
fastdds所需的udp多播支持
udp bind()
的端口冲突检查IP_MULTICAST_TTL
支持IP_ADD_MEMBERSHIP
支持未实现功能
SO_REUSEADDR
支持 (需要对smoltcp
进行修改, 能否讨论下具体方案)