diff options
author | Stefan Metzmacher <metze@samba.org> | 2011-02-09 12:17:23 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2011-03-04 21:19:05 +0100 |
commit | 8002406c51cf1f9f6daebef7e03bfef77f56cf38 (patch) | |
tree | 90ddbb12c81a58a65b741d67935251fa43f7f98d /source4/kdc/kdc-glue.h | |
parent | e70b09e8f8f99b2d63047525f1d5e360582f7eaa (diff) | |
download | samba-8002406c51cf1f9f6daebef7e03bfef77f56cf38.tar.gz samba-8002406c51cf1f9f6daebef7e03bfef77f56cf38.tar.bz2 samba-8002406c51cf1f9f6daebef7e03bfef77f56cf38.zip |
s4:kdc: split the kdc_tcp_proxy() logic from the main kdc logic
By having kdc_tcp_proxy_send/recv(), which just asks any writeable
dc for a reponse blob, we simplify the interaction between
client-local and local-writeable sockets.
This allows us to make kdc_socket, kdc_process_fn_t, kdc_tcp_call and kdc_tcp_socket
private to kdc.c again.
metze
Diffstat (limited to 'source4/kdc/kdc-glue.h')
-rw-r--r-- | source4/kdc/kdc-glue.h | 50 |
1 files changed, 8 insertions, 42 deletions
diff --git a/source4/kdc/kdc-glue.h b/source4/kdc/kdc-glue.h index f9489b1fd1..b365cd75c6 100644 --- a/source4/kdc/kdc-glue.h +++ b/source4/kdc/kdc-glue.h @@ -50,46 +50,6 @@ enum kdc_process_ret { KDC_PROCESS_FAILED, KDC_PROCESS_PROXY}; -struct kdc_tcp_call { - struct kdc_tcp_connection *kdc_conn; - DATA_BLOB in; - DATA_BLOB out; - uint8_t out_hdr[4]; - struct iovec out_iov[2]; -}; - -typedef enum kdc_process_ret (*kdc_process_fn_t)(struct kdc_server *kdc, - TALLOC_CTX *mem_ctx, - DATA_BLOB *input, - DATA_BLOB *reply, - struct tsocket_address *peer_addr, - struct tsocket_address *my_addr, - int datagram); - - -/* hold information about one kdc socket */ -struct kdc_socket { - struct kdc_server *kdc; - struct tsocket_address *local_address; - kdc_process_fn_t process; -}; - -/* - state of an open tcp connection -*/ -struct kdc_tcp_connection { - /* stream connection we belong to */ - struct stream_connection *conn; - - /* the kdc_server the connection belongs to */ - struct kdc_socket *kdc_socket; - - struct tstream_context *tstream; - - struct tevent_queue *send_queue; -}; - - enum kdc_process_ret kpasswdd_process(struct kdc_server *kdc, TALLOC_CTX *mem_ctx, DATA_BLOB *input, @@ -112,7 +72,13 @@ NTSTATUS kdc_udp_proxy_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx, DATA_BLOB *out); -void kdc_tcp_proxy(struct kdc_server *kdc, struct kdc_tcp_connection *kdc_conn, - struct kdc_tcp_call *call, uint16_t port); +struct tevent_req *kdc_tcp_proxy_send(TALLOC_CTX *mem_ctx, + struct tevent_context *ev, + struct kdc_server *kdc, + uint16_t port, + DATA_BLOB in); +NTSTATUS kdc_tcp_proxy_recv(struct tevent_req *req, + TALLOC_CTX *mem_ctx, + DATA_BLOB *out); #endif |