ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/include/channel_mode.h
Revision: 8430
Committed: Tue Mar 27 18:48:40 2018 UTC (8 years, 3 months ago) by michael
Content type: text/x-chdr
File size: 4815 byte(s)
Log Message:
- Stylistic changes

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 8280 * Copyright (c) 1997-2018 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 4564 * 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 michael 6902
31     #define CMEMBER_STATUS_FLAGS "@%+"
32     enum { CMEMBER_STATUS_FLAGS_LEN = sizeof(CMEMBER_STATUS_FLAGS) - 1 };
33    
34 michael 6471 enum { MODEBUFLEN = 200 };
35 adx 30
36     /* Maximum mode changes allowed per client, per server is different */
37 michael 6471 enum { MAXMODEPARAMS = 6 };
38 adx 30
39 michael 2896 enum
40     {
41 michael 8039 MODE_QUERY = 0,
42     MODE_DEL = 1,
43     MODE_ADD = 2
44 michael 2896 };
45    
46     enum
47     {
48     CHACCESS_NOTONCHAN = -1,
49     CHACCESS_PEON = 0,
50     CHACCESS_HALFOP = 1,
51 michael 4101 CHACCESS_CHANOP = 2,
52     CHACCESS_REMOTE = 3
53 michael 2896 };
54    
55 adx 30 /* can_send results */
56 michael 2896 enum
57     {
58     CAN_SEND_NO = 0,
59     CAN_SEND_NONOP = -1,
60     CAN_SEND_OPV = -2
61     };
62 adx 30
63     /* Channel related flags */
64 michael 6316 enum
65     {
66 michael 8430 CHFL_CHANOP = 1 << 0, /* Channel operator */
67     CHFL_HALFOP = 1 << 1, /* Channel half op */
68     CHFL_VOICE = 1 << 2, /* the power to speak */
69     CHFL_BAN = 1 << 3, /* ban channel flag */
70     CHFL_EXCEPTION = 1 << 4, /* exception to ban channel flag */
71     CHFL_INVEX = 1 << 5,
72 michael 6316 /* Cache flags for silence on ban */
73 michael 8430 CHFL_BAN_CHECKED = 1 << 6,
74     CHFL_BAN_SILENCED = 1 << 7
75 michael 6316 };
76 adx 30
77     /* channel modes ONLY */
78 michael 6316 enum
79     {
80 michael 8430 MODE_PRIVATE = 1 << 0, /**< */
81     MODE_SECRET = 1 << 1, /**< Channel does not show up on NAMES or LIST */
82     MODE_MODERATED = 1 << 2, /**< Users without +v/+h/+o cannot send text to the channel */
83     MODE_TOPICLIMIT = 1 << 3, /**< Only chanops can change the topic */
84     MODE_INVITEONLY = 1 << 4, /**< Only invited users may join this channel */
85     MODE_NOPRIVMSGS = 1 << 5, /**< Users must be in the channel to send text to it */
86     MODE_SSLONLY = 1 << 6, /**< Prevents anyone who isn't connected via SSL/TLS from joining the channel */
87     MODE_OPERONLY = 1 << 7, /**< Prevents anyone who hasn't obtained IRC operator status from joining the channel */
88     MODE_REGISTERED = 1 << 8, /**< Channel has been registered with ChanServ */
89     MODE_REGONLY = 1 << 9, /**< Only registered clients may join a channel with that mode set */
90     MODE_NOCTRL = 1 << 10, /**< Prevents users from sending messages containing control codes to the channel */
91     MODE_MODREG = 1 << 11, /**< Unregistered/unidentified clients cannot send text to the channel */
92     MODE_NOCTCP = 1 << 12, /**< Clients cannot send CTCP messages to the channel */
93     MODE_NONOTICE = 1 << 13, /**< Clients cannot send NOTICE to the channel */
94     MODE_HIDEBMASKS = 1 << 14, /**< Hides +b/+e/+I lists/changes for non-chanops everywhere */
95     MODE_EXTLIMIT = 1 << 15 /**< Channel can make use of the extended ban list limit */
96 michael 6316 };
97 adx 30
98 michael 8043 #define HasCMode(x, y) ((x)->mode.mode & (y))
99     #define AddCMode(x, y) ((x)->mode.mode |= (y))
100     #define DelCMode(x, y) ((x)->mode.mode &= ~(y))
101    
102 adx 30 /* name invisible */
103     #define SecretChannel(x) (((x)->mode.mode & MODE_SECRET))
104 michael 2902 #define PubChannel(x) (((x)->mode.mode & (MODE_PRIVATE | MODE_SECRET)) == 0)
105 michael 3708 /* knock is forbidden, halfops can't kick/deop other halfops. */
106 adx 30 #define PrivateChannel(x) (((x)->mode.mode & MODE_PRIVATE))
107    
108     struct ChModeChange
109     {
110     char letter;
111     const char *arg;
112     const char *id;
113 michael 8041 unsigned int dir;
114 michael 8039 unsigned int flags;
115 adx 30 };
116    
117 michael 8090 struct chan_mode
118 michael 1175 {
119 michael 8088 const unsigned char letter;
120 michael 1175 const unsigned int mode;
121 michael 8090 const unsigned int only_opers;
122     const unsigned int only_servers;
123 michael 8088 void (*func)(struct Client *,
124 michael 8094 struct Channel *, int, int *, char **, int *,
125     int, int, const char, const struct chan_mode *);
126 michael 1175 };
127    
128 michael 8090 extern const struct chan_mode *cmode_map[];
129     extern const struct chan_mode cmode_tab[];
130 michael 2937
131 michael 8088 extern void channel_mode_init(void);
132 michael 3044 extern int add_id(struct Client *, struct Channel *, char *, unsigned int);
133 michael 8430 extern void channel_mode_set(struct Client *, struct Channel *,
134 michael 2937 struct Membership *, int, char **);
135 michael 7763 extern void clear_ban_cache_list(dlink_list *);
136 adx 30 #endif /* INCLUDED_channel_mode_h */

Properties

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