Macros
Library version macros
-
NGTCP2_VERSION
Version number of the ngtcp2 library release.
-
NGTCP2_VERSION_NUM
Numerical representation of the version number of the ngtcp2 library release. This is a 24 bit number with 8 bits for major number, 8 bits for minor and 8 bits for patch. Version 1.2.3 becomes 0x010203.
QUIC protocol version macros
-
NGTCP2_PROTO_VER_V1
NGTCP2_PROTO_VER_V1is the QUIC version 1.
-
NGTCP2_PROTO_VER_V2
NGTCP2_PROTO_VER_V2is the QUIC version 2. See RFC 9369.
-
NGTCP2_PROTO_VER_MAX
NGTCP2_PROTO_VER_MAXis the highest QUIC version that this library supports. Deprecated since v1.1.0.
-
NGTCP2_PROTO_VER_MIN
NGTCP2_PROTO_VER_MINis the lowest QUIC version that this library supports. Deprecated since v1.1.0.
-
NGTCP2_RESERVED_VERSION_MASK
NGTCP2_RESERVED_VERSION_MASKis the bit mask of reserved version.
QUIC specific macros
-
NGTCP2_MAX_VARINT
NGTCP2_MAX_VARINTis the maximum value which can be encoded in variable-length integer encoding.
-
NGTCP2_STATELESS_RESET_TOKENLEN
NGTCP2_STATELESS_RESET_TOKENLENis the length of Stateless Reset Token.
-
NGTCP2_MIN_STATELESS_RESET_RANDLEN
NGTCP2_MIN_STATELESS_RESET_RANDLENis the minimum length of random bytes (Unpredictable Bits) in Stateless Reset packet.
-
NGTCP2_PATH_CHALLENGE_DATALEN
NGTCP2_PATH_CHALLENGE_DATALENis the length of PATH_CHALLENGE data.
-
NGTCP2_RETRY_KEY_V1
NGTCP2_RETRY_KEY_V1is an encryption key to create integrity tag of Retry packet. It is used for QUIC v1.
-
NGTCP2_RETRY_NONCE_V1
NGTCP2_RETRY_NONCE_V1is nonce used when generating integrity tag of Retry packet. It is used for QUIC v1.
-
NGTCP2_RETRY_KEY_V2
NGTCP2_RETRY_KEY_V2is an encryption key to create integrity tag of Retry packet. It is used for QUIC v2. See RFC 9369.
-
NGTCP2_RETRY_NONCE_V2
NGTCP2_RETRY_NONCE_V2is nonce used when generating integrity tag of Retry packet. It is used for QUIC v2. See RFC 9369.
-
NGTCP2_HP_MASKLEN
NGTCP2_HP_MASKLENis the length of header protection mask.
-
NGTCP2_HP_SAMPLELEN
NGTCP2_HP_SAMPLELENis the number bytes sampled when encrypting a packet header.
-
NGTCP2_DEFAULT_INITIAL_RTT
NGTCP2_DEFAULT_INITIAL_RTTis a default initial RTT.
-
NGTCP2_MAX_CIDLEN
NGTCP2_MAX_CIDLENis the maximum length of Connection ID.
-
NGTCP2_MIN_CIDLEN
NGTCP2_MIN_CIDLENis the minimum length of Connection ID.
-
NGTCP2_MIN_INITIAL_DCIDLEN
NGTCP2_MIN_INITIAL_DCIDLENis the minimum length of Destination Connection ID in Client Initial packet if it does not bear token from Retry packet.
ngtcp2 library error codes
-
NGTCP2_ERR_INVALID_ARGUMENT
NGTCP2_ERR_INVALID_ARGUMENTindicates that a passed argument is invalid.
-
NGTCP2_ERR_NOBUF
NGTCP2_ERR_NOBUFindicates that a provided buffer does not have enough space to store data.
-
NGTCP2_ERR_PROTO
NGTCP2_ERR_PROTOindicates a general protocol error.
-
NGTCP2_ERR_INVALID_STATE
NGTCP2_ERR_INVALID_STATEindicates that a requested operation is not allowed at the current connection state.
-
NGTCP2_ERR_ACK_FRAME
NGTCP2_ERR_ACK_FRAMEindicates that an invalid ACK frame is received.
-
NGTCP2_ERR_STREAM_ID_BLOCKED
NGTCP2_ERR_STREAM_ID_BLOCKEDindicates that there is no spare stream ID available.
-
NGTCP2_ERR_STREAM_IN_USE
NGTCP2_ERR_STREAM_IN_USEindicates that a stream ID is already in use.
-
NGTCP2_ERR_STREAM_DATA_BLOCKED
NGTCP2_ERR_STREAM_DATA_BLOCKEDindicates that stream data cannot be sent because of flow control.
-
NGTCP2_ERR_FLOW_CONTROL
NGTCP2_ERR_FLOW_CONTROLindicates flow control error.
-
NGTCP2_ERR_CONNECTION_ID_LIMIT
NGTCP2_ERR_CONNECTION_ID_LIMITindicates that the number of received Connection ID exceeds acceptable limit.
-
NGTCP2_ERR_STREAM_LIMIT
NGTCP2_ERR_STREAM_LIMITindicates that a remote endpoint opens more streams that is permitted.
-
NGTCP2_ERR_FINAL_SIZE
NGTCP2_ERR_FINAL_SIZEindicates that inconsistent final size of a stream.
-
NGTCP2_ERR_CRYPTO
NGTCP2_ERR_CRYPTOindicates crypto (TLS) related error.
-
NGTCP2_ERR_PKT_NUM_EXHAUSTED
NGTCP2_ERR_PKT_NUM_EXHAUSTEDindicates that packet number is exhausted.
-
NGTCP2_ERR_REQUIRED_TRANSPORT_PARAM
NGTCP2_ERR_REQUIRED_TRANSPORT_PARAMindicates that a required transport parameter is missing.
-
NGTCP2_ERR_MALFORMED_TRANSPORT_PARAM
NGTCP2_ERR_MALFORMED_TRANSPORT_PARAMindicates that a transport parameter is malformed.
-
NGTCP2_ERR_FRAME_ENCODING
NGTCP2_ERR_FRAME_ENCODINGindicates there is an error in frame encoding.
-
NGTCP2_ERR_DECRYPT
NGTCP2_ERR_DECRYPTindicates a decryption failure.
-
NGTCP2_ERR_STREAM_SHUT_WR
NGTCP2_ERR_STREAM_SHUT_WRindicates no more data can be sent to a stream.
-
NGTCP2_ERR_STREAM_NOT_FOUND
NGTCP2_ERR_STREAM_NOT_FOUNDindicates that a stream was not found.
-
NGTCP2_ERR_STREAM_STATE
NGTCP2_ERR_STREAM_STATEindicates that a requested operation is not allowed at the current stream state.
-
NGTCP2_ERR_RECV_VERSION_NEGOTIATION
NGTCP2_ERR_RECV_VERSION_NEGOTIATIONindicates that Version Negotiation packet was received.
-
NGTCP2_ERR_CLOSING
NGTCP2_ERR_CLOSINGindicates that connection is in closing state.
-
NGTCP2_ERR_DRAINING
NGTCP2_ERR_DRAININGindicates that connection is in draining state.
-
NGTCP2_ERR_TRANSPORT_PARAM
NGTCP2_ERR_TRANSPORT_PARAMindicates a general transport parameter error.
-
NGTCP2_ERR_DISCARD_PKT
NGTCP2_ERR_DISCARD_PKTindicates a packet was discarded.
-
NGTCP2_ERR_CONN_ID_BLOCKED
NGTCP2_ERR_CONN_ID_BLOCKEDindicates that there is no spare Connection ID available.
-
NGTCP2_ERR_INTERNAL
NGTCP2_ERR_INTERNALindicates an internal error.
-
NGTCP2_ERR_CRYPTO_BUFFER_EXCEEDED
NGTCP2_ERR_CRYPTO_BUFFER_EXCEEDEDindicates that a crypto buffer exceeded.
-
NGTCP2_ERR_WRITE_MORE
NGTCP2_ERR_WRITE_MOREindicatesNGTCP2_WRITE_STREAM_FLAG_MOREis used and a function call succeeded.
-
NGTCP2_ERR_RETRY
NGTCP2_ERR_RETRYindicates that server should send Retry packet.
-
NGTCP2_ERR_DROP_CONN
NGTCP2_ERR_DROP_CONNindicates that an endpoint should drop connection immediately.
-
NGTCP2_ERR_AEAD_LIMIT_REACHED
NGTCP2_ERR_AEAD_LIMIT_REACHEDindicates AEAD encryption limit is reached and key update is not available. An endpoint should drop connection immediately.
-
NGTCP2_ERR_NO_VIABLE_PATH
NGTCP2_ERR_NO_VIABLE_PATHindicates that path validation could not probe that a path is capable of sending UDP datagram payload of size at least 1200 bytes.
-
NGTCP2_ERR_VERSION_NEGOTIATION
NGTCP2_ERR_VERSION_NEGOTIATIONindicates that server should send Version Negotiation packet.
-
NGTCP2_ERR_HANDSHAKE_TIMEOUT
NGTCP2_ERR_HANDSHAKE_TIMEOUTindicates that QUIC connection is not established before the specified deadline.
-
NGTCP2_ERR_VERSION_NEGOTIATION_FAILURE
NGTCP2_ERR_VERSION_NEGOTIATION_FAILUREindicates the version negotiation failed.
-
NGTCP2_ERR_IDLE_CLOSE
NGTCP2_ERR_IDLE_CLOSEindicates the connection should be closed silently because of idle timeout.
-
NGTCP2_ERR_FATAL
NGTCP2_ERR_FATALindicates that error codes less than this value is fatal error. When this error is returned, an endpoint should close connection immediately.
-
NGTCP2_ERR_NOMEM
NGTCP2_ERR_NOMEMindicates out of memory.
-
NGTCP2_ERR_CALLBACK_FAILURE
NGTCP2_ERR_CALLBACK_FAILUREindicates that user defined callback function failed.
QUIC packet header flags
-
NGTCP2_PKT_FLAG_NONE
NGTCP2_PKT_FLAG_NONEindicates no flag set.
-
NGTCP2_PKT_FLAG_LONG_FORM
NGTCP2_PKT_FLAG_LONG_FORMindicates the Long header packet header.
-
NGTCP2_PKT_FLAG_FIXED_BIT_CLEAR
NGTCP2_PKT_FLAG_FIXED_BIT_CLEARindicates that Fixed Bit (aka QUIC bit) is not set.
-
NGTCP2_PKT_FLAG_KEY_PHASE
NGTCP2_PKT_FLAG_KEY_PHASEindicates Key Phase bit set.
QUIC transport error code
-
NGTCP2_NO_ERROR
NGTCP2_NO_ERRORis QUIC transport error codeNO_ERROR.
-
NGTCP2_INTERNAL_ERROR
NGTCP2_INTERNAL_ERRORis QUIC transport error codeINTERNAL_ERROR.
-
NGTCP2_CONNECTION_REFUSED
NGTCP2_CONNECTION_REFUSEDis QUIC transport error codeCONNECTION_REFUSED.
-
NGTCP2_FLOW_CONTROL_ERROR
NGTCP2_FLOW_CONTROL_ERRORis QUIC transport error codeFLOW_CONTROL_ERROR.
-
NGTCP2_STREAM_LIMIT_ERROR
NGTCP2_STREAM_LIMIT_ERRORis QUIC transport error codeSTREAM_LIMIT_ERROR.
-
NGTCP2_STREAM_STATE_ERROR
NGTCP2_STREAM_STATE_ERRORis QUIC transport error codeSTREAM_STATE_ERROR.
-
NGTCP2_FINAL_SIZE_ERROR
NGTCP2_FINAL_SIZE_ERRORis QUIC transport error codeFINAL_SIZE_ERROR.
-
NGTCP2_FRAME_ENCODING_ERROR
NGTCP2_FRAME_ENCODING_ERRORis QUIC transport error codeFRAME_ENCODING_ERROR.
-
NGTCP2_TRANSPORT_PARAMETER_ERROR
NGTCP2_TRANSPORT_PARAMETER_ERRORis QUIC transport error codeTRANSPORT_PARAMETER_ERROR.
-
NGTCP2_CONNECTION_ID_LIMIT_ERROR
NGTCP2_CONNECTION_ID_LIMIT_ERRORis QUIC transport error codeCONNECTION_ID_LIMIT_ERROR.
-
NGTCP2_PROTOCOL_VIOLATION
NGTCP2_PROTOCOL_VIOLATIONis QUIC transport error codePROTOCOL_VIOLATION.
-
NGTCP2_INVALID_TOKEN
NGTCP2_INVALID_TOKENis QUIC transport error codeINVALID_TOKEN.
-
NGTCP2_APPLICATION_ERROR
NGTCP2_APPLICATION_ERRORis QUIC transport error codeAPPLICATION_ERROR.
-
NGTCP2_CRYPTO_BUFFER_EXCEEDED
NGTCP2_CRYPTO_BUFFER_EXCEEDEDis QUIC transport error codeCRYPTO_BUFFER_EXCEEDED.
-
NGTCP2_KEY_UPDATE_ERROR
NGTCP2_KEY_UPDATE_ERRORis QUIC transport error codeKEY_UPDATE_ERROR.
-
NGTCP2_AEAD_LIMIT_REACHED
NGTCP2_AEAD_LIMIT_REACHEDis QUIC transport error codeAEAD_LIMIT_REACHED.
-
NGTCP2_NO_VIABLE_PATH
NGTCP2_NO_VIABLE_PATHis QUIC transport error codeNO_VIABLE_PATH.
-
NGTCP2_CRYPTO_ERROR
NGTCP2_CRYPTO_ERRORis QUIC transport error codeCRYPTO_ERROR.
-
NGTCP2_VERSION_NEGOTIATION_ERROR
NGTCP2_VERSION_NEGOTIATION_ERRORis QUIC transport error codeVERSION_NEGOTIATION_ERROR. See RFC 9368.
STREAM frame data flags
-
NGTCP2_STREAM_DATA_FLAG_NONE
NGTCP2_STREAM_DATA_FLAG_NONEindicates no flag set.
-
NGTCP2_STREAM_DATA_FLAG_FIN
NGTCP2_STREAM_DATA_FLAG_FINindicates that this chunk of data is final piece of an incoming stream.
-
NGTCP2_STREAM_DATA_FLAG_0RTT
NGTCP2_STREAM_DATA_FLAG_0RTTindicates that this chunk of data contains data received in 0-RTT packet, and the handshake has not completed yet, which means that the data might be replayed.
Stream close flags
-
NGTCP2_STREAM_CLOSE_FLAG_NONE
NGTCP2_STREAM_CLOSE_FLAG_NONEindicates no flag set.
-
NGTCP2_STREAM_CLOSE_FLAG_APP_ERROR_CODE_SET
NGTCP2_STREAM_CLOSE_FLAG_APP_ERROR_CODE_SETindicates that app_error_code parameter is set.
DATAGRAM frame flags
-
NGTCP2_DATAGRAM_FLAG_NONE
NGTCP2_DATAGRAM_FLAG_NONEindicates no flag set.
-
NGTCP2_DATAGRAM_FLAG_0RTT
NGTCP2_DATAGRAM_FLAG_0RTTindicates that DATAGRAM frame is received in 0-RTT packet, and the handshake has not completed yet, which means that the data might be replayed.
Write stream data flags
-
NGTCP2_WRITE_STREAM_FLAG_NONE
NGTCP2_WRITE_STREAM_FLAG_NONEindicates no flag set.
-
NGTCP2_WRITE_STREAM_FLAG_MORE
NGTCP2_WRITE_STREAM_FLAG_MOREindicates that more data may come, and should be coalesced into the same packet if possible.
-
NGTCP2_WRITE_STREAM_FLAG_FIN
NGTCP2_WRITE_STREAM_FLAG_FINindicates that a passed data is the final part of a stream.
-
NGTCP2_WRITE_STREAM_FLAG_PADDING
NGTCP2_WRITE_STREAM_FLAG_PADDINGindicates that a non-empty 0 RTT or 1 RTT ack-eliciting packet is padded to the minimum length of a sending path MTU or a given packet buffer when finalizing it. PATH_CHALLENGE, PATH_RESPONSE, CONNECTION_CLOSE only packets and PMTUD packets are excluded.
Write datagram flags
-
NGTCP2_WRITE_DATAGRAM_FLAG_NONE
NGTCP2_WRITE_DATAGRAM_FLAG_NONEindicates no flag set.
-
NGTCP2_WRITE_DATAGRAM_FLAG_MORE
NGTCP2_WRITE_DATAGRAM_FLAG_MOREindicates that more data may come, and should be coalesced into the same packet if possible.
-
NGTCP2_WRITE_DATAGRAM_FLAG_PADDING
NGTCP2_WRITE_DATAGRAM_FLAG_PADDINGindicates that a non-empty 0 RTT or 1 RTT ack-eliciting packet is padded to the minimum length of a sending path MTU or a given packet buffer when finalizing it. PATH_CHALLENGE, PATH_RESPONSE, CONNECTION_CLOSE only packets and PMTUD packets are excluded.
ngtcp2_info macros
-
NGTCP2_VERSION_AGE
NGTCP2_VERSION_AGEis the age ofngtcp2_info