summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/tcpip')
-rw-r--r--pkg/tcpip/stack/nic.go6
-rw-r--r--pkg/tcpip/tests/integration/loopback_test.go40
2 files changed, 3 insertions, 43 deletions
diff --git a/pkg/tcpip/stack/nic.go b/pkg/tcpip/stack/nic.go
index 8e700990d..863ef6bee 100644
--- a/pkg/tcpip/stack/nic.go
+++ b/pkg/tcpip/stack/nic.go
@@ -676,10 +676,10 @@ func (n *NIC) getRefOrCreateTemp(protocol tcpip.NetworkProtocolNumber, address t
}
// A usable reference was not found, create a temporary one if requested by
- // the caller or if the address is found in the NIC's subnets and the NIC is
- // a loopback interface.
+ // the caller or if the IPv4 address is found in the NIC's subnets and the NIC
+ // is a loopback interface.
createTempEP := spoofingOrPromiscuous
- if !createTempEP && n.isLoopback() {
+ if !createTempEP && n.isLoopback() && protocol == header.IPv4ProtocolNumber {
for _, r := range n.mu.endpoints {
addr := r.addrWithPrefix()
subnet := addr.Subnet()
diff --git a/pkg/tcpip/tests/integration/loopback_test.go b/pkg/tcpip/tests/integration/loopback_test.go
index 3a2f75837..1b18023c5 100644
--- a/pkg/tcpip/tests/integration/loopback_test.go
+++ b/pkg/tcpip/tests/integration/loopback_test.go
@@ -110,51 +110,11 @@ func TestLoopbackAcceptAllInSubnet(t *testing.T) {
expectRx: true,
},
{
- name: "IPv6 bind to wildcard and send to assigned address",
- addAddress: ipv6ProtocolAddress,
- dstAddr: ipv6Addr.Address,
- expectRx: true,
- },
- {
name: "IPv6 bind to wildcard and send to other subnet-local address",
addAddress: ipv6ProtocolAddress,
dstAddr: otherIPv6Address,
- expectRx: true,
- },
- {
- name: "IPv6 bind to wildcard send to other address",
- addAddress: ipv6ProtocolAddress,
- dstAddr: remoteIPv6Addr,
- expectRx: false,
- },
- {
- name: "IPv6 bind to other subnet-local address and send to assigned address",
- addAddress: ipv6ProtocolAddress,
- bindAddr: otherIPv6Address,
- dstAddr: ipv6Addr.Address,
- expectRx: false,
- },
- {
- name: "IPv6 bind and send to other subnet-local address",
- addAddress: ipv6ProtocolAddress,
- bindAddr: otherIPv6Address,
- dstAddr: otherIPv6Address,
- expectRx: true,
- },
- {
- name: "IPv6 bind to assigned address and send to other subnet-local address",
- addAddress: ipv6ProtocolAddress,
- bindAddr: ipv6Addr.Address,
- dstAddr: otherIPv6Address,
expectRx: false,
},
- {
- name: "IPv6 bind and send to assigned address",
- addAddress: ipv6ProtocolAddress,
- bindAddr: ipv6Addr.Address,
- dstAddr: ipv6Addr.Address,
- expectRx: true,
- },
}
for _, test := range tests {