HTX_BLK_DATA = 4, /* data block */
HTX_BLK_TLR = 5, /* trailer name/value block */
HTX_BLK_EOT = 6, /* end-of-trailers block */
- /* 7 .. 14 unused */
+ HTX_BLK_RAW_DATA = 7, /* raw data block (tunneled data) */
+ /* 8 .. 14 unused */
HTX_BLK_UNUSED = 15, /* unused/removed block */
};
}
}
+/* Returns 1 if <type> is a payload type, i.e. a block carrying data that may be
+ * partially consumed (HTTP data or tunneled data). Otherwise 0 is returned.
+ */
+static inline int htx_is_data_type(enum htx_blk_type type)
+{
+ return (type == HTX_BLK_DATA || type == HTX_BLK_RAW_DATA);
+}
+
/* Returns the size of the block <blk>, depending of its type */
static inline uint32_t htx_get_blksz(const struct htx_blk *blk)
{
case HTX_BLK_REQ_SL:
case HTX_BLK_RES_SL:
case HTX_BLK_DATA:
+ case HTX_BLK_RAW_DATA:
blk->info = (type << 28) + vlen;
break;
default:
case HTX_BLK_REQ_SL:
case HTX_BLK_RES_SL:
case HTX_BLK_DATA:
+ case HTX_BLK_RAW_DATA:
ret = ist2(htx_get_blk_ptr(htx, blk),
blk->info & 0xfffffff);
break;
}
blk = ASSUME_NONNULL(htx_get_tail_blk(htx));
+
BUG_ON(htx_get_blk_type(blk) != HTX_BLK_EOH &&
htx_get_blk_type(blk) != HTX_BLK_EOT &&
htx_get_blk_type(blk) != HTX_BLK_DATA);
case HTX_BLK_HDR: return "HTX_BLK_HDR";
case HTX_BLK_EOH: return "HTX_BLK_EOH";
case HTX_BLK_DATA: return "HTX_BLK_DATA";
+ case HTX_BLK_RAW_DATA: return "HTX_BLK_RAW_DATA";
case HTX_BLK_TLR: return "HTX_BLK_TLR";
case HTX_BLK_EOT: return "HTX_BLK_EOT";
case HTX_BLK_UNUSED: return "HTX_BLK_UNUSED";