creates.
[silc.git] / lib / silccore / silcmode.h
1 /*
2
3   silcmode.h
4
5   Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
6
7   Copyright (C) 2001 Pekka Riikonen
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; either version 2 of the License, or
12   (at your option) any later version.
13   
14   This program is distributed in the hope that it will be useful,
15   but WITHOUT ANY WARRANTY; without even the implied warranty of
16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   GNU General Public License for more details.
18
19 */
20
21 #ifndef SILCMODE_H
22 #define SILCMODE_H
23
24 /* Forward declarations */
25 typedef struct SilcSetModePayloadStruct *SilcSetModePayload;
26
27 /* Mode types defined for Set Mode payload */
28 #define SILC_MODE_TYPE_CHANNEL        0
29 #define SILC_MODE_TYPE_UCHANNEL       1
30 #define SILC_MODE_RESERVED            2      /* RESERVED */
31 #define SILC_MODE_PRIVATE             32768  /* RESERVED */
32
33 /* Channel modes */
34 #define SILC_CHANNEL_MODE_NONE        0x0000
35 #define SILC_CHANNEL_MODE_PRIVATE     0x0001 /* private channel */
36 #define SILC_CHANNEL_MODE_SECRET      0x0002 /* secret channel */
37 #define SILC_CHANNEL_MODE_PRIVKEY     0x0004 /* channel has private key */
38 #define SILC_CHANNEL_MODE_INVITE      0x0008 /* invite only channel */
39 #define SILC_CHANNEL_MODE_TOPIC       0x0010 /* topic setting by operator */
40 #define SILC_CHANNEL_MODE_ULIMIT      0x0020 /* user limit set */
41 #define SILC_CHANNEL_MODE_PASSPHRASE  0x0040 /* passphrase set */
42 #define SILC_CHANNEL_MODE_BAN         0x0080 /* ban list set */
43 #define SILC_CHANNEL_MODE_INVITE_LIST 0x0100 /* invite list set */
44 #define SILC_CHANNEL_MODE_CIPHER      0x0200 /* sets cipher of channel */
45
46 /* User modes on channel */
47 #define SILC_CHANNEL_UMODE_NONE       0x0000 /* Normal user */
48 #define SILC_CHANNEL_UMODE_CHANFO     0x0001 /* channel founder */
49 #define SILC_CHANNEL_UMODE_CHANOP     0x0002 /* channel operator */
50
51 /* Prototypes */
52 SilcSetModePayload silc_set_mode_payload_parse(SilcBuffer buffer);
53 SilcBuffer silc_set_mode_payload_encode(unsigned short mode_type, 
54                                         unsigned int mode_mask,
55                                         unsigned int argc, 
56                                         va_list ap);
57 void silc_set_mode_payload_free(SilcSetModePayload payload);
58 unsigned short silc_set_mode_get_type(SilcSetModePayload payload);
59 unsigned int silc_set_mode_get_mode(SilcSetModePayload payload);
60 unsigned int silc_set_mode_get_arg_num(SilcSetModePayload payload);
61 SilcArgumentPayload silc_set_mode_get_args(SilcSetModePayload payload);
62
63 #endif