MUX_SCTL_SID, /* Return the mux stream ID as output, as a signed 64bits integer */
MUX_SCTL_DBG_STR, /* takes a mux_sctl_dbg_str_ctx argument, reads flags and returns debug info */
MUX_SCTL_TEVTS, /* Return the termination events log of the mux stream */
+ MUX_SCTL_GET_HDNG_FOUND, /* Return in output the HTTP_HRD_* hardening conditions met, as an uint32_t */
+ MUX_SCTL_GET_HDNG_FIXED, /* Return in output the HTTP_HRD_* hardening rules enforced, as an uint32_t */
};
#define MUX_SCTL_DBG_STR_L_MUXS 0x00000001 // info from mux stream
*/
static int h3_sctl(struct qcs *qcs, enum mux_sctl_type mux_sctl, void *output)
{
+ const struct h3s *h3s = qcs->ctx;
+
switch (mux_sctl) {
+ case MUX_SCTL_GET_HDNG_FOUND:
+ if (!h3s)
+ return -1;
+ *((uint32_t *)output) = h3s->hdng_chk.found;
+ return 0;
+ case MUX_SCTL_GET_HDNG_FIXED:
+ if (!h3s)
+ return -1;
+ *((uint32_t *)output) = h3s->hdng_chk.fixed;
+ return 0;
default:
return -1;
}
return ret;
case MUX_SCTL_TEVTS:
return h1s->sd->term_evts_log;
+ case MUX_SCTL_GET_HDNG_FOUND:
+ *((uint32_t *)output) = h1s->hdng_chk.found;
+ return ret;
+ case MUX_SCTL_GET_HDNG_FIXED:
+ *((uint32_t *)output) = h1s->hdng_chk.fixed;
+ return ret;
default:
return -1;
}
return ret;
case MUX_SCTL_TEVTS:
return h2s->sd->term_evts_log;
+ case MUX_SCTL_GET_HDNG_FOUND:
+ *((uint32_t *)output) = h2s->hdng_chk.found;
+ return ret;
+ case MUX_SCTL_GET_HDNG_FIXED:
+ *((uint32_t *)output) = h2s->hdng_chk.fixed;
+ return ret;
default:
return -1;
static int qcm_sctl(struct stconn *sc, enum mux_sctl_type mux_sctl, void *output)
{
int ret = 0;
- const struct qcs *qcs = __sc_mux_strm(sc);
+ struct qcs *qcs = __sc_mux_strm(sc);
const struct qcc *qcc = qcs->qcc;
const struct connection *conn = qcc->conn;
union mux_sctl_dbg_str_ctx *dbg_ctx;
case MUX_SCTL_TEVTS:
return qcs->sd->term_evts_log;
+ case MUX_SCTL_GET_HDNG_FOUND:
+ case MUX_SCTL_GET_HDNG_FIXED:
+ /* only known to the H3 layer */
+ if (qcc->app_ops != &h3_ops || !qcc->app_ops->sctl)
+ return -1;
+ return qcc->app_ops->sctl(qcs, mux_sctl, output);
+
default:
return -1;
}