35 #include "htp/htp_rs.h"
36 #include "rust-bindings.h"
40 static int HTTP2RegisterPatternsForProtocolDetection(
void)
46 IPPROTO_TCP,
ALPROTO_HTTP2,
"PRI * HTTP/2.0\r\n", 16, 0, STREAM_TOSERVER) < 0) {
53 static SuricataFileContext sfc = { &sbcfg };
57 const char *proto_name =
"http2";
61 if (HTTP2RegisterPatternsForProtocolDetection() < 0)
65 SCRegisterHttp2Parser();
76 if (h2s == NULL || h1tx == NULL) {
79 if (htp_tx_request_method(h1tx) == NULL) {
84 SCHttp2TxSetMethod(h2s, bstr_ptr(htp_tx_request_method(h1tx)),
85 (uint32_t)bstr_len(htp_tx_request_method(h1tx)));
86 if (htp_tx_request_uri(h1tx) != NULL) {
89 SCHttp2TxSetUri(h2s, bstr_ptr(htp_tx_request_uri(h1tx)),
90 (uint32_t)bstr_len(htp_tx_request_uri(h1tx)));
92 size_t nbheaders = htp_tx_request_headers_size(h1tx);
93 for (
size_t i = 0; i < nbheaders; i++) {
94 const htp_header_t *h = htp_tx_request_header_index(h1tx, i);
95 SCHttp2TxAddHeader(h2s, htp_header_name_ptr(h), (uint32_t)htp_header_name_len(h),
96 htp_header_value_ptr(h), (uint32_t)htp_header_value_len(h));