Lines Matching full:pdu
44 pdu_ahs_length(const struct pdu *pdu) in pdu_ahs_length() argument
47 return (pdu->pdu_bhs->bhs_total_ahs_len * 4); in pdu_ahs_length()
51 pdu_data_segment_length(const struct pdu *pdu) in pdu_data_segment_length() argument
55 len += pdu->pdu_bhs->bhs_data_segment_len[0]; in pdu_data_segment_length()
57 len += pdu->pdu_bhs->bhs_data_segment_len[1]; in pdu_data_segment_length()
59 len += pdu->pdu_bhs->bhs_data_segment_len[2]; in pdu_data_segment_length()
65 pdu_set_data_segment_length(struct pdu *pdu, uint32_t len) in pdu_set_data_segment_length() argument
68 pdu->pdu_bhs->bhs_data_segment_len[2] = len; in pdu_set_data_segment_length()
69 pdu->pdu_bhs->bhs_data_segment_len[1] = len >> 8; in pdu_set_data_segment_length()
70 pdu->pdu_bhs->bhs_data_segment_len[0] = len >> 16; in pdu_set_data_segment_length()
73 struct pdu *
76 struct pdu *pdu; in pdu_new() local
78 pdu = calloc(1, sizeof(*pdu)); in pdu_new()
79 if (pdu == NULL) in pdu_new()
82 pdu->pdu_bhs = calloc(1, sizeof(*pdu->pdu_bhs)); in pdu_new()
83 if (pdu->pdu_bhs == NULL) in pdu_new()
86 pdu->pdu_connection = conn; in pdu_new()
88 return (pdu); in pdu_new()
91 struct pdu *
92 pdu_new_response(struct pdu *request) in pdu_new_response()
99 pdu_padding(const struct pdu *pdu) in pdu_padding() argument
102 if ((pdu->pdu_data_len % 4) != 0) in pdu_padding()
103 return (4 - (pdu->pdu_data_len % 4)); in pdu_padding()
133 pdu_receive(struct pdu *pdu) in pdu_receive() argument
139 conn = pdu->pdu_connection; in pdu_receive()
141 return (conn->conn_ops->pdu_receive_proxy(pdu)); in pdu_receive()
143 pdu_read(conn, (char *)pdu->pdu_bhs, sizeof(*pdu->pdu_bhs)); in pdu_receive()
145 len = pdu_ahs_length(pdu); in pdu_receive()
149 len = pdu_data_segment_length(pdu); in pdu_receive()
152 log_errx(1, "protocol error: received PDU " in pdu_receive()
157 pdu->pdu_data_len = len; in pdu_receive()
158 pdu->pdu_data = malloc(len); in pdu_receive()
159 if (pdu->pdu_data == NULL) in pdu_receive()
162 pdu_read(conn, (char *)pdu->pdu_data, pdu->pdu_data_len); in pdu_receive()
164 padding = pdu_padding(pdu); in pdu_receive()
173 pdu_send(struct pdu *pdu) in pdu_send() argument
182 conn = pdu->pdu_connection; in pdu_send()
184 return (conn->conn_ops->pdu_send_proxy(pdu)); in pdu_send()
186 pdu_set_data_segment_length(pdu, pdu->pdu_data_len); in pdu_send()
187 iov[0].iov_base = pdu->pdu_bhs; in pdu_send()
188 iov[0].iov_len = sizeof(*pdu->pdu_bhs); in pdu_send()
192 if (pdu->pdu_data_len > 0) { in pdu_send()
193 iov[1].iov_base = pdu->pdu_data; in pdu_send()
194 iov[1].iov_len = pdu->pdu_data_len; in pdu_send()
198 padding = pdu_padding(pdu); in pdu_send()
219 pdu_delete(struct pdu *pdu) in pdu_delete() argument
222 free(pdu->pdu_data); in pdu_delete()
223 free(pdu->pdu_bhs); in pdu_delete()
224 free(pdu); in pdu_delete()