diff options
author | Amanda Tait <atait@google.com> | 2019-02-20 12:53:07 -0800 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2019-02-20 12:54:13 -0800 |
commit | ea070b9d5f4be0b25b028e90ab4518ef2e4df16b (patch) | |
tree | 809aa3394d3b276cb5b37b4d72adf0f32e9248e1 /pkg/dhcp/server.go | |
parent | 3e3a1ef9d61fccf6d0d9a52f4e885a6e07a07609 (diff) |
Implement Broadcast support
This change adds support for the SO_BROADCAST socket option in gVisor Netstack.
This support includes getsockopt()/setsockopt() functionality for both UDP and
TCP endpoints (the latter being a NOOP), dispatching broadcast messages up and
down the stack, and route finding/creation for broadcast packets. Finally, a
suite of tests have been implemented, exercising this functionality through the
Linux syscall API.
PiperOrigin-RevId: 234850781
Change-Id: If3e666666917d39f55083741c78314a06defb26c
Diffstat (limited to 'pkg/dhcp/server.go')
-rw-r--r-- | pkg/dhcp/server.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/pkg/dhcp/server.go b/pkg/dhcp/server.go index 3e06ab4c7..c72c3b70d 100644 --- a/pkg/dhcp/server.go +++ b/pkg/dhcp/server.go @@ -123,6 +123,9 @@ func newEPConnServer(ctx context.Context, stack *stack.Stack, addrs []tcpip.Addr if err := ep.Bind(tcpip.FullAddress{Port: ServerPort}, nil); err != nil { return nil, fmt.Errorf("dhcp: server bind: %v", err) } + if err := ep.SetSockOpt(tcpip.BroadcastOption(1)); err != nil { + return nil, fmt.Errorf("dhcp: server setsockopt: %v", err) + } c := newEPConn(ctx, wq, ep) return NewServer(ctx, c, addrs, cfg) } |