/include/netxms_isc.h

https://github.com/netxms/netxms · C Header · 102 lines · 54 code · 12 blank · 36 comment · 0 complexity · 432f62ea698661ae9706b6652c68ef7e MD5 · raw file

  1. /*
  2. ** NetXMS - Network Management System
  3. ** Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Victor Kirhenshtein
  4. **
  5. ** This program is free software; you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation; either version 2 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program; if not, write to the Free Software
  17. ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. **
  19. ** File: netxms_isc.h
  20. **
  21. **/
  22. #ifndef _netxms_isc_h_
  23. #define _netxms_isc_h_
  24. /**
  25. * Default ISC port number
  26. */
  27. #define NETXMS_ISC_PORT 4702
  28. /**
  29. * Well-known ISC services
  30. */
  31. #define ISC_SERVICE_EVENT_FORWARDER ((UINT32)1)
  32. #define ISC_SERVICE_OBJECT_SYNC ((UINT32)2)
  33. #define ISC_SERVICE_LICENSE_SERVER ((UINT32)3)
  34. #define ISC_SERVICE_CUSTOM_1 ((UINT32)100000)
  35. /**
  36. * ISC error codes
  37. */
  38. #define ISC_ERR_SUCCESS ((UINT32)0)
  39. #define ISC_ERR_UNKNOWN_SERVICE ((UINT32)1)
  40. #define ISC_ERR_REQUEST_OUT_OF_STATE ((UINT32)2)
  41. #define ISC_ERR_SERVICE_DISABLED ((UINT32)3)
  42. #define ISC_ERR_ENCRYPTION_REQUIRED ((UINT32)4)
  43. #define ISC_ERR_CONNECTION_BROKEN ((UINT32)5)
  44. #define ISC_ERR_ALREADY_CONNECTED ((UINT32)6)
  45. #define ISC_ERR_SOCKET_ERROR ((UINT32)7)
  46. #define ISC_ERR_CONNECT_FAILED ((UINT32)8)
  47. #define ISC_ERR_INVALID_NXCP_VERSION ((UINT32)9)
  48. #define ISC_ERR_REQUEST_TIMEOUT ((UINT32)10)
  49. #define ISC_ERR_NOT_IMPLEMENTED ((UINT32)11)
  50. #define ISC_ERR_NO_CIPHERS ((UINT32)12)
  51. #define ISC_ERR_INVALID_PUBLIC_KEY ((UINT32)13)
  52. #define ISC_ERR_INVALID_SESSION_KEY ((UINT32)14)
  53. #define ISC_ERR_INTERNAL_ERROR ((UINT32)15)
  54. #define ISC_ERR_SESSION_SETUP_FAILED ((UINT32)16)
  55. #define ISC_ERR_OBJECT_NOT_FOUND ((UINT32)17)
  56. #define ISC_ERR_POST_EVENT_FAILED ((UINT32)18)
  57. /**
  58. * ISC session
  59. */
  60. class ISCSession
  61. {
  62. private:
  63. SOCKET m_socket;
  64. UINT32 m_peerAddress; // Peer address in host byte order
  65. void *m_userData;
  66. public:
  67. ISCSession(SOCKET sock, struct sockaddr_in *addr)
  68. {
  69. m_socket = sock;
  70. m_peerAddress = ntohl(addr->sin_addr.s_addr);
  71. m_userData = NULL;
  72. }
  73. SOCKET GetSocket() { return m_socket; }
  74. UINT32 GetPeerAddress() { return m_peerAddress; }
  75. void SetUserData(void *data) { m_userData = data; }
  76. void *GetUserData() { return m_userData; }
  77. };
  78. /**
  79. * ISC service definition
  80. */
  81. typedef struct
  82. {
  83. UINT32 id; // Service ID
  84. const TCHAR *name; // Name
  85. const TCHAR *enableParameter; // Server parameter to be set to enable service
  86. BOOL (*setupSession)(ISCSession *, NXCPMessage *); // Session setup handler
  87. void (*closeSession)(ISCSession *); // Session close handler
  88. BOOL (*processMsg)(ISCSession *, NXCPMessage *, NXCPMessage *);
  89. } ISC_SERVICE;
  90. #endif