Lines Matching refs:adreq
90 static TAILQ_HEAD(, adreq) adist_free_list;
93 static TAILQ_HEAD(, adreq) adist_disk_list;
96 static TAILQ_HEAD(, adreq) adist_send_list;
101 adreq_clear(struct adreq *adreq) in adreq_clear() argument
104 adreq->adr_error = -1; in adreq_clear()
105 adreq->adr_byteorder = ADIST_BYTEORDER_UNDEFINED; in adreq_clear()
106 adreq->adr_cmd = ADIST_CMD_UNDEFINED; in adreq_clear()
107 adreq->adr_seq = 0; in adreq_clear()
108 adreq->adr_datasize = 0; in adreq_clear()
114 struct adreq *adreq; in init_environment() local
128 adreq = malloc(sizeof(*adreq) + ADIST_BUF_SIZE); in init_environment()
129 if (adreq == NULL) { in init_environment()
132 sizeof(*adreq) + ADIST_BUF_SIZE); in init_environment()
134 adreq_clear(adreq); in init_environment()
135 TAILQ_INSERT_TAIL(&adist_free_list, adreq, adr_next); in init_environment()
140 adreq_decode_and_validate_header(struct adreq *adreq) in adreq_decode_and_validate_header() argument
144 if (adreq->adr_byteorder != ADIST_BYTEORDER) { in adreq_decode_and_validate_header()
145 adreq->adr_byteorder = ADIST_BYTEORDER; in adreq_decode_and_validate_header()
146 adreq->adr_seq = bswap64(adreq->adr_seq); in adreq_decode_and_validate_header()
147 adreq->adr_datasize = bswap32(adreq->adr_datasize); in adreq_decode_and_validate_header()
152 if (adreq->adr_datasize > ADIST_BUF_SIZE) { in adreq_decode_and_validate_header()
154 (uintmax_t)adreq->adr_datasize); in adreq_decode_and_validate_header()
157 switch (adreq->adr_cmd) { in adreq_decode_and_validate_header()
161 if (adreq->adr_datasize == 0) { in adreq_decode_and_validate_header()
164 (uintmax_t)adreq->adr_datasize); in adreq_decode_and_validate_header()
169 if (adreq->adr_datasize > 0) { in adreq_decode_and_validate_header()
172 (uintmax_t)adreq->adr_datasize); in adreq_decode_and_validate_header()
177 adreq->adr_cmd); in adreq_decode_and_validate_header()
182 adreq_validate_data(const struct adreq *adreq) in adreq_validate_data() argument
187 switch (adreq->adr_cmd) { in adreq_validate_data()
194 if (adreq->adr_data[adreq->adr_datasize - 1] != '\0' || in adreq_validate_data()
195 strchr(adreq->adr_data, '\0') != in adreq_validate_data()
196 (const char *)adreq->adr_data + adreq->adr_datasize - 1) { in adreq_validate_data()
210 struct adreq *adreq; in recv_thread() local
214 QUEUE_TAKE(adreq, &adist_free_list, 0); in recv_thread()
215 pjdlog_debug(3, "recv: (%p) Got request.", adreq); in recv_thread()
217 if (proto_recv(adhost->adh_remote, &adreq->adr_packet, in recv_thread()
218 sizeof(adreq->adr_packet)) == -1) { in recv_thread()
222 adreq_decode_and_validate_header(adreq); in recv_thread()
224 switch (adreq->adr_cmd) { in recv_thread()
226 adreq->adr_error = 0; in recv_thread()
227 adreq_log(LOG_DEBUG, 2, -1, adreq, in recv_thread()
228 "recv: (%p) Got request header: ", adreq); in recv_thread()
231 adreq); in recv_thread()
232 QUEUE_INSERT(adreq, &adist_send_list); in recv_thread()
237 adreq_log(LOG_DEBUG, 2, ADIST_ERROR_READ, adreq, in recv_thread()
238 "recv: (%p) Got request header: ", adreq); in recv_thread()
241 adreq); in recv_thread()
242 QUEUE_INSERT(adreq, &adist_disk_list); in recv_thread()
247 if (proto_recv(adhost->adh_remote, adreq->adr_data, in recv_thread()
248 adreq->adr_datasize) == -1) { in recv_thread()
252 adreq_validate_data(adreq); in recv_thread()
253 adreq_log(LOG_DEBUG, 2, -1, adreq, in recv_thread()
254 "recv: (%p) Got request header: ", adreq); in recv_thread()
257 adreq); in recv_thread()
258 QUEUE_INSERT(adreq, &adist_disk_list); in recv_thread()
459 struct adreq *adreq; in disk_thread() local
463 QUEUE_TAKE(adreq, &adist_disk_list, 0); in disk_thread()
464 adreq_log(LOG_DEBUG, 3, -1, adreq, "disk: (%p) Got request: ", in disk_thread()
465 adreq); in disk_thread()
467 switch (adreq->adr_cmd) { in disk_thread()
469 adreq->adr_error = receiver_open(adreq->adr_data); in disk_thread()
472 adreq->adr_error = receiver_append(adreq->adr_data, in disk_thread()
473 adreq->adr_datasize); in disk_thread()
476 adreq->adr_error = receiver_close(adreq->adr_data); in disk_thread()
479 adreq->adr_error = receiver_error(); in disk_thread()
483 adreq->adr_cmd); in disk_thread()
485 if (adreq->adr_error != 0) { in disk_thread()
486 adreq_log(LOG_ERR, 0, adreq->adr_error, adreq, in disk_thread()
490 adreq); in disk_thread()
491 QUEUE_INSERT(adreq, &adist_send_list); in disk_thread()
503 struct adreq *adreq; in send_thread() local
508 QUEUE_TAKE(adreq, &adist_send_list, 0); in send_thread()
509 adreq_log(LOG_DEBUG, 3, -1, adreq, "send: (%p) Got request: ", in send_thread()
510 adreq); in send_thread()
512 adrep.adrp_seq = adreq->adr_seq; in send_thread()
513 adrep.adrp_error = adreq->adr_error; in send_thread()
519 adreq); in send_thread()
520 adreq_clear(adreq); in send_thread()
521 QUEUE_INSERT(adreq, &adist_free_list); in send_thread()