ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/include/channel_mode.h
Revision: 4565
Committed: Sun Aug 24 10:27:40 2014 UTC (11 years ago) by michael
Content type: text/x-chdr
File size: 4202 byte(s)
Log Message:
- Update GPL 2 license headers

File Contents

# User Rev Content
1 adx 30 /*
2 michael 2865 * ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3 adx 30 *
4 michael 2865 * Copyright (c) 1997-2014 ircd-hybrid development team
5 adx 30 *
6     * This program is free software; you can redistribute it and/or modify
7     * it under the terms of the GNU General Public License as published by
8     * the Free Software Foundation; either version 2 of the License, or
9     * (at your option) any later version.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18 michael 4565 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19 adx 30 * USA
20     */
21    
22 michael 2865 /*! \file channel_mode.h
23     * \brief Includes channel mode related definitions and structures.
24     * \version $Id$
25     */
26 adx 30
27     #ifndef INCLUDED_channel_mode_h
28     #define INCLUDED_channel_mode_h
29    
30     #define MODEBUFLEN 200
31    
32     /* Maximum mode changes allowed per client, per server is different */
33     #define MAXMODEPARAMS 4
34    
35 michael 2896 enum
36     {
37     MODE_QUERY = 0,
38     MODE_ADD = 1,
39     MODE_DEL = -1
40     };
41    
42     enum
43     {
44     CHACCESS_NOTONCHAN = -1,
45     CHACCESS_PEON = 0,
46     CHACCESS_HALFOP = 1,
47 michael 4102 CHACCESS_CHANOP = 2,
48     CHACCESS_REMOTE = 3
49 michael 2896 };
50    
51 adx 30 /* can_send results */
52 michael 2896 enum
53     {
54     CAN_SEND_NO = 0,
55     CAN_SEND_NONOP = -1,
56     CAN_SEND_OPV = -2
57     };
58 adx 30
59    
60     /* Channel related flags */
61 michael 3925 #define CHFL_CHANOP 0x0001U /* Channel operator */
62     #define CHFL_HALFOP 0x0002U /* Channel half op */
63     #define CHFL_VOICE 0x0004U /* the power to speak */
64     #define CHFL_BAN 0x0008U /* ban channel flag */
65     #define CHFL_EXCEPTION 0x0010U /* exception to ban channel flag */
66     #define CHFL_INVEX 0x0020U
67 adx 30
68     /* channel modes ONLY */
69 michael 3925 #define MODE_PRIVATE 0x0001U /**< */
70     #define MODE_SECRET 0x0002U /**< Channel does not show up on NAMES or LIST */
71     #define MODE_MODERATED 0x0004U /**< Users without +v/h/o cannot send text to the channel */
72     #define MODE_TOPICLIMIT 0x0008U /**< Only chanops can change the topic */
73     #define MODE_INVITEONLY 0x0010U /**< Only invited usersmay join this channel */
74     #define MODE_NOPRIVMSGS 0x0020U /**< Users must be in the channel to send text to it */
75     #define MODE_SSLONLY 0x0040U /**< Prevents anyone who isn't connected via SSL/TLS from joining the channel */
76     #define MODE_OPERONLY 0x0080U /**< Prevents anyone who hasn't obtained IRC operator status from joining the channel */
77     #define MODE_REGISTERED 0x0100U /**< Channel has been registered with ChanServ */
78     #define MODE_REGONLY 0x0200U /**< Only registered clients may join a channel with that mode set */
79     #define MODE_NOCTRL 0x0400U /**< Prevents users from sending messages containing control codes to the channel */
80     #define MODE_MODREG 0x0800U /**< Unregistered/unidentified clients cannot send text to the channel */
81 adx 30
82     /* cache flags for silence on ban */
83 michael 3925 #define CHFL_BAN_CHECKED 0x0080U
84     #define CHFL_BAN_SILENCED 0x0100U
85 adx 30
86     /* name invisible */
87     #define SecretChannel(x) (((x)->mode.mode & MODE_SECRET))
88 michael 2902 #define PubChannel(x) (((x)->mode.mode & (MODE_PRIVATE | MODE_SECRET)) == 0)
89 michael 3707 /* knock is forbidden, halfops can't kick/deop other halfops. */
90 adx 30 #define PrivateChannel(x) (((x)->mode.mode & MODE_PRIVATE))
91    
92 michael 3753 struct ChannelMode
93     {
94     void (*func)(struct Client *,
95     struct Channel *, int, int *, char **,
96     int *, int, int, char, unsigned int);
97     unsigned int d;
98     };
99    
100 adx 30 struct ChModeChange
101     {
102     char letter;
103     const char *arg;
104     const char *id;
105     int dir;
106     int mems;
107     };
108    
109 michael 1175 struct mode_letter
110     {
111     const unsigned int mode;
112     const unsigned char letter;
113     };
114    
115     extern const struct mode_letter chan_modes[];
116 michael 3754 extern const struct ChannelMode ModeTable[];
117 michael 2937
118 michael 3044 extern int add_id(struct Client *, struct Channel *, char *, unsigned int);
119 michael 3150 extern void set_channel_mode(struct Client *, struct Channel *,
120 michael 2937 struct Membership *, int, char **);
121 adx 30 extern void clear_ban_cache(struct Channel *);
122 michael 759 extern void clear_ban_cache_client(struct Client *);
123 adx 30 #endif /* INCLUDED_channel_mode_h */

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision