aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2010-03-17 06:00:56 +0000
committerKen Raeburn <raeburn@mit.edu>2010-03-17 06:00:56 +0000
commit17d926a4ce8bc2ede57a86f23948a3e9b68266a6 (patch)
treef8bcc310d4aae44f23eb49a427655d52a3ad4bf8 /src/include
parent1c2a27e980b7fbce4161579ec61087988fefe9cf (diff)
downloadkrb5-17d926a4ce8bc2ede57a86f23948a3e9b68266a6.zip
krb5-17d926a4ce8bc2ede57a86f23948a3e9b68266a6.tar.gz
krb5-17d926a4ce8bc2ede57a86f23948a3e9b68266a6.tar.bz2
Merge users/raeburn/branches/network-merge
Re-integrates the forked versions of network.c in kdc and kadmin/server. Server-specific initialization and SIGHUP-reset code is moved into other source files; the more generic network-servicing code is merged and moved into apputils library already used by both programs. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23811 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/include')
-rw-r--r--src/include/net-server.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/include/net-server.h b/src/include/net-server.h
new file mode 100644
index 0000000..02f35e1
--- /dev/null
+++ b/src/include/net-server.h
@@ -0,0 +1,50 @@
+/* */
+
+#ifndef NET_SERVER_H
+#define NET_SERVER_H
+
+typedef struct _krb5_fulladdr {
+ krb5_address * address;
+ krb5_ui_4 port;
+} krb5_fulladdr;
+
+/* exported from network.c */
+extern volatile int signal_requests_exit, signal_requests_reset;
+void init_addr(krb5_fulladdr *, struct sockaddr *);
+krb5_error_code add_udp_port(int port);
+krb5_error_code add_tcp_port(int port);
+krb5_error_code add_rpc_service(int port, u_long prognum, u_long versnum,
+ void (*dispatch)());
+krb5_error_code setup_network(void *handle, const char *prog);
+krb5_error_code listen_and_process(void *handle, const char *prog,
+ void (*reset)(void));
+void closedown_network(void);
+
+/* to be supplied by the server application */
+
+/*
+ * Two routines for processing an incoming message and getting a
+ * result to send back.
+ *
+ * The first, dispatch(), is for normal processing of a request. The
+ * second, make_toolong_error(), is obviously for generating an error
+ * to send back when the incoming message is bigger than
+ * listen_and_process can accept.
+ */
+krb5_error_code dispatch (void *handle,
+ struct sockaddr *local_addr,
+ const krb5_fulladdr *remote_addr,
+ krb5_data *request,
+ krb5_data **response,
+ int is_tcp);
+krb5_error_code make_toolong_error (void *handle, krb5_data **);
+
+/*
+ * Contexts are needed in lots of places. Opaque application-provided
+ * handles are passed around in lots of place, but contexts are not.
+ * For now, we'll require that the application provide us an easy way
+ * to get at a context; eventually it should probably be explicity.
+ */
+krb5_context get_context(void *handle);
+
+#endif /* NET_SERVER_H */