bpo-29728: Provide socket.TCP_NOTSENT_LOWAT (#477)

* Provide socket.TCP_NOTSENT_LOWAT
* New TCP option available on recent MacOS and Linux.
* Document addition of TCP_NOTSENT_LOWAT
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index d56caf0..8af6bc5 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -303,6 +303,9 @@
       ``SO_DOMAIN``, ``SO_PROTOCOL``, ``SO_PEERSEC``, ``SO_PASSSEC``,
       ``TCP_USER_TIMEOUT``, ``TCP_CONGESTION`` were added.
 
+   .. versionchanged:: 3.7
+      ``TCP_NOTSENT_LOWAT`` was added.
+
 .. data:: AF_CAN
           PF_CAN
           SOL_CAN_*
diff --git a/Misc/NEWS b/Misc/NEWS
index b17a5e9..aac10a6 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -317,6 +317,9 @@
 
 - bpo-28682: Added support for bytes paths in os.fwalk().
 
+- bpo-29728: Add new :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constant.
+  Patch by Nathaniel J. Smith.
+  
 - bpo-29623: Allow use of path-like object as a single argument in
   ConfigParser.read().  Patch by David Ellis.
 
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 63e87e6..6d5c256 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -7507,6 +7507,9 @@
 #ifdef  TCP_USER_TIMEOUT
     PyModule_AddIntMacro(m, TCP_USER_TIMEOUT);
 #endif
+#ifdef  TCP_NOTSENT_LOWAT
+    PyModule_AddIntMacro(m, TCP_NOTSENT_LOWAT);
+#endif
 
     /* IPX options */
 #ifdef  IPX_TYPE