gooderp18绿色标准版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
3.9KB

  1. /*-------------------------------------------------------------------------
  2. *
  3. * libpq.h
  4. * POSTGRES LIBPQ buffer structure definitions.
  5. *
  6. *
  7. * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
  8. * Portions Copyright (c) 1994, Regents of the University of California
  9. *
  10. * src/include/libpq/libpq.h
  11. *
  12. *-------------------------------------------------------------------------
  13. */
  14. #ifndef LIBPQ_H
  15. #define LIBPQ_H
  16. #include <netinet/in.h>
  17. #include "lib/stringinfo.h"
  18. #include "libpq/libpq-be.h"
  19. #include "storage/latch.h"
  20. typedef struct
  21. {
  22. void (*comm_reset) (void);
  23. int (*flush) (void);
  24. int (*flush_if_writable) (void);
  25. bool (*is_send_pending) (void);
  26. int (*putmessage) (char msgtype, const char *s, size_t len);
  27. void (*putmessage_noblock) (char msgtype, const char *s, size_t len);
  28. void (*startcopyout) (void);
  29. void (*endcopyout) (bool errorAbort);
  30. } PQcommMethods;
  31. extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
  32. #define pq_comm_reset() (PqCommMethods->comm_reset())
  33. #define pq_flush() (PqCommMethods->flush())
  34. #define pq_flush_if_writable() (PqCommMethods->flush_if_writable())
  35. #define pq_is_send_pending() (PqCommMethods->is_send_pending())
  36. #define pq_putmessage(msgtype, s, len) \
  37. (PqCommMethods->putmessage(msgtype, s, len))
  38. #define pq_putmessage_noblock(msgtype, s, len) \
  39. (PqCommMethods->putmessage_noblock(msgtype, s, len))
  40. #define pq_startcopyout() (PqCommMethods->startcopyout())
  41. #define pq_endcopyout(errorAbort) (PqCommMethods->endcopyout(errorAbort))
  42. /*
  43. * External functions.
  44. */
  45. /*
  46. * prototypes for functions in pqcomm.c
  47. */
  48. extern WaitEventSet *FeBeWaitSet;
  49. extern int StreamServerPort(int family, char *hostName,
  50. unsigned short portNumber, char *unixSocketDir,
  51. pgsocket ListenSocket[], int MaxListen);
  52. extern int StreamConnection(pgsocket server_fd, Port *port);
  53. extern void StreamClose(pgsocket sock);
  54. extern void TouchSocketFiles(void);
  55. extern void RemoveSocketFiles(void);
  56. extern void pq_init(void);
  57. extern int pq_getbytes(char *s, size_t len);
  58. extern int pq_getstring(StringInfo s);
  59. extern void pq_startmsgread(void);
  60. extern void pq_endmsgread(void);
  61. extern bool pq_is_reading_msg(void);
  62. extern int pq_getmessage(StringInfo s, int maxlen);
  63. extern int pq_getbyte(void);
  64. extern int pq_peekbyte(void);
  65. extern int pq_getbyte_if_available(unsigned char *c);
  66. extern int pq_putbytes(const char *s, size_t len);
  67. /*
  68. * prototypes for functions in be-secure.c
  69. */
  70. extern char *ssl_library;
  71. extern char *ssl_cert_file;
  72. extern char *ssl_key_file;
  73. extern char *ssl_ca_file;
  74. extern char *ssl_crl_file;
  75. extern char *ssl_dh_params_file;
  76. extern char *ssl_passphrase_command;
  77. extern bool ssl_passphrase_command_supports_reload;
  78. #ifdef USE_SSL
  79. extern bool ssl_loaded_verify_locations;
  80. #endif
  81. extern int secure_initialize(bool isServerStart);
  82. extern bool secure_loaded_verify_locations(void);
  83. extern void secure_destroy(void);
  84. extern int secure_open_server(Port *port);
  85. extern void secure_close(Port *port);
  86. extern ssize_t secure_read(Port *port, void *ptr, size_t len);
  87. extern ssize_t secure_write(Port *port, void *ptr, size_t len);
  88. extern ssize_t secure_raw_read(Port *port, void *ptr, size_t len);
  89. extern ssize_t secure_raw_write(Port *port, const void *ptr, size_t len);
  90. /*
  91. * prototypes for functions in be-secure-gssapi.c
  92. */
  93. #ifdef ENABLE_GSS
  94. extern ssize_t secure_open_gssapi(Port *port);
  95. #endif
  96. /* GUCs */
  97. extern char *SSLCipherSuites;
  98. extern char *SSLECDHCurve;
  99. extern bool SSLPreferServerCiphers;
  100. extern int ssl_min_protocol_version;
  101. extern int ssl_max_protocol_version;
  102. enum ssl_protocol_versions
  103. {
  104. PG_TLS_ANY = 0,
  105. PG_TLS1_VERSION,
  106. PG_TLS1_1_VERSION,
  107. PG_TLS1_2_VERSION,
  108. PG_TLS1_3_VERSION,
  109. };
  110. /*
  111. * prototypes for functions in be-secure-common.c
  112. */
  113. extern int run_ssl_passphrase_command(const char *prompt, bool is_server_start,
  114. char *buf, int size);
  115. extern bool check_ssl_key_file_permissions(const char *ssl_key_file,
  116. bool isServerStart);
  117. #endif /* LIBPQ_H */
上海开阖软件有限公司 沪ICP备12045867号-1