Added SILC Thread Queue API
[crypto.git] / apps / silcd / packet_send.h
1 /*
2
3   packet_send.h
4
5   Author: Pekka Riikonen <priikone@silcnet.org>
6
7   Copyright (C) 1997 - 2004, 2007 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; version 2 of the License.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18 */
19
20 #ifndef PACKET_SEND_H
21 #define PACKET_SEND_H
22
23 /* Prototypes */
24
25 SilcBool silc_server_packet_send(SilcServer server,
26                                  SilcPacketStream sock,
27                                  SilcPacketType type,
28                                  SilcPacketFlags flags,
29                                  unsigned char *data,
30                                  SilcUInt32 data_len);
31 SilcBool silc_server_packet_send_dest(SilcServer server,
32                                       SilcPacketStream sock,
33                                       SilcPacketType type,
34                                       SilcPacketFlags flags,
35                                       void *dst_id,
36                                       SilcIdType dst_id_type,
37                                       unsigned char *data,
38                                       SilcUInt32 data_len);
39 SilcBool silc_server_packet_send_srcdest(SilcServer server,
40                                          SilcPacketStream sock,
41                                          SilcPacketType type,
42                                          SilcPacketFlags flags,
43                                          void *src_id,
44                                          SilcIdType src_id_type,
45                                          void *dst_id,
46                                          SilcIdType dst_id_type,
47                                          unsigned char *data,
48                                          SilcUInt32 data_len);
49 SilcBool silc_server_packet_broadcast(SilcServer server,
50                                       SilcPacketStream sock,
51                                       SilcPacket packet);
52 SilcBool silc_server_packet_route(SilcServer server,
53                                   SilcPacketStream sock,
54                                   SilcPacket packet);
55 void silc_server_packet_send_clients(SilcServer server,
56                                      SilcHashTable clients,
57                                      SilcPacketType type,
58                                      SilcPacketFlags flags,
59                                      SilcBool route,
60                                      unsigned char *data,
61                                      SilcUInt32 data_len);
62 void silc_server_packet_send_to_channel(SilcServer server,
63                                         SilcPacketStream sender,
64                                         SilcChannelEntry channel,
65                                         SilcPacketType type,
66                                         SilcBool route,
67                                         SilcBool send_to_clients,
68                                         unsigned char *data,
69                                         SilcUInt32 data_len);
70 void silc_server_packet_relay_to_channel(SilcServer server,
71                                          SilcPacketStream sender_sock,
72                                          SilcChannelEntry channel,
73                                          void *sender_id,
74                                          SilcIdType sender_type,
75                                          SilcClientEntry sender_entry,
76                                          unsigned char *data,
77                                          SilcUInt32 data_len);
78 void silc_server_packet_send_local_channel(SilcServer server,
79                                            SilcChannelEntry channel,
80                                            SilcPacketType type,
81                                            SilcPacketFlags flags,
82                                            unsigned char *data,
83                                            SilcUInt32 data_len);
84 void silc_server_send_motd(SilcServer server,
85                            SilcPacketStream sock);
86 void silc_server_send_error(SilcServer server,
87                             SilcPacketStream sock,
88                             const char *fmt, ...);
89 void silc_server_send_notify(SilcServer server,
90                              SilcPacketStream sock,
91                              SilcBool broadcast,
92                              SilcNotifyType type,
93                              SilcUInt32 argc, ...);
94 void silc_server_send_notify_args(SilcServer server,
95                                   SilcPacketStream sock,
96                                   SilcBool broadcast,
97                                   SilcNotifyType type,
98                                   SilcUInt32 argc,
99                                   SilcBuffer args);
100 void silc_server_send_notify_channel_change(SilcServer server,
101                                             SilcPacketStream sock,
102                                             SilcBool broadcast,
103                                             SilcChannelID *old_id,
104                                             SilcChannelID *new_id);
105 void silc_server_send_notify_nick_change(SilcServer server,
106                                          SilcPacketStream sock,
107                                          SilcBool broadcast,
108                                          SilcClientID *old_id,
109                                          SilcClientID *new_id,
110                                          const char *nickname);
111 void silc_server_send_notify_join(SilcServer server,
112                                   SilcPacketStream sock,
113                                   SilcBool broadcast,
114                                   SilcChannelEntry channel,
115                                   SilcClientID *client_id);
116 void silc_server_send_notify_leave(SilcServer server,
117                                    SilcPacketStream sock,
118                                    SilcBool broadcast,
119                                    SilcChannelEntry channel,
120                                    SilcClientID *client_id);
121 void silc_server_send_notify_cmode(SilcServer server,
122                                    SilcPacketStream sock,
123                                    SilcBool broadcast,
124                                    SilcChannelEntry channel,
125                                    SilcUInt32 mode_mask,
126                                    void *id, SilcIdType id_type,
127                                    const char *cipher, const char *hmac,
128                                    const char *passphrase,
129                                    SilcPublicKey founder_key,
130                                    SilcBuffer channel_pubkeys);
131 void silc_server_send_notify_cumode(SilcServer server,
132                                     SilcPacketStream sock,
133                                     SilcBool broadcast,
134                                     SilcChannelEntry channel,
135                                     SilcUInt32 mode_mask,
136                                     void *id, SilcIdType id_type,
137                                     SilcClientID *target,
138                                     SilcPublicKey founder_key);
139 void silc_server_send_notify_signoff(SilcServer server,
140                                      SilcPacketStream sock,
141                                      SilcBool broadcast,
142                                      SilcClientID *client_id,
143                                      const char *message);
144 void silc_server_send_notify_topic_set(SilcServer server,
145                                        SilcPacketStream sock,
146                                        SilcBool broadcast,
147                                        SilcChannelEntry channel,
148                                        void *id, SilcIdType id_type,
149                                        char *topic);
150 void silc_server_send_notify_kicked(SilcServer server,
151                                     SilcPacketStream sock,
152                                     SilcBool broadcast,
153                                     SilcChannelEntry channel,
154                                     SilcClientID *client_id,
155                                     SilcClientID *kicker,
156                                     char *comment);
157 void silc_server_send_notify_killed(SilcServer server,
158                                     SilcPacketStream sock,
159                                     SilcBool broadcast,
160                                     SilcClientID *client_id,
161                                     const char *comment,
162                                     void *killer, SilcIdType killer_type);
163 void silc_server_send_notify_umode(SilcServer server,
164                                    SilcPacketStream sock,
165                                    SilcBool broadcast,
166                                    SilcClientID *client_id,
167                                    SilcUInt32 mode_mask);
168 void silc_server_send_notify_ban(SilcServer server,
169                                  SilcPacketStream sock,
170                                  SilcBool broadcast,
171                                  SilcChannelEntry channel,
172                                  unsigned char *action,
173                                  SilcBuffer list);
174 void silc_server_send_notify_invite(SilcServer server,
175                                     SilcPacketStream sock,
176                                     SilcBool broadcast,
177                                     SilcChannelEntry channel,
178                                     SilcClientID *client_id,
179                                     unsigned char *action,
180                                     SilcBuffer list);
181 void silc_server_send_notify_watch(SilcServer server,
182                                    SilcPacketStream sock,
183                                    SilcClientEntry watcher,
184                                    SilcClientEntry client,
185                                    const char *nickname,
186                                    SilcNotifyType type,
187                                    SilcPublicKey public_key);
188 void silc_server_send_notify_dest(SilcServer server,
189                                   SilcPacketStream sock,
190                                   SilcBool broadcast,
191                                   void *dest_id,
192                                   SilcIdType dest_id_type,
193                                   SilcNotifyType type,
194                                   SilcUInt32 argc, ...);
195 void silc_server_send_notify_to_channel(SilcServer server,
196                                         SilcPacketStream sender,
197                                         SilcChannelEntry channel,
198                                         SilcBool route_notify,
199                                         SilcBool send_to_clients,
200                                         SilcNotifyType type,
201                                         SilcUInt32 argc, ...);
202 void silc_server_send_notify_on_channels(SilcServer server,
203                                          SilcClientEntry sender,
204                                          SilcClientEntry client,
205                                          SilcNotifyType type,
206                                          SilcUInt32 argc, ...);
207 void silc_server_send_new_id(SilcServer server,
208                              SilcPacketStream sock,
209                              SilcBool broadcast,
210                              void *id, SilcIdType id_type,
211                              SilcUInt32 id_len);
212 void silc_server_send_new_channel(SilcServer server,
213                                   SilcPacketStream sock,
214                                   SilcBool broadcast,
215                                   char *channel_name,
216                                   void *channel_id,
217                                   SilcUInt32 channel_id_len,
218                                   SilcUInt32 mode);
219 void silc_server_send_channel_key(SilcServer server,
220                                   SilcPacketStream sender,
221                                   SilcChannelEntry channel,
222                                   unsigned char route);
223 void silc_server_send_command(SilcServer server,
224                               SilcPacketStream sock,
225                               SilcCommand command,
226                               SilcUInt16 ident,
227                               SilcUInt32 argc, ...);
228 void silc_server_send_command_reply(SilcServer server,
229                                     SilcPacketStream sock,
230                                     SilcCommand command,
231                                     SilcStatus status,
232                                     SilcStatus error,
233                                     SilcUInt16 ident,
234                                     SilcUInt32 argc, ...);
235 void silc_server_send_dest_command_reply(SilcServer server,
236                                          SilcPacketStream sock,
237                                          void *dst_id,
238                                          SilcIdType dst_id_type,
239                                          SilcCommand command,
240                                          SilcStatus status,
241                                          SilcStatus error,
242                                          SilcUInt16 ident,
243                                          SilcUInt32 argc, ...);
244 void silc_server_relay_packet(SilcServer server,
245                               SilcPacketStream dst_sock,
246                               SilcCipher cipher,
247                               SilcHmac hmac,
248                               SilcUInt32 sequence,
249                               SilcPacket *packet);
250 void silc_server_send_connection_auth_request(SilcServer server,
251                                               SilcPacketStream sock,
252                                               SilcUInt16 conn_type,
253                                               SilcAuthMethod auth_meth);
254 void silc_server_send_opers(SilcServer server,
255                             SilcPacketType type,
256                             SilcPacketFlags flags,
257                             SilcBool route, bool local,
258                             unsigned char *data,
259                             SilcUInt32 data_len);
260 void silc_server_send_opers_notify(SilcServer server,
261                                    SilcBool route,
262                                    SilcBool local,
263                                    SilcNotifyType type,
264                                    SilcUInt32 argc, ...);
265
266 #endif /* PACKET_SEND_H */