diff --git a/netstack/src/scheme/tcp.rs b/netstack/src/scheme/tcp.rs index f84ea492bb..3808a3906e 100644 --- a/netstack/src/scheme/tcp.rs +++ b/netstack/src/scheme/tcp.rs @@ -517,13 +517,7 @@ impl<'a> SchemeSocket for TcpSocket<'a> { buf[..len].copy_from_slice(&name[..len]); Ok(len) } - IP_TTL => { - let val = self.hop_limit().unwrap_or(64) as u32; - let bytes = val.to_ne_bytes(); - let len = buf.len().min(bytes.len()); - buf[..len].copy_from_slice(&bytes[..len]); - Ok(len) - } + // IP_TTL(2) collides with TCP_MAXSEG(2) — TCP_MAXSEG handles it IP_MTU_DISCOVER => { let val: u32 = 1; let bytes = val.to_ne_bytes(); @@ -531,13 +525,7 @@ impl<'a> SchemeSocket for TcpSocket<'a> { buf[..len].copy_from_slice(&bytes[..len]); Ok(len) } - SO_REUSEADDR => { - let val: u32 = 1; - let bytes = val.to_ne_bytes(); - let len = buf.len().min(bytes.len()); - buf[..len].copy_from_slice(&bytes[..len]); - Ok(len) - } + // SO_REUSEADDR(2) collides with TCP_MAXSEG(2) — TCP_MAXSEG handles it _ => Err(SyscallError::new(syscall::ENOPROTOOPT)), } } @@ -590,7 +578,7 @@ impl<'a> SchemeSocket for TcpSocket<'a> { Ok(1) } IP_MTU_DISCOVER => Ok(1), - SO_REUSEADDR => Ok(1), + // SO_REUSEADDR(2) collides with IP_TTL(2) — IP_TTL handles it _ => Err(SyscallError::new(syscall::ENOPROTOOPT)), } } diff --git a/netstack/src/scheme/udp.rs b/netstack/src/scheme/udp.rs index 366d1dc0bc..9cef35ccba 100644 --- a/netstack/src/scheme/udp.rs +++ b/netstack/src/scheme/udp.rs @@ -436,20 +436,6 @@ impl<'a> SchemeSocket for UdpSocket<'a> { buf[..bytes.len()].copy_from_slice(&bytes); Ok(bytes.len()) } - SO_REUSEADDR => { - let val: u32 = 1; - let bytes = val.to_ne_bytes(); - let len = buf.len().min(bytes.len()); - buf[..len].copy_from_slice(&bytes[..len]); - Ok(len) - } - SO_BROADCAST => { - let val: u32 = 1; - let bytes = val.to_ne_bytes(); - let len = buf.len().min(bytes.len()); - buf[..len].copy_from_slice(&bytes[..len]); - Ok(len) - } IP_TTL => { let val = self.hop_limit().unwrap_or(64) as u32; let bytes = val.to_ne_bytes(); @@ -457,6 +443,7 @@ impl<'a> SchemeSocket for UdpSocket<'a> { buf[..len].copy_from_slice(&bytes[..len]); Ok(len) } + // SO_REUSEADDR(2) collides with IP_TTL(2) — IP_TTL handles it _ => Err(SyscallError::new(syscall::ENOPROTOOPT)), } } @@ -473,7 +460,7 @@ impl<'a> SchemeSocket for UdpSocket<'a> { self.set_hop_limit(Some(val)); Ok(1) } - SO_REUSEADDR | SO_BROADCAST => Ok(1), + // SO_REUSEADDR(2) and SO_BROADCAST(6): accepted, no state change needed _ => Err(SyscallError::new(syscall::ENOPROTOOPT)), } }