mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Allow IPv6 only stack to use UDP endpoints
Check if stack supports IPv4 before registering an IPv6 endpoint as dual-stack. PiperOrigin-RevId: 454922614
This commit is contained in:
committed by
gVisor bot
parent
758a425bbc
commit
ebadfe7702
@@ -1016,7 +1016,7 @@ func TestIPv6PacketInfo(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
s := stack.New(stack.Options{
|
||||
NetworkProtocols: []stack.NetworkProtocolFactory{ipv6.NewProtocol, ipv4.NewProtocol},
|
||||
NetworkProtocols: []stack.NetworkProtocolFactory{ipv6.NewProtocol},
|
||||
TransportProtocols: []stack.TransportProtocolFactory{udp.NewProtocol},
|
||||
RawFactory: &raw.EndpointFactory{},
|
||||
})
|
||||
|
||||
@@ -653,7 +653,7 @@ func (e *endpoint) Connect(addr tcpip.FullAddress) tcpip.Error {
|
||||
// packets on a different network protocol, so we register both even if
|
||||
// v6only is set to false and this is an ipv6 endpoint.
|
||||
netProtos := []tcpip.NetworkProtocolNumber{netProto}
|
||||
if netProto == header.IPv6ProtocolNumber && !e.ops.GetV6Only() {
|
||||
if netProto == header.IPv6ProtocolNumber && !e.ops.GetV6Only() && e.stack.CheckNetworkProtocol(header.IPv4ProtocolNumber) {
|
||||
netProtos = []tcpip.NetworkProtocolNumber{
|
||||
header.IPv4ProtocolNumber,
|
||||
header.IPv6ProtocolNumber,
|
||||
@@ -790,7 +790,7 @@ func (e *endpoint) bindLocked(addr tcpip.FullAddress) tcpip.Error {
|
||||
// wildcard (empty) address, and this is an IPv6 endpoint with v6only
|
||||
// set to false.
|
||||
netProtos := []tcpip.NetworkProtocolNumber{boundNetProto}
|
||||
if boundNetProto == header.IPv6ProtocolNumber && !e.ops.GetV6Only() && boundAddr == "" {
|
||||
if boundNetProto == header.IPv6ProtocolNumber && !e.ops.GetV6Only() && boundAddr == "" && e.stack.CheckNetworkProtocol(header.IPv4ProtocolNumber) {
|
||||
netProtos = []tcpip.NetworkProtocolNumber{
|
||||
header.IPv6ProtocolNumber,
|
||||
header.IPv4ProtocolNumber,
|
||||
|
||||
Reference in New Issue
Block a user