LCOV - code coverage report
Current view: top level - zephyr/net/http - frame.h Hit Total Coverage
Test: new.info Lines: 6 6 100.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           1 : /*
       2             :  * Copyright (c) 2023, Emna Rekik
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : /**
       8             :  * @file
       9             :  * @brief HTTP2 frame information.
      10             :  */
      11             : 
      12             : #ifndef ZEPHYR_INCLUDE_NET_HTTP_SERVER_FRAME_H_
      13             : #define ZEPHYR_INCLUDE_NET_HTTP_SERVER_FRAME_H_
      14             : 
      15             : #include <stdint.h>
      16             : 
      17             : #ifdef __cplusplus
      18             : extern "C" {
      19             : #endif
      20             : 
      21             : /** HTTP2 frame types */
      22           1 : enum http2_frame_type {
      23             :         /** Data frame */
      24             :         HTTP2_DATA_FRAME = 0x00,
      25             :         /** Headers frame */
      26             :         HTTP2_HEADERS_FRAME = 0x01,
      27             :         /** Priority frame */
      28             :         HTTP2_PRIORITY_FRAME = 0x02,
      29             :         /** Reset stream frame */
      30             :         HTTP2_RST_STREAM_FRAME = 0x03,
      31             :         /** Settings frame */
      32             :         HTTP2_SETTINGS_FRAME = 0x04,
      33             :         /** Push promise frame */
      34             :         HTTP2_PUSH_PROMISE_FRAME = 0x05,
      35             :         /** Ping frame */
      36             :         HTTP2_PING_FRAME = 0x06,
      37             :         /** Goaway frame */
      38             :         HTTP2_GOAWAY_FRAME = 0x07,
      39             :         /** Window update frame */
      40             :         HTTP2_WINDOW_UPDATE_FRAME = 0x08,
      41             :         /** Continuation frame */
      42             :         HTTP2_CONTINUATION_FRAME = 0x09
      43             : };
      44             : 
      45             : /** @cond INTERNAL_HIDDEN */
      46             : 
      47             : #define HTTP2_FLAG_SETTINGS_ACK 0x01
      48             : #define HTTP2_FLAG_END_HEADERS  0x04
      49             : #define HTTP2_FLAG_END_STREAM   0x01
      50             : #define HTTP2_FLAG_PADDED       0x08
      51             : #define HTTP2_FLAG_PRIORITY     0x20
      52             : 
      53             : #define HTTP2_FRAME_HEADER_SIZE      9
      54             : #define HTTP2_FRAME_LENGTH_OFFSET    0
      55             : #define HTTP2_FRAME_TYPE_OFFSET      3
      56             : #define HTTP2_FRAME_FLAGS_OFFSET     4
      57             : #define HTTP2_FRAME_STREAM_ID_OFFSET 5
      58             : #define HTTP2_FRAME_STREAM_ID_MASK   0x7FFFFFFF
      59             : 
      60             : #define HTTP2_HEADERS_FRAME_PRIORITY_LEN 5
      61             : #define HTTP2_PRIORITY_FRAME_LEN 5
      62             : #define HTTP2_RST_STREAM_FRAME_LEN 4
      63             : 
      64             : /** @endcond */
      65             : 
      66             : /** HTTP2 settings field */
      67           1 : struct http2_settings_field {
      68           1 :         uint16_t id;    /**< Field id */
      69           1 :         uint32_t value; /**< Field value */
      70             : } __packed;
      71             : 
      72             : /** @brief HTTP2 settings */
      73           1 : enum http2_settings {
      74             :         /** Header table size */
      75             :         HTTP2_SETTINGS_HEADER_TABLE_SIZE = 1,
      76             :         /** Enable push */
      77             :         HTTP2_SETTINGS_ENABLE_PUSH = 2,
      78             :         /** Maximum number of concurrent streams */
      79             :         HTTP2_SETTINGS_MAX_CONCURRENT_STREAMS = 3,
      80             :         /** Initial window size */
      81             :         HTTP2_SETTINGS_INITIAL_WINDOW_SIZE = 4,
      82             :         /** Max frame size */
      83             :         HTTP2_SETTINGS_MAX_FRAME_SIZE = 5,
      84             :         /** Max header list size */
      85             :         HTTP2_SETTINGS_MAX_HEADER_LIST_SIZE = 6,
      86             : };
      87             : 
      88             : #ifdef __cplusplus
      89             : }
      90             : #endif
      91             : 
      92             : #endif

Generated by: LCOV version 1.14