PageRenderTime 40ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/isdn4k-utils-CVS-2010-05-01-patched/isdnlog/connect/socket.h

#
C Header | 217 lines | 131 code | 45 blank | 41 comment | 0 complexity | d90b958bcddfb96f932d123190b9df6c MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, CC-BY-SA-3.0
  1. /*
  2. * ISDN accounting for isdn4linux.
  3. *
  4. * Copyright 1996 by Stefan Luethje (luethje@sl-gw.lake.de)
  5. *
  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, or (at your option)
  9. * 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. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19. *
  20. */
  21. /****************************************************************************/
  22. #ifndef __MY_SOCKET_H_
  23. #define __MY_SOCKET_H_
  24. /****************************************************************************/
  25. #define PUBLIC extern
  26. /****************************************************************************/
  27. #include <tools.h>
  28. /****************************************************************************/
  29. #define SERV_ISDNLOG "isdnlog"
  30. #define MAX_CLIENTS_LISTEN 5
  31. #define PROT_VERSION "V0.2"
  32. #define PROT_ELEMENTS 20
  33. #ifndef SERV_PORT
  34. # define SERV_PORT 20011
  35. #endif
  36. /****************************************************************************/
  37. #define NO_NEXT_MSG 0
  38. #define NEXT_MSG 1
  39. /****************************************************************************/
  40. #define NO_MSG 0
  41. #define MSG_WHO_IS 1 /* Vom Server: String mit Nummer */
  42. #define MSG_CALL_INFO 2 /* Vom Server: String mit Gebuehren-Info */
  43. #define MSG_ANNOUNCE 3 /* Vom Client: Anmeldung beim Server mit User als String */
  44. #define MSG_ANN_ACC 4 /* Vom Server: Mit Server-Typ z.B. T_ISDN4LINUX */
  45. #define MSG_ANN_REJ 5 /* Vom Server: Ablehnung ohne weitere Info */
  46. #define MSG_NEW_CALLER 6 /* Vom Client: String mit neuen Anrufer-Daten */
  47. #define MSG_CALLER 7 /* Vom Server: String mit Anrufer-Daten */
  48. #define MSG_TOPICS 8 /* Vom Server: Topics vom aktuellen Gespraech */
  49. #define MSG_NOTICE 9 /* Vom Server: Uebermitteln von einer Notiz */
  50. #define MSG_THRUPUT_INFO 10 /* Vom Server: Datendurchsatz */
  51. #define MSG_CLOCK_INFO 11 /* Vom Server: Uhrzeit vom Amt */
  52. #define MSG_SERVER 12 /* Vom Server: print_msg Meldungen */
  53. #define MSG_CHANGE_CHAN 13 /* Vom Server: Kanal wurde gewechselt */
  54. #define MSG_VERSION 14 /* Vom Server: Version des Protokolls: "PROT_VERSION" */
  55. #define MSG_CLOSE 15 /* Die Verbindung wird beendet ohne Parameter, Dummy-Message */
  56. #define MSG_ISDN_CMD 16 /* Es kann ein Befehl vom Client ausgefuehrt werden */
  57. /****************************************************************************/
  58. #define _MSG_LEN 4
  59. #define _MSG_MSG 2
  60. #define _MSG_2B 2
  61. /****************************************************************************/
  62. #define WF_NOTHING 0 /* WF : Wait for */
  63. #define WF_ACC 1
  64. #define WF_CLOSE 2
  65. /****************************************************************************/
  66. /* Die folgenden Flags stehen im direkten Bezug zu user_access.c:ValidFlags */
  67. #define T_NOTHING 0 /* Unterbau nicht vorhanden */
  68. #define T_I4LCONF 1 /* Unterbau ist isdn4liunx und darf configuriert werden */
  69. #define T_PROTOCOL 2 /* Meldungen vom S0 */
  70. #define T_ADDRESSBOOK 4 /* Es soll das Adressbuch erlaubt werden. */
  71. /* ACHTUNG: Die folgende muss immer Upgedatet werden */
  72. #define T_ALL 6 /* Dieses ist die Summe aller gueltigen Flags. */
  73. /****************************************************************************/
  74. #define NO_SOCKET -2
  75. #define NO_BIND -3
  76. #define NO_LISTEN -4
  77. #define NO_CONNECT -5
  78. #define NO_MEMORY -6
  79. #define NO_HOST -7
  80. /****************************************************************************/
  81. #define C_DELIMITER '|'
  82. /****************************************************************************/
  83. typedef struct {
  84. int len;
  85. int used;
  86. char *buf;
  87. } buffer;
  88. typedef struct _socket_queue{
  89. int descriptor;
  90. FILE *fp;
  91. pid_t pid;
  92. int chan;
  93. info_args *info_arg;
  94. int call_event;
  95. int msg;
  96. int status;
  97. int waitstatus;
  98. int servtyp;
  99. int input_id;
  100. char *f_hostname;
  101. char *f_username;
  102. int (*eval)(struct _socket_queue*);
  103. buffer restbuf;
  104. buffer msgbuf;
  105. } socket_queue;
  106. typedef struct {
  107. char* Number;
  108. char* Alias;
  109. } PhoneNumber;
  110. typedef struct {
  111. char *Company;
  112. char *Street;
  113. char *Country;
  114. char *PLZ;
  115. char *City;
  116. int NumTel;
  117. PhoneNumber *Tel;
  118. int NumFax;
  119. PhoneNumber *Fax;
  120. int NumEmail;
  121. char **Email;
  122. } Addresses;
  123. typedef struct {
  124. char *NName;
  125. char *FName;
  126. int NumAdr;
  127. Addresses *Adr;
  128. char* Birthday;
  129. /*
  130. time_t Birthday;
  131. */
  132. } Address;
  133. /****************************************************************************/
  134. #ifdef _SOCKET_C_
  135. #define _EXTERN
  136. #else
  137. #define _EXTERN extern
  138. #endif
  139. _EXTERN int Write(socket_queue* sock);
  140. _EXTERN int Read(socket_queue* sock);
  141. _EXTERN unsigned long stoi (unsigned char* s, int len);
  142. _EXTERN char *itos (unsigned long val, int len);
  143. _EXTERN int add_socket(socket_queue **sock,int new_socket);
  144. _EXTERN int del_socket(socket_queue **sock,int position);
  145. _EXTERN int socket_size(socket_queue *sock);
  146. _EXTERN int msgcpy(socket_queue *sock, char *String, int len);
  147. _EXTERN int init_socket(socket_queue *sock);
  148. _EXTERN int Set_Info_Struct(CALL **Info, char *String);
  149. _EXTERN char *GetHostByAddr(struct sockaddr *Addr);
  150. _EXTERN char *GetHostByName(char *Name);
  151. #undef _EXTERN
  152. /****************************************************************************/
  153. #ifdef _CONNECT_C_
  154. #define _EXTERN
  155. #else
  156. #define _EXTERN extern
  157. #endif
  158. _EXTERN int client_connect(char *name, int port);
  159. _EXTERN int server_connect(struct servent **sp, int port);
  160. #undef _EXTERN
  161. /****************************************************************************/
  162. #ifdef _CONV_ADDRESS_C_
  163. #define _EXTERN
  164. #else
  165. #define _EXTERN extern
  166. #endif
  167. _EXTERN Address* read_address(char* Ptr1);
  168. _EXTERN char* write_address(Address *Ptr);
  169. _EXTERN void free_Address(Address *APtr);
  170. #undef _EXTERN
  171. /****************************************************************************/
  172. #endif /* __MY_SOCKET_H_*/