+/** Arguments passed to each afs callback. */
+struct afs_callback_arg {
+ /** The local socket connecting afs and the command handler. */
+ int fd;
+ /** Callback-specific data. */
+ struct osl_object query;
+ /** Will be written on band SBD_OUTPUT, fully buffered. */
+ struct para_buffer pbout;
+ struct lls_parse_result *lpr;
+};
+
+/**
+ * Afs command handlers run as a process which is not related to the afs
+ * process, i.e. they can not change the address space of afs directly.
+ * Therefore afs commands typically consist of two functions: The command
+ * handler and the corresponding callback function that runs in afs context.
+ *
+ * \sa send_callback_request().
+ */
+typedef int afs_callback(struct afs_callback_arg *aca);
+
+/**
+ * Callbacks send chunks to data back to the command handler. Pointers to
+ * this type of function are used by \ref send_callback_request and friends
+ * to deal with the data in the command handler process.
+ *
+ * \sa \ref send_callback_request().
+ */
+typedef int callback_result_handler(struct osl_object *result, uint8_t band, void *private);
+int afs_cb_result_handler(struct osl_object *result, uint8_t band, void *private);
+int pass_buffer_as_shm(int fd, uint8_t band, const char *buf, size_t size);