+/*!
+@brief
+ Creates a recording session descriptor to create a
+ \ref api-session-snapshot-mode "snapshot" recording session
+ named \lt_p{session_name} and having an initial remote output.
+
+Using the returned descriptor when you call lttng_create_session_ext()
+to create a snapshot recording session is similar to using a descriptor
+which lttng_session_descriptor_snapshot_create() returns and calling
+lttng_snapshot_add_output() after creating the recording session.
+
+The name of this initial snapshot output is <code>snapshot-0</code>.
+
+The valid combinations of \lt_p{control_url} and \lt_p{data_url} are:
+
+<table>
+ <tr>
+ <th>\lt_p{control_url}
+ <th>\lt_p{data_url}
+ <th>Behaviour
+ <tr>
+ <td>\c NULL
+ <td>\c NULL
+ <td>
+ Use \lt_def_net_ctrl_url as \lt_p{control_url}.
+
+ Use \lt_def_net_data_url as \lt_p{data_url}.
+ <tr>
+ <td>\ref api-session-one-port-url "Single-port output URL"
+ <td>\c NULL
+ <td>
+ Use the protocol, host, and trace directory (if any) of
+ \lt_p{control_url} and the port \lt_def_net_data_port
+ as \lt_p{data_url}.
+ <tr>
+ <td>Single-port output URL
+ <td>
+ Single-port output URL with the exact same protocol, host,
+ and trace directory (if any) as \lt_p{control_url}.
+ <td>
+ Use the specified output URLs.
+ <tr>
+ <td>\ref api-session-two-port-url "Two-port output URL"
+ <td>\c NULL
+ <td>
+ Use the protocol, host, data port, and trace directory (if any)
+ of \lt_p{control_url} as \lt_p{data_url}.
+</table>
+
+@param[in] session_name
+ @parblock
+ Recording session name.
+
+ If \c NULL, LTTng automatically generates a recording session name
+ when you call lttng_create_session_ext().
+
+ Call lttng_session_descriptor_get_session_name() with the returned
+ recording session descriptor after successfully calling
+ lttng_create_session_ext() to get the generated name.
+ @endparblock
+@param[in] control_url
+ @parblock
+ Control data URL of an initial snapshot output.
+
+ One of:
+
+ <dl>
+ <dt>\ref api-session-one-port-url "Single-port output URL"
+ <dd>
+ Indicates where (to which relay daemon; see
+ \lt_man{lttng-relayd,8}) to send the control data.
+
+ <dt>\ref api-session-two-port-url "Two-port output URL"
+ <dd>
+ Indicates where to send the control \em and trace data.
+ </dl>
+
+ If \c NULL, this function uses \lt_def_net_url.
+ @endparblock
+@param[in] data_url
+ @parblock
+ Trace data URL of an initial snapshot output.
+
+ \ref api-session-one-port-url "Single-port output URL" which
+ indicates where to send the trace data.
+
+ May be <code>NULL</code>: see the table above for the default value
+ depending on \lt_p{control_url}.
+ @endparblock
+
+@returns
+ @parblock
+ Recording session descriptor on success, or \c NULL on error.
+
+ Destroy the returned descriptor with
+ lttng_session_descriptor_destroy().
+ @endparblock
+
+@lt_pre_sess_name_not_auto{session_name}
+@pre
+ \lt_p{control_url} and \lt_p{data_url} satisfy one of the valid
+ combinations shown in the table above.
+
+@sa lttng_session_descriptor_snapshot_create() --
+ Creates a recording session descriptor to create a
+ \ref api-session-snapshot-mode "snapshot" recording session
+ without an initial output.
+@sa lttng_session_descriptor_snapshot_local_create() --
+ Creates a recording session descriptor to create a
+ \ref api-session-snapshot-mode "snapshot" recording session
+ with an initial local output.
+*/