net_checksum_add_iov(const struct iovec *iov, const unsigned int iov_cnt,

                     uint32_t iov_off, uint32_t size)

{

    size_t iovec_off, buf_off;

    unsigned int i;

    uint32_t res = 0;

    uint32_t seq = 0;



    iovec_off = 0;

    buf_off = 0;

    for (i = 0; i < iov_cnt && size; i++) {

        if (iov_off < (iovec_off + iov[i].iov_len)) {

            size_t len = MIN((iovec_off + iov[i].iov_len) - iov_off , size);

            void *chunk_buf = iov[i].iov_base + (iov_off - iovec_off);



            res += net_checksum_add_cont(len, chunk_buf, seq);

            seq += len;



            buf_off += len;

            iov_off += len;

            size -= len;

        }

        iovec_off += iov[i].iov_len;

    }

    return res;

}

net_checksum_add_iov(const struct iovec *iov, const unsigned int iov_cnt,

                     uint32_t iov_off, uint32_t size)

{

    size_t iovec_off, buf_off;

    unsigned int i;

    uint32_t res = 0;

    uint32_t seq = 0;



    iovec_off = 0;

    buf_off = 0;

    for (i = 0; i < iov_cnt && size; i++) {

        if (iov_off < (iovec_off + iov[i].iov_len)) {

            size_t len = MIN((iovec_off + iov[i].iov_len) - iov_off , size);

            void *chunk_buf = iov[i].iov_base + (iov_off - iovec_off);



            res += net_checksum_add_cont(len, chunk_buf, seq);

            seq += len;



            buf_off += len;

            iov_off += len;

            size -= len;

        }

        iovec_off += iov[i].iov_len;

    }

    return res;

}

FUNC_0(const struct iovec *VAR_0, const unsigned int VAR_1,

                     uint32_t VAR_2, uint32_t VAR_3)

{

    size_t iovec_off, buf_off;

    unsigned int VAR_4;

    uint32_t res = 0;

    uint32_t seq = 0;



    iovec_off = 0;

    buf_off = 0;

    for (VAR_4 = 0; VAR_4 < VAR_1 && VAR_3; VAR_4++) {

        if (VAR_2 < (iovec_off + VAR_0[VAR_4].iov_len)) {

            size_t len = MIN((iovec_off + VAR_0[VAR_4].iov_len) - VAR_2 , VAR_3);

            void *chunk_buf = VAR_0[VAR_4].iov_base + (VAR_2 - iovec_off);



            res += net_checksum_add_cont(len, chunk_buf, seq);

            seq += len;



            buf_off += len;

            VAR_2 += len;

            VAR_3 -= len;

        }

        iovec_off += VAR_0[VAR_4].iov_len;

    }

    return res;

}

FUNC_0(const struct iovec *VAR_0, const unsigned int VAR_1,
uint32_t VAR_2, uint32_t VAR_3)
{ size_t iovec_off, buf_off; unsigned int VAR_4; uint32_t res = 0; uint32_t seq = 0; iovec_off = 0; buf_off = 0; for (VAR_4 = 0; VAR_4 < VAR_1 && VAR_3; VAR_4++) { if (VAR_2 < (iovec_off + VAR_0[VAR_4].iov_len)) { size_t len = MIN((iovec_off + VAR_0[VAR_4].iov_len) - VAR_2 , VAR_3); void *chunk_buf = VAR_0[VAR_4].iov_base + (VAR_2 - iovec_off); res += net_checksum_add_cont(len, chunk_buf, seq); seq += len; buf_off += len; VAR_2 += len; VAR_3 -= len; } iovec_off += VAR_0[VAR_4].iov_len; } return res; }