diff --git a/include/iscsi-private.h b/include/iscsi-private.h index 9f7e965..74053e2 100644 --- a/include/iscsi-private.h +++ b/include/iscsi-private.h @@ -189,6 +189,8 @@ void iscsi_pdu_set_lun(struct iscsi_pdu *pdu, uint32_t lun); void iscsi_pdu_set_expstatsn(struct iscsi_pdu *pdu, uint32_t expstatsnsn); void iscsi_pdu_set_expxferlen(struct iscsi_pdu *pdu, uint32_t expxferlen); void iscsi_pdu_set_itt(struct iscsi_pdu *pdu, uint32_t itt); +void iscsi_pdu_set_datasn(struct iscsi_pdu *pdu, uint32_t datasn); +void iscsi_pdu_set_bufferoffset(struct iscsi_pdu *pdu, uint32_t bufferoffset); int iscsi_pdu_add_data(struct iscsi_context *iscsi, struct iscsi_pdu *pdu, unsigned char *dptr, int dsize); int iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); diff --git a/lib/pdu.c b/lib/pdu.c index 252cd0a..8effa29 100644 --- a/lib/pdu.c +++ b/lib/pdu.c @@ -318,12 +318,24 @@ iscsi_pdu_set_cmdsn(struct iscsi_pdu *pdu, uint32_t cmdsn) *(uint32_t *)&pdu->outdata.data[24] = htonl(cmdsn); } +void +iscsi_pdu_set_datasn(struct iscsi_pdu *pdu, uint32_t datasn) +{ + *(uint32_t *)&pdu->outdata.data[36] = htonl(datasn); +} + void iscsi_pdu_set_expstatsn(struct iscsi_pdu *pdu, uint32_t expstatsnsn) { *(uint32_t *)&pdu->outdata.data[28] = htonl(expstatsnsn); } +void +iscsi_pdu_set_bufferoffset(struct iscsi_pdu *pdu, uint32_t bufferoffset) +{ + *(uint32_t *)&pdu->outdata.data[40] = htonl(bufferoffset); +} + void iscsi_pdu_set_cdb(struct iscsi_pdu *pdu, struct scsi_task *task) {