svn commit: samba r11106 - in branches/SAMBA_4_0/source/kdc: .

abartlet at samba.org abartlet at samba.org
Mon Oct 17 01:02:01 GMT 2005


Author: abartlet
Date: 2005-10-17 01:01:59 +0000 (Mon, 17 Oct 2005)
New Revision: 11106

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11106

Log:
Make the KDC handler plugable, as I want to drop kpasswdd into exactly
the same spot (it has identical TCP sementics).

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/kdc/kdc.c


Changeset:
Modified: branches/SAMBA_4_0/source/kdc/kdc.c
===================================================================
--- branches/SAMBA_4_0/source/kdc/kdc.c	2005-10-16 23:47:09 UTC (rev 11105)
+++ branches/SAMBA_4_0/source/kdc/kdc.c	2005-10-17 01:01:59 UTC (rev 11106)
@@ -57,6 +57,14 @@
 
 	/* a queue of outgoing replies that have been deferred */
 	struct kdc_reply *send_queue;
+
+	int (*process)(krb5_context context, 
+		       krb5_kdc_configuration *config,
+		       unsigned char *buf, 
+		       size_t len, 
+		       krb5_data *reply,
+		       const char *from,
+		       struct sockaddr *addr);
 };
 /*
   state of an open tcp connection
@@ -79,6 +87,14 @@
 
 	/* a queue of outgoing replies that have been deferred */
 	struct data_blob_list_item *send_queue;
+
+	int (*process)(krb5_context context, 
+					     krb5_kdc_configuration *config,
+					     unsigned char *buf, 
+					     size_t len, 
+					     krb5_data *reply,
+					     const char *from,
+					     struct sockaddr *addr);
 };
 
 /*
@@ -160,12 +176,12 @@
 	src_sock_addr.sin_family      = PF_INET;
 	
 	/* Call krb5 */
-	ret = krb5_kdc_process_krb5_request(kdc_socket->kdc->smb_krb5_context->krb5_context, 
-					    kdc_socket->kdc->config,
-					    blob.data, blob.length, 
-					    &reply,
-					    src_addr,
-					    (struct sockaddr *)&src_sock_addr);
+	ret = kdc_socket->process(kdc_socket->kdc->smb_krb5_context->krb5_context, 
+				  kdc_socket->kdc->config,
+				  blob.data, blob.length, 
+				  &reply,
+				  src_addr,
+				  (struct sockaddr *)&src_sock_addr);
 	if (ret == -1) {
 		talloc_free(tmp_ctx);
 		return;
@@ -227,13 +243,14 @@
 		stream_terminate_connection(conn, "kdc_tcp_accept: out of memory");
 		return;
 	}
-	kdcconn->conn	= conn;
-	kdcconn->kdc	= kdc;
-	conn->private = kdcconn;
+	kdcconn->conn	 = conn;
+	kdcconn->kdc	 = kdc;
+	kdcconn->process = krb5_kdc_process_krb5_request;
+	conn->private    = kdcconn;
 }
 
 /*
-  receive some data on a winbind connection
+  receive some data on a KDC connection
 */
 static void kdc_tcp_recv(struct stream_connection *conn, uint16_t flags)
 {
@@ -322,12 +339,12 @@
 
 	/* Call krb5 */
 	kdcconn->processing = True;
-	ret = krb5_kdc_process_krb5_request(kdcconn->kdc->smb_krb5_context->krb5_context, 
-					    kdcconn->kdc->config,
-					    kdcconn->partial.data + 4, kdcconn->partial.length - 4, 
-					    &reply,
-					    src_addr,
-					    (struct sockaddr *)&src_sock_addr);
+	ret = kdcconn->process(kdcconn->kdc->smb_krb5_context->krb5_context, 
+			       kdcconn->kdc->config,
+			       kdcconn->partial.data + 4, kdcconn->partial.length - 4, 
+			       &reply,
+			       src_addr,
+			       (struct sockaddr *)&src_sock_addr);
 	kdcconn->processing = False;
 	if (ret == -1) {
 		status = NT_STATUS_INTERNAL_ERROR;
@@ -426,6 +443,7 @@
 
 	kdc_socket->kdc = kdc;
 	kdc_socket->send_queue = NULL;
+	kdc_socket->process = krb5_kdc_process_krb5_request;
 
 	talloc_steal(kdc_socket, kdc_socket->sock);
 



More information about the samba-cvs mailing list