101 void *sq_arg; /* Callback function arg */
102 svp_t *sq_svp; /* Pointer back to svp_t */
103 svp_req_t sq_header; /* Header for the query */
104 svp_query_data_t sq_rdun; /* Union for read data */
105 svp_query_data_t sq_wdun; /* Union for write data */
106 svp_status_t sq_status; /* Query response status */
107 size_t sq_size; /* Query response size */
108 void *sq_rdata; /* Read data pointer */
109 size_t sq_rsize; /* Read data size */
110 void *sq_wdata; /* Write data pointer */
111 size_t sq_wsize; /* Write data size */
112 hrtime_t sq_acttime; /* Last I/O activity time */
113 };
114
115 typedef enum svp_conn_state {
116 SVP_CS_ERROR = 0x00,
117 SVP_CS_INITIAL = 0x01,
118 SVP_CS_CONNECTING = 0x02,
119 SVP_CS_BACKOFF = 0x03,
120 SVP_CS_ACTIVE = 0x04,
121 SVP_CS_WINDDOWN = 0x05
122 } svp_conn_state_t;
123
124 typedef enum svp_conn_error {
125 SVP_CE_NONE = 0x00,
126 SVP_CE_ASSOCIATE = 0x01,
127 SVP_CE_NOPOLLOUT = 0x02,
128 SVP_CE_SOCKET = 0x03,
129 SVP_CE_VERSION_PONG = 0x04
130 } svp_conn_error_t;
131
132 typedef enum svp_conn_flags {
133 SVP_CF_ADDED = 0x01,
134 SVP_CF_DEGRADED = 0x02,
135 SVP_CF_REAP = 0x04,
136 SVP_CF_TEARDOWN = 0x08,
137 SVP_CF_UFLAG = 0x0c,
138 SVP_CF_USER = 0x10
139 } svp_conn_flags_t;
140
141 typedef struct svp_conn_out {
330 extern int svp_conn_create(svp_remote_t *, const struct in6_addr *);
331 extern void svp_conn_destroy(svp_conn_t *);
332 extern void svp_conn_fallout(svp_conn_t *);
333 extern void svp_conn_queue(svp_conn_t *, svp_query_t *);
334
335 /*
336 * FMA related
337 */
338 extern void svp_remote_degrade(svp_remote_t *, svp_degrade_state_t);
339 extern void svp_remote_restore(svp_remote_t *, svp_degrade_state_t);
340
341 /*
342 * Misc.
343 */
344 extern int svp_comparator(const void *, const void *);
345 extern void svp_remote_reassign(svp_remote_t *, svp_conn_t *);
346 extern void svp_remote_resolved(svp_remote_t *, struct addrinfo *);
347 extern void svp_host_queue(svp_remote_t *);
348 extern void svp_query_release(svp_query_t *);
349 extern void svp_query_crc32(svp_req_t *, void *, size_t);
350
351 /*
352 * Shootdown related
353 */
354 extern void svp_remote_shootdown_vl3(svp_remote_t *, svp_log_vl3_t *,
355 svp_sdlog_t *);
356 extern void svp_remote_shootdown_vl2(svp_remote_t *, svp_log_vl2_t *);
357 extern void svp_remote_log_request(svp_remote_t *, svp_query_t *, void *,
358 size_t);
359 extern void svp_remote_lrm_request(svp_remote_t *, svp_query_t *, void *,
360 size_t);
361 extern void svp_shootdown_logr_cb(svp_remote_t *, svp_status_t, void *, size_t);
362 extern void svp_shootdown_lrm_cb(svp_remote_t *, svp_status_t);
363 extern void svp_shootdown_vl3_cb(svp_status_t, svp_log_vl3_t *, svp_sdlog_t *);
364 extern int svp_shootdown_init(svp_remote_t *);
365 extern void svp_shootdown_fini(svp_remote_t *);
366 extern void svp_shootdown_start(svp_remote_t *);
367
368 #ifdef __cplusplus
369 }
|
101 void *sq_arg; /* Callback function arg */
102 svp_t *sq_svp; /* Pointer back to svp_t */
103 svp_req_t sq_header; /* Header for the query */
104 svp_query_data_t sq_rdun; /* Union for read data */
105 svp_query_data_t sq_wdun; /* Union for write data */
106 svp_status_t sq_status; /* Query response status */
107 size_t sq_size; /* Query response size */
108 void *sq_rdata; /* Read data pointer */
109 size_t sq_rsize; /* Read data size */
110 void *sq_wdata; /* Write data pointer */
111 size_t sq_wsize; /* Write data size */
112 hrtime_t sq_acttime; /* Last I/O activity time */
113 };
114
115 typedef enum svp_conn_state {
116 SVP_CS_ERROR = 0x00,
117 SVP_CS_INITIAL = 0x01,
118 SVP_CS_CONNECTING = 0x02,
119 SVP_CS_BACKOFF = 0x03,
120 SVP_CS_ACTIVE = 0x04,
121 SVP_CS_WINDDOWN = 0x05,
122 SVP_CS_VERSIONING = 0x06
123 } svp_conn_state_t;
124
125 typedef enum svp_conn_error {
126 SVP_CE_NONE = 0x00,
127 SVP_CE_ASSOCIATE = 0x01,
128 SVP_CE_NOPOLLOUT = 0x02,
129 SVP_CE_SOCKET = 0x03,
130 SVP_CE_VERSION_PONG = 0x04
131 } svp_conn_error_t;
132
133 typedef enum svp_conn_flags {
134 SVP_CF_ADDED = 0x01,
135 SVP_CF_DEGRADED = 0x02,
136 SVP_CF_REAP = 0x04,
137 SVP_CF_TEARDOWN = 0x08,
138 SVP_CF_UFLAG = 0x0c,
139 SVP_CF_USER = 0x10
140 } svp_conn_flags_t;
141
142 typedef struct svp_conn_out {
331 extern int svp_conn_create(svp_remote_t *, const struct in6_addr *);
332 extern void svp_conn_destroy(svp_conn_t *);
333 extern void svp_conn_fallout(svp_conn_t *);
334 extern void svp_conn_queue(svp_conn_t *, svp_query_t *);
335
336 /*
337 * FMA related
338 */
339 extern void svp_remote_degrade(svp_remote_t *, svp_degrade_state_t);
340 extern void svp_remote_restore(svp_remote_t *, svp_degrade_state_t);
341
342 /*
343 * Misc.
344 */
345 extern int svp_comparator(const void *, const void *);
346 extern void svp_remote_reassign(svp_remote_t *, svp_conn_t *);
347 extern void svp_remote_resolved(svp_remote_t *, struct addrinfo *);
348 extern void svp_host_queue(svp_remote_t *);
349 extern void svp_query_release(svp_query_t *);
350 extern void svp_query_crc32(svp_req_t *, void *, size_t);
351 extern id_t svp_id_alloc(void);
352
353 /*
354 * Shootdown related
355 */
356 extern void svp_remote_shootdown_vl3(svp_remote_t *, svp_log_vl3_t *,
357 svp_sdlog_t *);
358 extern void svp_remote_shootdown_vl2(svp_remote_t *, svp_log_vl2_t *);
359 extern void svp_remote_log_request(svp_remote_t *, svp_query_t *, void *,
360 size_t);
361 extern void svp_remote_lrm_request(svp_remote_t *, svp_query_t *, void *,
362 size_t);
363 extern void svp_shootdown_logr_cb(svp_remote_t *, svp_status_t, void *, size_t);
364 extern void svp_shootdown_lrm_cb(svp_remote_t *, svp_status_t);
365 extern void svp_shootdown_vl3_cb(svp_status_t, svp_log_vl3_t *, svp_sdlog_t *);
366 extern int svp_shootdown_init(svp_remote_t *);
367 extern void svp_shootdown_fini(svp_remote_t *);
368 extern void svp_shootdown_start(svp_remote_t *);
369
370 #ifdef __cplusplus
371 }
|