Packages
hackney
3.0.1
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/lsquic/src/liblsquic/lsquic_parse_common.h
/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
/*
* lsquic_parse_common.h
*/
#ifndef LSQUIC_PARSE_COMMON_H
#define LSQUIC_PARSE_COMMON_H 1
#ifdef WIN32
#include "vc_compat.h"
#endif
struct lsquic_packet_in;
struct packin_parse_state;
struct packin_parse_state {
const unsigned char *pps_p; /* Pointer to packet number */
unsigned pps_nbytes; /* Number of bytes in packet number */
};
int
lsquic_parse_packet_in_begin (struct lsquic_packet_in *,
size_t length, int is_server, unsigned cid_len,
struct packin_parse_state *);
int
lsquic_parse_packet_in_server_begin (struct lsquic_packet_in *packet_in,
size_t length, int is_server_UNUSED, unsigned cid_len,
struct packin_parse_state *);
int
lsquic_ietf_v1_parse_packet_in_begin (struct lsquic_packet_in *,
size_t length, int is_server, unsigned cid_len,
struct packin_parse_state *);
int
lsquic_Q046_parse_packet_in_begin (struct lsquic_packet_in *,
size_t length, int is_server, unsigned cid_len,
struct packin_parse_state *);
int
lsquic_Q050_parse_packet_in_begin (struct lsquic_packet_in *,
size_t length, int is_server, unsigned cid_len,
struct packin_parse_state *);
int
lsquic_ietf_v1_parse_packet_in_long_begin (struct lsquic_packet_in *,
size_t length, int is_server, unsigned cid_len,
struct packin_parse_state *);
int
lsquic_ietf_v1_parse_packet_in_short_begin (struct lsquic_packet_in *,
size_t length, int is_server, unsigned cid_len,
struct packin_parse_state *);
struct sockaddr;
enum lsquic_version;
struct lsquic_engine_public;
int
lsquic_gquic_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz,
const lsquic_cid_t *cid, unsigned versions);
int
lsquic_Q046_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz,
const lsquic_cid_t *scid, const lsquic_cid_t *dcid, unsigned versions,
uint8_t);
int
lsquic_ietf_v1_gen_ver_nego_pkt (unsigned char *buf, size_t bufsz,
const lsquic_cid_t *scid, const lsquic_cid_t *dcid, unsigned versions,
uint8_t);
int
lsquic_iquic_gen_retry_pkt (unsigned char *buf, size_t bufsz,
const struct lsquic_engine_public *, const lsquic_cid_t *scid,
const lsquic_cid_t *dcid, enum lsquic_version, const struct sockaddr *,
uint8_t random_nybble);
#define GQUIC_RESET_SZ 33
ssize_t
lsquic_generate_gquic_reset (const lsquic_cid_t *, unsigned char *buf,
size_t buf_sz);
int
lsquic_is_valid_iquic_hs_packet (const unsigned char *buf, size_t buf_sz,
lsquic_ver_tag_t *tag);
int
lsquic_is_valid_ietf_v1_or_Q046plus_hs_packet (const unsigned char *buf,
size_t length, lsquic_ver_tag_t *tagp);
/* Instead of just -1 like CHECK_SPACE(), this macro returns the number
* of bytes needed.
*/
#define CHECK_STREAM_SPACE(need, pstart, pend) do { \
if ((intptr_t) (need) > ((pend) - (pstart))) { \
return -((int) (need)); \
} \
} while (0)
#endif