X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=client.h;h=7ba56b9168c500bd4f596c5ba9db82ccef3347c5;hp=d4eae31a51a82e8b42b9df096599c6ce957c8981;hb=3685a9093ae12ff9ce02fc58e607eb9b63894443;hpb=6668ac4a8c7f2a92efb9e6d405d954beff77d230 diff --git a/client.h b/client.h index d4eae31a..7ba56b91 100644 --- a/client.h +++ b/client.h @@ -1,52 +1,66 @@ -/* - * Copyright (C) 1997-2010 Andre Noll - * - * Licensed under the GPL v2. For licencing details see COPYING. - */ +/* Copyright (C) 1997 Andre Noll , see file COPYING. */ /** \file client.h Common client functions and exported symbols from client_common.c. */ -#include - /** The different states of a connection from the view of the client. */ enum { /** TCP connection is established. */ CL_CONNECTED, /** Server sends the welcome message. */ CL_RECEIVED_WELCOME, - /** Client sends the authentification request. */ + /** Client sends the authentication request. */ CL_SENT_AUTH, + /** Server sends encrypted challenge. */ + CL_RECEIVED_CHALLENGE, /** Client solves the challenge and sends the result. */ CL_SENT_CH_RESPONSE, /** Server accepts this authentication. */ CL_RECEIVED_PROCEED, - /** Client sends the command. */ - CL_SENT_COMMAND, - /** Server expects data. */ + /** Command is executing. */ + CL_EXECUTING, + /** Server is expecting data (addblob commands only). */ CL_SENDING, - /** Client expects data. */ - CL_RECEIVING, }; /** Data specific to a client task. */ struct client_task { /** The state of the connection. */ int status; - /** The file descriptor and the rc4 keys. */ - struct rc4_context rc4c; - /** The configuration (including the command). */ - struct client_args_info conf; - /** The config file for client options. */ - char *config_file; + /** The file descriptor and the session keys. */ + struct stream_cipher_context scc; + /** The sideband contexts for receiving/sending. */ + struct sb_context *sbc[2]; + /** The buffer tree nodes for receiving/sending. */ + struct btr_node *btrn[2]; + /** The hash value of the decrypted challenge. */ + unsigned char *challenge_hash; + /** The parsed command line (including the command). */ + struct lls_parse_result *lpr; /** The RSA private key. */ char *key_file; /** Paraslash user name. */ char *user; /** The client task structure. */ - struct task task; - struct btr_node *btrn; + struct task *task; + /** List of features supported by the server. */ + char **features; }; +#define CLIENT_CMD_PTR (lls_cmd(0, client_suite)) +#define CLIENT_OPT_RESULT(_name, _lpr) \ + (lls_opt_result(LSG_CLIENT_PARA_CLIENT_OPT_ ## _name, _lpr)) +#define CLIENT_OPT_GIVEN(_name, _lpr) \ + (lls_opt_given(CLIENT_OPT_RESULT(_name, _lpr))) +#define CLIENT_OPT_UINT32_VAL(_name, _lpr) \ + (lls_uint32_val(0, CLIENT_OPT_RESULT(_name, _lpr))) +#define CLIENT_OPT_STRING_VAL(_name, _lpr) \ + (lls_string_val(0, CLIENT_OPT_RESULT(_name, _lpr))) + void client_close(struct client_task *ct); +int client_parse_config(int argc, char *argv[], struct client_task **ct_ptr, + int *loglevel); +int client_connect(struct client_task *ct, struct sched *s, + struct btr_node *parent, struct btr_node *child); int client_open(int argc, char *argv[], struct client_task **ct_ptr, - int *loglevel, struct btr_node *parent, struct btr_node *child); + int *loglevel, struct btr_node *parent, struct btr_node *child, + struct sched *sched);