| 1 /** |
|
| 2 * @file simple.h |
|
| 3 * |
|
| 4 * gaim |
|
| 5 * |
|
| 6 * Copyright (C) 2005, Thomas Butter <butter@uni-mannheim.de> |
|
| 7 * |
|
| 8 * This program is free software; you can redistribute it and/or modify |
|
| 9 * it under the terms of the GNU General Public License as published by |
|
| 10 * the Free Software Foundation; either version 2 of the License, or |
|
| 11 * (at your option) any later version. |
|
| 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 * You should have received a copy of the GNU General Public License |
|
| 19 * along with this program; if not, write to the Free Software |
|
| 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
| 21 */ |
|
| 22 |
|
| 23 #ifndef _GAIM_SIMPLE_H |
|
| 24 #define _GAIM_SIMPLE_H |
|
| 25 |
|
| 26 #include <glib.h> |
|
| 27 #include <time.h> |
|
| 28 |
|
| 29 #include <cipher.h> |
|
| 30 #include <prpl.h> |
|
| 31 |
|
| 32 #include "sipmsg.h" |
|
| 33 |
|
| 34 #define SIMPLE_BUF_INC 1024 |
|
| 35 |
|
| 36 struct sip_dialog { |
|
| 37 gchar *ourtag; |
|
| 38 gchar *theirtag; |
|
| 39 gchar *callid; |
|
| 40 }; |
|
| 41 |
|
| 42 struct simple_watcher { |
|
| 43 gchar *name; |
|
| 44 time_t expire; |
|
| 45 struct sip_dialog dialog; |
|
| 46 }; |
|
| 47 |
|
| 48 struct simple_buddy { |
|
| 49 gchar *name; |
|
| 50 time_t resubscribe; |
|
| 51 }; |
|
| 52 |
|
| 53 struct sip_auth { |
|
| 54 int type; /* 1 = Digest / 2 = NTLM */ |
|
| 55 gchar *nonce; |
|
| 56 gchar *realm; |
|
| 57 gchar *target; |
|
| 58 int nc; |
|
| 59 gchar *digest_session_key; |
|
| 60 int retries; |
|
| 61 }; |
|
| 62 |
|
| 63 struct simple_account_data { |
|
| 64 GaimConnection *gc; |
|
| 65 gchar *servername; |
|
| 66 gchar *username; |
|
| 67 gchar *password; |
|
| 68 int fd; |
|
| 69 int cseq; |
|
| 70 time_t reregister; |
|
| 71 time_t republish; |
|
| 72 int registerstatus; /* 0 nothing, 1 first registration send, 2 auth received, 3 registered */ |
|
| 73 struct sip_auth registrar; |
|
| 74 struct sip_auth proxy; |
|
| 75 int listenfd; |
|
| 76 int listenport; |
|
| 77 int listenpa; |
|
| 78 gchar *status; |
|
| 79 GHashTable *buddies; |
|
| 80 guint registertimeout; |
|
| 81 guint resendtimeout; |
|
| 82 gboolean connecting; |
|
| 83 GaimAccount *account; |
|
| 84 gchar *sendlater; |
|
| 85 gchar *regcallid; |
|
| 86 GSList *transactions; |
|
| 87 GSList *watcher; |
|
| 88 GSList *openconns; |
|
| 89 gboolean udp; |
|
| 90 struct sockaddr_in serveraddr; |
|
| 91 int registerexpire; |
|
| 92 gchar *realhostname; |
|
| 93 int realport; /* port and hostname from SRV record */ |
|
| 94 }; |
|
| 95 |
|
| 96 struct sip_connection { |
|
| 97 int fd; |
|
| 98 gchar *inbuf; |
|
| 99 int inbuflen; |
|
| 100 int inbufused; |
|
| 101 int inputhandler; |
|
| 102 }; |
|
| 103 |
|
| 104 struct transaction; |
|
| 105 |
|
| 106 typedef gboolean (*TransCallback) (struct simple_account_data *, struct sipmsg *, struct transaction *); |
|
| 107 |
|
| 108 struct transaction { |
|
| 109 time_t time; |
|
| 110 int retries; |
|
| 111 int transport; /* 0 = tcp, 1 = udp */ |
|
| 112 int fd; |
|
| 113 gchar *cseq; |
|
| 114 struct sipmsg *msg; |
|
| 115 TransCallback callback; |
|
| 116 }; |
|
| 117 |
|
| 118 #endif /* _GAIM_SIMPLE_H */ |
|