-
-/* Return mode list */
-
-bool silc_get_mode_list(SilcBuffer mode_list, SilcUInt32 mode_list_count,
- SilcUInt32 **list)
-{
- int i;
-
- if (mode_list->len / 4 != mode_list_count)
- return FALSE;
-
- *list = silc_calloc(mode_list_count, sizeof(**list));
-
- for (i = 0; i < mode_list_count; i++) {
- SILC_GET32_MSB((*list)[i], mode_list->data);
- silc_buffer_pull(mode_list, 4);
- }
-
- silc_buffer_push(mode_list, mode_list->data - mode_list->head);
-
- return TRUE;
-}
-
-/* Status message structure. Messages are defined below. */
-typedef struct {
- SilcStatus status;
- const char *message;
-} SilcStatusMessage;
-
-#define STAT(x) SILC_STATUS_ERR_##x
-static const SilcStatusMessage silc_status_messages[] = {
-
- { STAT(NO_SUCH_NICK), "There was no such nickname" },
- { STAT(NO_SUCH_CHANNEL), "There was no such channel" },
- { STAT(NO_SUCH_SERVER), "There was no such server" },
- { STAT(INCOMPLETE_INFORMATION), "Incomplete registration information" },
- { STAT(NO_RECIPIENT), "No recipient given" },
- { STAT(UNKNOWN_COMMAND), "Unknown command" },
- { STAT(WILDCARDS), "Wilcrads not allowed" },
- { STAT(NO_CLIENT_ID), "No Client ID given" },
- { STAT(NO_CHANNEL_ID), "No Channel ID given" },
- { STAT(NO_SERVER_ID), "No Server ID given" },
- { STAT(BAD_CLIENT_ID), "Bad Client ID" },
- { STAT(BAD_CHANNEL_ID), "Bad Channel ID" },
- { STAT(NO_SUCH_CLIENT_ID), "There is no such client" },
- { STAT(NO_SUCH_CHANNEL_ID),"There is no such channel" },
- { STAT(NICKNAME_IN_USE), "Nickname already exists" },
- { STAT(NOT_ON_CHANNEL), "You are not on that channel" },
- { STAT(USER_NOT_ON_CHANNEL),"They are not on the channel" },
- { STAT(USER_ON_CHANNEL), "User already on the channel" },
- { STAT(NOT_REGISTERED), "You have not registered" },
- { STAT(NOT_ENOUGH_PARAMS), "Not enough parameters" },
- { STAT(TOO_MANY_PARAMS), "Too many parameters" },
- { STAT(PERM_DENIED), "Permission denied" },
- { STAT(BANNED_FROM_SERVER),"You are not allowed to connect" },
- { STAT(BAD_PASSWORD), "Cannot join channel. Incorrect password" },
- { STAT(CHANNEL_IS_FULL), "Cannot join channel. Channel is full" },
- { STAT(NOT_INVITED), "Cannot join channel. You have not been invited" },
- { STAT(BANNED_FROM_CHANNEL), "Cannot join channel. You have been banned" },
- { STAT(UNKNOWN_MODE), "Unknown mode" },
- { STAT(NOT_YOU), "Cannot change mode for other users" },
- { STAT(NO_CHANNEL_PRIV), "Permission denied. You are not channel operator" },
- { STAT(NO_CHANNEL_FOPRIV),"Permission denied. You are not channel founder" },
- { STAT(NO_SERVER_PRIV), "Permission denied. You are not server operator" },
- { STAT(NO_ROUTER_PRIV), "Permission denied. You are not SILC operator" },
- { STAT(BAD_NICKNAME), "Bad nickname" },
- { STAT(BAD_CHANNEL), "Bad channel name" },
- { STAT(AUTH_FAILED), "Authentication failed" },
- { STAT(UNKNOWN_ALGORITHM), "Unsupported algorithm" },
- { STAT(NO_SUCH_SERVER_ID), "No such Server ID" },
- { STAT(RESOURCE_LIMIT), "No more free resources" },
- { STAT(NO_SUCH_SERVICE), "Service doesn't exist" },
- { STAT(NOT_AUTHENTICATED), "You have not been authenticated" },
- { STAT(BAD_SERVER_ID), "Server ID is not valid" },
- { STAT(KEY_EXCHANGE_FAILED), "Key exchange failed" },
- { STAT(BAD_VERSION), "Bad version" },
- { STAT(TIMEDOUT), "Service timed out" },
-
- { 0, NULL }
-};
-
-/* Returns status message string */
-
-const char *silc_get_status_message(unsigned char status)
-{
- int i;
-
- for (i = 0; silc_status_messages[i].message; i++) {
- if (silc_status_messages[i].status == status)
- break;
- }
-
- if (silc_status_messages[i].message == NULL)
- return "";
-
- return silc_status_messages[i].message;
-}
-
-static const char *packet_name[] = {
- "NONE",
- "DISCONNECT",
- "SUCCESS",
- "FAILURE",
- "REJECT",
- "NOTIFY",
- "ERROR",
- "CHANNEL MESSAGE",
- "CHANNEL KEY",
- "PRIVATE MESSAGE",
- "PRIVATE MESSAGE KEY",
- "COMMAND",
- "COMMAND REPLY",
- "KEY EXCHANGE",
- "KEY EXCHANGE 1",
- "KEY EXCHANGE 2",
- "CONNECTION AUTH REQUEST",
- "CONNECTION AUTH",
- "NEW ID",
- "NEW CLIENT",
- "NEW SERVER",
- "NEW CHANNEL",
- "REKEY",
- "REKEY_DONE",
- "HEARTBEAT",
- "KEY AGREEMENT",
- "RESUME ROUTER",
- "FTP",
- "RESUME CLIENT",
-};
-
-/* Returns packet type name */
-
-const char *silc_get_packet_name(unsigned char type)
-{
- if (type >= SILC_PACKET_MAX)
- return "RESERVED";
- if (type >= SILC_PACKET_PRIVATE)
- return "PRIVATE RANGE";
- if (type > (sizeof(packet_name) / sizeof(*packet_name)))
- return "UNKNOWN";
- return packet_name[type];
-}
-
-static const char *command_name[] = {
- "NONE",
- "WHOIS",
- "WHOWAS",
- "IDENTIFY",
- "NICK",
- "LIST",
- "TOPIC",
- "INVITE",
- "QUIT",
- "KILL",
- "INFO",
- "STATS",
- "PING",
- "OPER",
- "JOIN",
- "MOTD",
- "UMODE",
- "CMODE",
- "CUMODE",
- "KICK",
- "BAN",
- "DETACH",
- "WATCH",
- "SILCOPER",
- "LEAVE",
- "USERS",
- "GETKEY",
- "SERVICE",
-};
-
-/* Returns command name */
-
-const char *silc_get_command_name(unsigned char command)
-{
- if (command >= SILC_COMMAND_RESERVED)
- return "RESERVED";
- if (command >= SILC_COMMAND_PRIVATE)
- return "PRIVATE RANGE";
- if (command > (sizeof(command_name) / sizeof(*command_name)))
- return "UNKNOWN";
- return command_name[command];
-}
-
-/* Return TRUE if `smaller' is smaller than `bigger'. */
-
-bool silc_compare_timeval(struct timeval *smaller,
- struct timeval *bigger)
-{
- if ((smaller->tv_sec < bigger->tv_sec) ||
- ((smaller->tv_sec == bigger->tv_sec) &&
- (smaller->tv_usec < bigger->tv_usec)))
- return TRUE;
-
- return FALSE;
-}