[3.8] bpo-38600: NULL -> ``NULL``. (GH-17001) (GH-17003)

Also fix some other formatting.
(cherry picked from commit e835b31d2b212c3c7820364398979cae2a9740b2)
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index 12416e0..12b9091 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -1635,9 +1635,9 @@
    ``None`` or a :term:`bytes-like object` representing a buffer. In the later
    case it is up to the caller to ensure that the bytestring contains the
    proper bits (see the optional built-in module :mod:`struct` for a way to
-   encode C structures as bytestrings). When value is set to ``None``,
-   optlen argument is required. It's equivalent to call setsockopt C
-   function with optval=NULL and optlen=optlen.
+   encode C structures as bytestrings). When *value* is set to ``None``,
+   *optlen* argument is required. It's equivalent to call :c:func:`setsockopt` C
+   function with ``optval=NULL`` and ``optlen=optlen``.
 
 
    .. versionchanged:: 3.5