00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 #ifndef SMSC_P_H
00066 #define SMSC_P_H
00067
00068
00069 #include <stddef.h>
00070 #include <stdio.h>
00071 #include <signal.h>
00072 #include <time.h>
00073
00074 #include "smsc.h"
00075
00076
00077
00078
00079 enum {
00080 SMSC_TYPE_DELETED,
00081 SMSC_TYPE_CIMD,
00082 SMSC_TYPE_EMI_X25,
00083 SMSC_TYPE_SEMA_X28,
00084 SMSC_TYPE_OIS,
00085 };
00086
00087
00088
00089
00090 #define DIAL_PREFIX_MAX_LEN 1024
00091 struct SMSCenter {
00092
00093 int type;
00094 int transport;
00095
00096 char name[1024];
00097 int id;
00098
00099
00100 char *preferred_prefix;
00101 char *allowed_prefix;
00102 char *denied_prefix;
00103
00104
00105
00106 long alt_charset;
00107
00108
00109 Mutex *mutex;
00110
00111
00112 volatile sig_atomic_t killed;
00113
00114
00115 int socket;
00116
00117
00118 int keepalive;
00119
00120
00121 char *hostname;
00122 int port;
00123 int receive_port;
00124
00125
00126 char *phonenum;
00127 char *serialdevice;
00128
00129
00130 char *x31_phonenum;
00131 char *x31_serialdevice;
00132
00133
00134 char *pipe_command;
00135
00136
00137 char *cimd_hostname;
00138 int cimd_port;
00139 char *cimd_username;
00140 char *cimd_password;
00141 time_t cimd_last_spoke;
00142 int cimd_config_bits;
00143
00144
00145 int emi_fd;
00146 FILE *emi_fp;
00147 char *emi_phonenum;
00148 char *emi_serialdevice;
00149 char *emi_hostname;
00150 int emi_port;
00151 char *emi_username;
00152 char *emi_password;
00153 int emi_current_msg_number;
00154 time_t emi_last_spoke;
00155 int emi_backup_fd;
00156 int emi_backup_port;
00157 char *emi_backup_allow_ip;
00158 int emi_our_port;
00159 int emi_secondary_fd;
00160
00161
00162
00163 char * sema_smscnua;
00164 char * sema_homenua;
00165 char * sema_serialdevice;
00166 struct sema_msglist *sema_mt, *sema_mo;
00167 int sema_fd;
00168
00169
00170
00171 time_t ois_alive;
00172 time_t ois_alive2;
00173 void *ois_received_mo;
00174 int ois_ack_debt;
00175 int ois_flags;
00176 int ois_listening_socket;
00177 int ois_socket;
00178 char *ois_buffer;
00179 size_t ois_bufsize;
00180 size_t ois_buflen;
00181 Octstr *sender_prefix;
00182
00183
00184 char *buffer;
00185 size_t bufsize;
00186 size_t buflen;
00187 };
00188
00189
00190
00191
00192
00193 SMSCenter *smscenter_construct(void);
00194 void smscenter_destruct(SMSCenter *smsc);
00195 int smscenter_read_into_buffer(SMSCenter *);
00196 void smscenter_remove_from_buffer(SMSCenter *smsc, size_t n);
00197
00198
00199
00200 int smscenter_submit_msg(SMSCenter *smsc, Msg *msg);
00201
00202
00203
00204
00205
00206
00207
00208 int smscenter_receive_msg(SMSCenter *smsc, Msg **msg);
00209
00210
00211
00212
00213
00214
00215
00216 int smscenter_pending_smsmessage(SMSCenter *smsc);
00217
00218
00219
00220
00221
00222 SMSCenter *cimd_open(char *hostname, int port, char *username, char *password);
00223 int cimd_reopen(SMSCenter *smsc);
00224 int cimd_close(SMSCenter *smsc);
00225 int cimd_pending_smsmessage(SMSCenter *smsc);
00226 int cimd_submit_msg(SMSCenter *smsc, Msg *msg);
00227 int cimd_receive_msg(SMSCenter *smsc, Msg **msg);
00228
00229
00230
00231
00232 SMSCenter *emi_open(char *phonenum, char *serialdevice, char *username, char *password);
00233 int emi_reopen(SMSCenter *smsc);
00234 int emi_close(SMSCenter *smsc);
00235 SMSCenter *emi_open_ip(char *hostname, int port, char *username,
00236 char *password, int receive_port, char *allow_ip, int our_port);
00237 int emi_reopen_ip(SMSCenter *smsc);
00238 int emi_close_ip(SMSCenter *smsc);
00239 int emi_pending_smsmessage(SMSCenter *smsc);
00240 int emi_submit_msg(SMSCenter *smsc, Msg *msg);
00241 int emi_receive_msg(SMSCenter *smsc, Msg **msg);
00242
00243
00244
00245
00246 SMSCenter *sema_open(char *smscnua, char *homenua, char* serialdevice,
00247 int waitreport);
00248 int sema_reopen(SMSCenter *smsc);
00249 int sema_close(SMSCenter *smsc);
00250 int sema_pending_smsmessage(SMSCenter *smsc);
00251 int sema_submit_msg(SMSCenter *smsc, Msg *msg);
00252 int sema_receive_msg(SMSCenter *smsc, Msg **msg);
00253
00254
00255
00256
00257
00258 SMSCenter *ois_open(int receiveport, const char *hostname, int port,
00259 int debug_level);
00260 int ois_reopen(SMSCenter *smsc);
00261 int ois_close(SMSCenter *smsc);
00262 int ois_pending_smsmessage(SMSCenter *smsc);
00263 int ois_submit_msg(SMSCenter *smsc, const Msg *msg);
00264 int ois_receive_msg(SMSCenter *smsc, Msg **msg);
00265 void ois_delete_queue(SMSCenter *smsc);
00266
00267 #endif
See file LICENSE for details about the license agreement for using,
modifying, copying or deriving work from this software.