Index: net/udp/udp_socket_win.h |
diff --git a/net/udp/udp_socket_win.h b/net/udp/udp_socket_win.h |
index bd47496ee81048ab60f783076c26d5bce17a2002..a82860fbeea67c68956490c84a90baac9f2577e6 100644 |
--- a/net/udp/udp_socket_win.h |
+++ b/net/udp/udp_socket_win.h |
@@ -105,7 +105,22 @@ class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) { |
const BoundNetLog& NetLog() const { return net_log_; } |
+ // Sets corresponding flags in |socket_options_| to allow the socket |
+ // to share the local address to which socket will be bound with |
+ // other processes. Should be called before Bind(). |
+ void AllowAddressReuse(); |
+ |
+ // Sets corresponding flags in |socket_options_| to allow sending |
+ // and receiving packets sent to and from broadcast |
+ // addresses. Should be called before Bind(). |
+ void AllowBroadcast(); |
+ |
private: |
+ enum SocketOptions { |
+ SOCKET_OPTION_REUSE_ADDRESS = 1 << 0, |
+ SOCKET_OPTION_BROADCAST = 1 << 1 |
+ }; |
+ |
class ReadDelegate : public base::win::ObjectWatcher::Delegate { |
public: |
explicit ReadDelegate(UDPSocketWin* socket) : socket_(socket) {} |
@@ -156,6 +171,9 @@ class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) { |
int InternalRecvFrom(IOBuffer* buf, int buf_len, IPEndPoint* address); |
int InternalSendTo(IOBuffer* buf, int buf_len, const IPEndPoint* address); |
+ // Applies |socket_options_| to |socket_|. Should be called before |
+ // Bind(). |
+ int SetSocketOptions(); |
int DoBind(const IPEndPoint& address); |
int RandomBind(const IPEndPoint& address); |
@@ -165,6 +183,10 @@ class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) { |
SOCKET socket_; |
+ // Bitwise-or'd combination of SocketOptions. Specifies set of |
+ // options that should be applied to |socket_| before bind. |
+ int socket_options_; |
+ |
// How to do source port binding, used only when UDPSocket is part of |
// UDPClientSocket, since UDPServerSocket provides Bind. |
DatagramSocket::BindType bind_type_; |