X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fdoc%2Fcommand_reply_args.html;h=49b79d6a1bacda08f744a19ef8b252d816aef559;hb=a9c6c36d5712c2fa017d1e82126a7d3c6f32a05a;hp=5a964271658f52abaac40a08af5e8579ef4e0b0a;hpb=ecb19b3983b3e74bc4aaa82277abd125c53c3623;p=crypto.git
diff --git a/lib/doc/command_reply_args.html b/lib/doc/command_reply_args.html
index 5a964271..49b79d6a 100644
--- a/lib/doc/command_reply_args.html
+++ b/lib/doc/command_reply_args.html
@@ -11,6 +11,15 @@ specific arguments to the application. This document describes these
arguments for all command replies to help SILC client software developers
to process them.
+
+NOTE: The following list of command reply arguments are sent when
+the command was executed successfully. If an error occurred, the
+`command_reply' client operation's 'success' argument is FALSE, and the
+'status' argument includes the error status. In this case the arguments
+returned are dependent of the 'status' argument. See all
+SilcStatus error arguments for these
+arguments.
+
command_reply Client Library operation
@@ -21,25 +30,24 @@ The 'command_reply' client operation callback function prototype is as follows:
void (*command_reply)(SilcClient client, SilcClientConnection conn,
-
-SilcCommandPayload cmd_payload, bool success, SilcCommand command,
-
-SilcStatus status, ...);
+ SilcCommand command, SilcStatus status,
+ SilcStatus error, va_list ap);
-The first argument 'client' is the SILC Client Library context, the 'conn'
+The first argument 'client' is the SILC Client Library context, the 'conn'
is the context for the connection to the remote server, the 'cmd_payload'
is the raw SilcCommandPayload and application usually ignores it, the
'success' boolean value indicates whether the earlier command was a success
or not, the 'command' is the command reply enumeration, and the 'status'
indicates the status of the command reply. If 'success' is FALSE then
-'status' includes error status.
+'status' includes error status (see SilcStatus
+error arguments).
Rest of the arguments are 'command' specific and implementation should
handle them by the SilcCommand for example in a switch statement.
-The commands are defined in lib/silccore/silccomand.h header file. A short
+The commands are defined in lib/silccore/silccomand.h header file. A short
example:
@@ -64,12 +72,15 @@ example:
The following table describes all commands and arguments that the client
-library sends in the 'command_reply' client operation to the application.
-By default all arguments that the library sends to application are valid
-pointers. However, it is possible that some pointers may be NULL. If
-this is the case it is separately mentioned that the argument may be NULL.
-In this case application must ignore that argument. The 'command_reply'
-arguments per SilcCommand is as follows:
+library sends in the 'command_reply' client operation to the application.
+By default all arguments that the library sends to application are valid
+pointers. However, it is possible that some pointers may be NULL. If
+this is the case it is separately mentioned that the argument may be NULL.
+In this case application must ignore that argument.
+
+
+The 'command_reply' arguments for successful SilcCommand replies are as
+follows:
Returns information about user. The following pointers may be NULL: 'channels', 'fingerprint', 'channel_usermodes' and 'attrs'. If 'fingerprint' is valid its -length is 20 bytes. If 'channels' is valid it can be parsed with -silc_channel_payload_parse_list function. It is the list of channels user -has joined. If the 'channel_usermodes' is valid it can be parsed with -silc_get_mode_list function. It is the list of the user's modes on the -joined channels. The 'attr' is the Requested Attributes that may have been -returned by the client and it can be parsed by traversing the SilcDList -and using silc_attribute_get_attribute function. +length is 20 bytes. If 'channels' is valid each entry in the list is +SilcChannelPayload. If the `channel_usermodes' is valid then the table +has as many entries as there are entries in the `channels' list, and the +first entry in the table is the user mode on the first channel in the +`channels' list. The `channel_usermodes' is the table of the user's modes +on the joined channels. The 'attr' is the Requested Attributes that may +have been returned by the client and it can be parsed by traversing the +SilcDList and using silc_attribute_get_attribute function. Each entry in +the list is SilcAttribute. | SilcClientEntry client_entry, char *nickname, -char *username, char *realname, SilcBuffer channels, SilcUInt32 usermode, -SilcUInt32 idletime, unsigned char *fingerprint, SilcBuffer channel_usermodes, +char *username, char *realname, SilcDList channels, SilcUInt32 usermode, +SilcUInt32 idletime, unsigned char *fingerprint, SilcUInt32 *channel_usermodes, SilcDList attrs | @@ -126,9 +139,14 @@ this command reply. The 'name' and 'info' may be NULL.||
SILC_COMMAND_NICK | -Returns the new Client ID after user has changed nickname. +Returns the new Client ID and new nickname inside the SilcClientEntry. +The `old_client_id' is the old Client ID used by the client before the +nickname was changed. The `nickname' is the new nickname. Note that, +when user changes nickname SILC_NOTIFY_TYPE_NICK_CHANGE is not delivered +to application. Instead this SILC_COMMAND_NICK command reply is delivered. | -SilcClientEntry local_entry, char *nickname
+SilcClientEntry local_entry, char *nickname,
+const SilcClientID *old_client_id
|
| Returns the list of channel in the SILC network. Each call of command reply returns one channel. This means that the command reply is called multiple -times to return list of channels. The 'channel_topic' may be NULL. +times to return list of channels. The 'channel', 'channel_name' and +'channel_topic' may be NULL. However, the 'channel' and 'channel_name' +are NULL only if there are no channels in the network. In this case +this reply is called once with all arguments set to NULL. Application +must be able to handle this situation correctly. | SilcChannelEntry channel, char *channel_name, char *channel_topic, SilcUInt32 user_count @@ -159,21 +181,26 @@ Returns the topic of the channel. Returns the invite list of the channel. Called also even if invite list was not modified but SILC_COMMAND_INVITE command was used to invite a user into a channel. In this case the invite list is not returned by the -server and 'invite_list' is NULL. The 'invite_list' is list of -SilcArgumentPayloads. The first 2 bytes are the number of arguments in -the list and can be parsed with SILC_GET16_MSB macro. The list can be -parsed with silc_argument_payload_parse function. +server and 'invite_list' is NULL. The 'invite_list' is SilcArgumenPayload +which contains one or more arguments, each is one invite list entry. The +entries can be retrieved with silc_argument_get_first_arg, +silc_argument_get_next_arg, silc_argument_get_arg_type and +silc_argument_get_decoded functions. | -SilcChannelEntry channel, SilcBuffer invite_list
+SilcChannelEntry channel,
+SilcArgumentPayload invite_list
|
SILC_COMMAND_KILL |
-Called after killing a client. There is no arguments to this reply.
+Called after killing a client. Returns the client that was killed.
+The `client_entry' may be NULL. The `client_entry' will become invalid
+after the command reply has returned from application. The
+SILC_NOTIFY_TYPE_KILLED will not be delivered for clients that you killed.
|
-none
+ | SilcClientEntry client_entry
|
SILC_COMMAND_STATS |
-Returns network statistics from the server. The 'stats_buffer' of length of
-'buffer_length' bytes includes 32-bit integers one after the other each
-representing some statistics. The integers can be parsed for example with
-SILC_GET32_MSB macro. The integers in the buffer are: starttime, uptime,
-local_clients, local_channels, local_serverops, local_routerops, cell_clients,
-cell_channels, cell_servers, all_clients, all_channel, all_servers,
-all_routers, all_serverops, all_routerops. All integers are always present.
+Returns network statistics from the server. The `stats' structure contains
+the statistics returned by the server.
|
-unsigned char *stats_buffer, SilcUInt32 buffer_length
+ | SilcClientStats *stats
|
SILC_COMMAND_JOIN |
-Reply received when user joined a channel. The 'ignored' argument can
-be ignored by the application. The 'topic' and 'hmac_name' may be NULL.
-The 'key_payload' is usually ignored by the application. The 'list_count'
-is the number of entries in both 'client_id_list' and 'client_mode_list'.
-The 'client_id_list' is a list of clients on the channel and 'client_mode_list'
-includes those clients' modes on the channel. If application likes to
-resolve information about the clients on the channel it may call
-silc_client_get_clients_by_list function and pass the 'client_id_list' as
-argument to it. The 'client_mode_list' includes 32-bit integers one after
-the other and they are in same order as clients in 'client_mode_list'.
-If application resolves the information with silc_client_get_clients_by_list
-parsing the 'client_mode_list' is not necessary.
+Reply received when user joined a channel. The `channel_mode' contains
+the current channel mode. The `user_list' is the user list on the channel
+and may be traversed with silc_hash_table_get function. Each entry in the
+`user_list' is SilcChannelUser structure, which contains the SilcClientEntry
+and the client's mode on the channel. The library will free the list.
+The `topic' is the current topic on channel or NULL if no topic is set.
+The `cipher' is the encryption algorithm used on channel or NULL if it is
+not available. The `hmac' is the HMAC algorithm used on channel or NULL if
+it is not available. The `founder_key' is the channel founder's public key
+or NULL if founder public key has not been set. The `channel_pubkeys' is
+a list of channel public keys (for authentication on joining) or NULL if
+they have not been set. Each entry in the list is SilcArgumentDecodedList
+each containing one channel SilcPublicKey. The library will free the list.
|
char *channel_name, SilcChannelEntry channel,
-SilcUInt32 channel_mode, int ignored, SilcBuffer key_payload, NULL, NULL,
-char *topic, char *hmac_name, SilcUInt32 list_count, SilcBuffer client_id_list,
-SilcBuffer client_mode_list
+SilcUInt32 channel_mode, SilcHashTableList *user_list, char *topic,
+char *cipher, char *hmac, SilcPublicKey founder_key,
+SilcDList channel_pubkeys, SilcUint32 user_limit
|
SILC_COMMAND_CMODE |
-Returns channel's mode after changing it.
- |
-SilcChannelEntry channel, SilcUInt32 mode
+Returns channel's mode after changing it. Optionally may also return
+founder's public key when it was set. It may also return the channel
+public key list when the list was altered. The 'founder_key' and
+'channel_pubkeys' arguments may be NULL. The 'channel_pubkeys' is a list
+of SilcArgumentDecodedList contexts which each contain one channel public
+key. The library will automatically free the list. If the `founder_key'
+was present it will be updated to `channel' entry by the library after
+calling the command_reply callback. Application may check if the `founder_key'
+is different from the key in `channel' entry to detect if it was changed.
+ |
+SilcChannelEntry channel, SilcUInt32 mode,
+SilcPublicKey founder_key, SilcDList channel_pubkeys, SilcUint32 user_limit
|
SILC_COMMAND_KICK |
-Called after kicking a client. There is no arguments to this reply.
+Called after kicking a client. Returns the client that was kicked from
+the 'channel'.
|
-none
+ | SilcChannelEntry channel, SilcClientEntry client_entry
|
|
-SilcChannelEntry channel, SilcBuffer ban_list
+SilcChannelEntry channel, SilcArgumentPayload ban_list
|
SILC_COMMAND_DETACH |
-Called after being detached from the SILC network. There is no arguments
-to this reply.
+Called after being detached from the SILC network. The command reply delivers
+the detachment data buffer `detach_data' that the application should save
+for example into a file. The data will be needed when resuming back to
+the network. When resuming the data is saved into SilcClientConnectionParams
+structure and given as argument to silc_client_connect_to_server or
+silc_client_key_exchange functions.
|
-none
+ | SilcBuffer detach_data
|
SILC_COMMAND_LEAVE |
-Called after leaving the channel.
+Called after leaving the channel. Note that the `channel' will become
+invalid after command_reply client operation returns.
|
SilcChannelEntry channel
|
@@ -343,13 +381,12 @@ Called after leaving the channel.
SILC_COMMAND_USERS |
-Returns list of users in channel. If application wishes not to parse
-the raw lists the channel->user_list hash table is updated before calling
-this command reply and application may traverse that table instead of
-parssing the raw lists.
+Returns list of users in channel. The `user_list' may be traversed with
+silc_hash_table_get function. Each entry in the `user_list' is
+SilcChannelUser structure, which contains the SilcClientEntry and the
+client's mode on the channel.
|
-SilcChannelEntry channel, SilcUInt32 list_count,
-SilcBuffer client_id_list, SilcBuffer client_mode_list
+ | SilcChannelEntry channel, SilcHashTableList *user_list
|
SILC_COMMAND_GETKEY |
Returns public key of client or server. The 'public_key' may be NULL.
-The 'entry_type' is used to check what type of pointer the entry' is. For
+The 'entry_type' is used to check what type of pointer the entry' is. For
SILC_ID_CLIENT SilcClientEntry and for SILC_ID_SERVER SilcServerEntry.
|
SilcIdType entry_type, void *entry,
@@ -365,9 +402,23 @@ SilcPublicKey public_key
|
+SILC_COMMAND_SERVICE |
+
+Returns the service list in the server, or information on the accepted
+and authenticated service. The 'service_list' maybe NULL if server does
+not support any services. It is NULL also when 'name' is not NULL. The
+'service_list' is a comma separated list of services the server supports.
+The 'name' MAY be NULL also. The 'name' is the requested service, and it is
+non-NULL only if server accepted and authenticated client's request.
+ |
+const char *server_list, const char *service_name
+ |
+ |