X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccore%2Fsilccommand.h;h=bbd1fcf46f8589e8a0a6f2469beb1a1bde4be407;hb=a818c5b5411bbc4436d1c5f011236985c96bb787;hp=32ef4ba59dfaee6a5262690ef664598811a0a21c;hpb=af7267cc1671b856d4de21228f1a890a9d131e8f;p=silc.git diff --git a/lib/silccore/silccommand.h b/lib/silccore/silccommand.h index 32ef4ba5..bbd1fcf4 100644 --- a/lib/silccore/silccommand.h +++ b/lib/silccore/silccommand.h @@ -1,24 +1,24 @@ -/****h* silccore/silccommand.h - * - * NAME - * - * silccommand.h - * - * COPYRIGHT - * - * Author: Pekka Riikonen - * - * Copyright (C) 1997 - 2000 Pekka Riikonen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. +/* + + silccommand.h + + Author: Pekka Riikonen + + Copyright (C) 1997 - 2001 Pekka Riikonen + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +*/ + +/****h* silccore/SilcCommandAPI * * DESCRIPTION * @@ -35,16 +35,18 @@ * * SYNOPSIS * - * SilcChannelPayload silc_channel_payload_parse(SilcBuffer buffer); + * typedef void (*SilcCommandCb)(void *context, void *context2); * * DESCRIPTION * * Command function callback. The actual command function pointer. * This is generic command callback that the application may choose to - * use with its command routines. + * use with its command routines. However, none of the generic + * routines depend on this callback so application may freely define + * their own command callback if desired. * ***/ -typedef void (*SilcCommandCb)(void *context); +typedef void (*SilcCommandCb)(void *context, void *context2); /****s* silccore/SilcCommandAPI/SilcCommandPayload * @@ -157,7 +159,7 @@ typedef unsigned char SilcCommand; * * NAME * - * typedef uint16 SilcCommandStatus; + * typedef SilcUInt16 SilcCommandStatus; * * DESCRIPTION * @@ -167,7 +169,7 @@ typedef unsigned char SilcCommand; * * SOURCE */ -typedef uint16 SilcCommandStatus; +typedef SilcUInt16 SilcCommandStatus; /* Command Status messages */ #define SILC_STATUS_OK 0 @@ -220,7 +222,9 @@ typedef uint16 SilcCommandStatus; * * SYNOPSIS * - * SilcCommandPayload silc_command_payload_parse(SilcBuffer buffer); + * SilcCommandPayload + * silc_command_payload_parse(const unsigned char *payload, + * SilcUInt32 payload_len); * * DESCRIPTION * @@ -228,18 +232,19 @@ typedef uint16 SilcCommandStatus; * `buffer' is the raw payload. * ***/ -SilcCommandPayload silc_command_payload_parse(SilcBuffer buffer); +SilcCommandPayload silc_command_payload_parse(const unsigned char *payload, + SilcUInt32 payload_len); /****f* silccore/SilcCommandAPI/silc_command_payload_encode * * SYNOPSIS * * SilcBuffer silc_command_payload_encode(SilcCommand cmd, - * uint32 argc, + * SilcUInt32 argc, * unsigned char **argv, - * uint32 *argv_lens, - * uint32 *argv_types, - * uint16 ident); + * SilcUInt32 *argv_lens, + * SilcUInt32 *argv_types, + * SilcUInt16 ident); * * DESCRIPTION * @@ -247,11 +252,11 @@ SilcCommandPayload silc_command_payload_parse(SilcBuffer buffer); * ***/ SilcBuffer silc_command_payload_encode(SilcCommand cmd, - uint32 argc, + SilcUInt32 argc, unsigned char **argv, - uint32 *argv_lens, - uint32 *argv_types, - uint16 ident); + SilcUInt32 *argv_lens, + SilcUInt32 *argv_types, + SilcUInt16 ident); /****f* silccore/SilcCommandAPI/silc_command_payload_encode_payload * @@ -273,31 +278,31 @@ SilcBuffer silc_command_payload_encode_payload(SilcCommandPayload payload); * SYNOPSIS * * SilcBuffer silc_command_payload_encode_va(SilcCommand cmd, - * uint16 ident, - * uint32 argc, ...); + * SilcUInt16 ident, + * SilcUInt32 argc, ...); * * DESCRIPTION * * Encodes Command payload with variable argument list. The arguments - * must be: uint32, unsigned char *, unsigned int, ... One - * {uint32, unsigned char * and unsigned int} forms one argument, - * thus `argc' in case when sending one {uint32, unsigned char * - * and uint32} equals one (1) and when sending two of those it + * must be: SilcUInt32, unsigned char *, unsigned int, ... One + * {SilcUInt32, unsigned char * and unsigned int} forms one argument, + * thus `argc' in case when sending one {SilcUInt32, unsigned char * + * and SilcUInt32} equals one (1) and when sending two of those it * equals two (2), and so on. This has to be preserved or bad things * will happen. The variable arguments is: {type, data, data_len}. * ***/ SilcBuffer silc_command_payload_encode_va(SilcCommand cmd, - uint16 ident, - uint32 argc, ...); + SilcUInt16 ident, + SilcUInt32 argc, ...); /****f* silccore/SilcCommandAPI/silc_command_payload_encode_vap * * SYNOPSIS * * SilcBuffer silc_command_payload_encode_vap(SilcCommand cmd, - * uint16 ident, - * uint32 argc, va_list ap); + * SilcUInt16 ident, + * SilcUInt32 argc, va_list ap); * * DESCRIPTION * @@ -306,8 +311,8 @@ SilcBuffer silc_command_payload_encode_va(SilcCommand cmd, * ***/ SilcBuffer silc_command_payload_encode_vap(SilcCommand cmd, - uint16 ident, - uint32 argc, va_list ap); + SilcUInt16 ident, + SilcUInt32 argc, va_list ap); /****f* silccore/SilcCommandAPI/silc_command_reply_payload_encode_va * @@ -316,8 +321,8 @@ SilcBuffer silc_command_payload_encode_vap(SilcCommand cmd, * SilcBuffer * silc_command_reply_payload_encode_va(SilcCommand cmd, * SilcCommandStatus status, - * uint16 ident, - * uint32 argc, ...); + * SilcUInt16 ident, + * SilcUInt32 argc, ...); * * DESCRIPTION * @@ -330,8 +335,30 @@ SilcBuffer silc_command_payload_encode_vap(SilcCommand cmd, SilcBuffer silc_command_reply_payload_encode_va(SilcCommand cmd, SilcCommandStatus status, - uint16 ident, - uint32 argc, ...); + SilcUInt16 ident, + SilcUInt32 argc, ...); + +/****f* silccore/SilcCommandAPI/silc_command_reply_payload_encode_vap + * + * SYNOPSIS + * + * SilcBuffer + * silc_command_reply_payload_encode_vap(SilcCommand cmd, + * SilcCommandStatus status, + * SilcUInt16 ident, SilcUInt32 argc, + * va_list ap); + * + * DESCRIPTION + * + * This is equivalent to the silc_command_reply_payload_encode_va except + * takes the va_list as argument. + * + ***/ +SilcBuffer +silc_command_reply_payload_encode_vap(SilcCommand cmd, + SilcCommandStatus status, + SilcUInt16 ident, SilcUInt32 argc, + va_list ap); /****f* silccore/SilcCommandAPI/silc_command_free * @@ -377,7 +404,7 @@ SilcArgumentPayload silc_command_get_args(SilcCommandPayload payload); * * SYNOPSIS * - * uint16 silc_command_get_ident(SilcCommandPayload payload); + * SilcUInt16 silc_command_get_ident(SilcCommandPayload payload); * * DESCRIPTION * @@ -387,13 +414,13 @@ SilcArgumentPayload silc_command_get_args(SilcCommandPayload payload); * the same identifier in the command reply. * ***/ -uint16 silc_command_get_ident(SilcCommandPayload payload); +SilcUInt16 silc_command_get_ident(SilcCommandPayload payload); /****f* silccore/SilcCommandAPI/silc_command_set_ident * * SYNOPSIS * - * void silc_command_set_ident(SilcCommandPayload payload, uint16 ident); + * void silc_command_set_ident(SilcCommandPayload payload, SilcUInt16 ident); * * DESCRIPTION * @@ -402,7 +429,7 @@ uint16 silc_command_get_ident(SilcCommandPayload payload); * to set the identifier without encoding new Command Payload. * ***/ -void silc_command_set_ident(SilcCommandPayload payload, uint16 ident); +void silc_command_set_ident(SilcCommandPayload payload, SilcUInt16 ident); /****f* silccore/SilcCommandAPI/silc_command_set_command *