s4:rpc_server: add some const to dcesrv_handle_fetch()
[samba.git] / source4 / rpc_server / dcerpc_server.h
index eeb980f6969c9a11cd9f0f018f81c54698117c06..39492f6acffd4d8d6f4018594959877e865d0daf 100644 (file)
@@ -199,7 +199,7 @@ struct dcesrv_auth {
        uint32_t auth_context_id;
        struct gensec_security *gensec_security;
        struct auth_session_info *session_info;
-       NTSTATUS (*session_key)(struct dcesrv_connection *, DATA_BLOB *session_key);
+       NTSTATUS (*session_key_fn)(struct dcesrv_auth *, DATA_BLOB *session_key);
        bool client_hdr_signing;
        bool hdr_signing;
        bool auth_finished;
@@ -268,9 +268,6 @@ struct dcesrv_connection {
        /* the server_id that will be used for this connection */
        struct server_id server_id;
 
-       /* the transport level session key */
-       DATA_BLOB transport_session_key;
-
        /* is this connection pending termination?  If so, why? */
        const char *terminate;
 
@@ -428,15 +425,6 @@ NTSTATUS dcerpc_register_ep_server(const struct dcesrv_endpoint_server *ep_serve
 NTSTATUS dcesrv_init_context(TALLOC_CTX *mem_ctx, 
                                      struct loadparm_context *lp_ctx,
                                      const char **endpoint_servers, struct dcesrv_context **_dce_ctx);
-NTSTATUS dcesrv_endpoint_connect(struct dcesrv_context *dce_ctx,
-                                TALLOC_CTX *mem_ctx,
-                                const struct dcesrv_endpoint *ep,
-                                struct auth_session_info *session_info,
-                                struct tevent_context *event_ctx,
-                                struct imessaging_context *msg_ctx,
-                                struct server_id server_id,
-                                uint32_t state_flags,
-                                struct dcesrv_connection **_p);
 
 NTSTATUS dcesrv_reply(struct dcesrv_call_state *call);
 struct dcesrv_handle *dcesrv_handle_new(struct dcesrv_connection_context *context, 
@@ -444,13 +432,29 @@ struct dcesrv_handle *dcesrv_handle_new(struct dcesrv_connection_context *contex
 
 struct dcesrv_handle *dcesrv_handle_fetch(
                                          struct dcesrv_connection_context *context, 
-                                         struct policy_handle *p,
+                                         const struct policy_handle *p,
                                          uint8_t handle_type);
 
 const struct tsocket_address *dcesrv_connection_get_local_address(struct dcesrv_connection *conn);
 const struct tsocket_address *dcesrv_connection_get_remote_address(struct dcesrv_connection *conn);
 
-NTSTATUS dcesrv_fetch_session_key(struct dcesrv_connection *p, DATA_BLOB *session_key);
+/*
+ * Fetch the authentication session key if available.
+ *
+ * This is the key generated by a gensec authentication.
+ */
+NTSTATUS dcesrv_auth_session_key(struct dcesrv_call_state *call,
+                                DATA_BLOB *session_key);
+
+/*
+ * Fetch the transport session key if available.
+ * Typically this is the SMB session key
+ * or a fixed key for local transports.
+ *
+ * The key is always truncated to 16 bytes.
+*/
+NTSTATUS dcesrv_transport_session_key(struct dcesrv_call_state *call,
+                                     DATA_BLOB *session_key);
 
 /* a useful macro for generating a RPC fault in the backend code */
 #define DCESRV_FAULT(code) do { \
@@ -511,6 +515,11 @@ _PUBLIC_ bool dcesrv_call_authenticated(struct dcesrv_call_state *dce_call);
  */
 _PUBLIC_ const char *dcesrv_call_account_name(struct dcesrv_call_state *dce_call);
 
+/**
+ * retrieve session_info from a dce_call
+ */
+_PUBLIC_ struct auth_session_info *dcesrv_call_session_info(struct dcesrv_call_state *dce_call);
+
 _PUBLIC_ NTSTATUS dcesrv_interface_bind_require_integrity(struct dcesrv_call_state *dce_call,
                                                          const struct dcesrv_interface *iface);
 _PUBLIC_ NTSTATUS dcesrv_interface_bind_require_privacy(struct dcesrv_call_state *dce_call,