gvisor/pkg
Chris Kuiper 8d9276ed56 Support binding to multicast and broadcast addresses
This fixes the issue of not being able to bind to either a multicast or
broadcast address as well as to send and receive data from it. The way to solve
this is to treat these addresses similar to the ANY address and register their
transport endpoint ID with the global stack's demuxer rather than the NIC's.
That way there is no need to require an endpoint with that multicast or
broadcast address. The stack's demuxer is in fact the only correct one to use,
because neither broadcast- nor multicast-bound sockets care which NIC a
packet was received on (for multicast a join is still needed to receive packets
on a NIC).

I also took the liberty of refactoring udp_test.go to consolidate a lot of
duplicate code and make it easier to create repetitive tests that test the same
feature for a variety of packet and socket types. For this purpose I created a
"flowType" that represents two things: 1) the type of packet being sent or
received and 2) the type of socket used for the test. E.g., a "multicastV4in6"
flow represents a V4-mapped multicast packet run through a V6-dual socket.

This allows writing significantly simpler tests. A nice example is testTTL().

PiperOrigin-RevId: 264766909
2019-08-21 22:54:25 -07:00
..
abi Document RWF_HIPRI not implemented for preadv2/pwritev2. 2019-08-19 14:07:44 -07:00
amutex Fix various spelling issues in the documentation 2019-06-27 14:25:50 -07:00
atomicbitops Update canonical repository. 2019-06-13 16:50:15 -07:00
binary Update canonical repository. 2019-06-13 16:50:15 -07:00
bits Update canonical repository. 2019-06-13 16:50:15 -07:00
bpf Update canonical repository. 2019-06-13 16:50:15 -07:00
compressio Update canonical repository. 2019-06-13 16:50:15 -07:00
control Update canonical repository. 2019-06-13 16:50:15 -07:00
cpuid Fix various spelling issues in the documentation 2019-06-27 14:25:50 -07:00
eventchannel Rate limit the unimplemented syscall event handler. 2019-07-29 17:12:50 -07:00
fd Fix various spelling issues in the documentation 2019-06-27 14:25:50 -07:00
fdchannel Add //pkg/fdchannel. 2019-06-25 15:38:11 -07:00
fdnotifier Change syscall.EPOLLET to unix.EPOLLET 2019-08-05 23:10:08 +00:00
flipcall Flipcall refinements. 2019-07-31 12:56:04 -07:00
fspath Sentry virtual filesystem, v2 2019-07-18 15:10:29 -07:00
gate Update canonical repository. 2019-06-13 16:50:15 -07:00
ilist Update canonical repository. 2019-06-13 16:50:15 -07:00
linewriter Update canonical repository. 2019-06-13 16:50:15 -07:00
log Fix various spelling issues in the documentation 2019-06-27 14:25:50 -07:00
memutil Update canonical repository. 2019-06-13 16:50:15 -07:00
metric Update canonical repository. 2019-06-13 16:50:15 -07:00
p9 Drop local_server support. 2019-06-28 20:35:10 -07:00
procid Update canonical repository. 2019-06-13 16:50:15 -07:00
rand Update canonical repository. 2019-06-13 16:50:15 -07:00
refs Add note to name logging mentioning trace logging should be enabled to debug. 2019-08-13 12:49:18 -07:00
seccomp Change syscall.POLL to syscall.PPOLL. 2019-07-30 11:01:29 -07:00
secio Update canonical repository. 2019-06-13 16:50:15 -07:00
segment Fix various spelling issues in the documentation 2019-06-27 14:25:50 -07:00
sentry Use tcpip.Subnet in tcpip.Route 2019-08-21 15:31:18 -07:00
sleep Update canonical repository. 2019-06-13 16:50:15 -07:00
state Fix various spelling issues in the documentation 2019-06-27 14:25:50 -07:00
syserr netstack/udp: connect with the AF_UNSPEC address family means disconnect 2019-07-03 14:19:02 -07:00
syserror Cleanup straggling syscall dependencies. 2019-07-09 16:18:02 -07:00
tcpip Support binding to multicast and broadcast addresses 2019-08-21 22:54:25 -07:00
tmutex Update canonical repository. 2019-06-13 16:50:15 -07:00
unet Change syscall.POLL to syscall.PPOLL. 2019-07-30 11:01:29 -07:00
urpc Fix various spelling issues in the documentation 2019-06-27 14:25:50 -07:00
waiter Update canonical repository. 2019-06-13 16:50:15 -07:00