lsquic_parse_common.h revision 14e3680d
19626cfc2SDmitri Tikhonov/* Copyright (c) 2017 - 2018 LiteSpeed Technologies Inc. See LICENSE. */ 29626cfc2SDmitri Tikhonov/* 39626cfc2SDmitri Tikhonov * lsquic_parse_common.h 49626cfc2SDmitri Tikhonov */ 59626cfc2SDmitri Tikhonov 69626cfc2SDmitri Tikhonov#ifndef LSQUIC_PARSE_COMMON_H 79626cfc2SDmitri Tikhonov#define LSQUIC_PARSE_COMMON_H 1 89626cfc2SDmitri Tikhonov 99626cfc2SDmitri Tikhonovstruct lsquic_packet_in; 109626cfc2SDmitri Tikhonov 119626cfc2SDmitri Tikhonovstruct packin_parse_state { 129626cfc2SDmitri Tikhonov const unsigned char *pps_p; /* Pointer to packet number */ 139626cfc2SDmitri Tikhonov unsigned pps_nbytes; /* Number of bytes in packet number */ 149626cfc2SDmitri Tikhonov}; 159626cfc2SDmitri Tikhonov 169626cfc2SDmitri Tikhonovint 179626cfc2SDmitri Tikhonovlsquic_parse_packet_in_begin (struct lsquic_packet_in *, 189626cfc2SDmitri Tikhonov size_t length, int is_server, struct packin_parse_state *); 199626cfc2SDmitri Tikhonov 209626cfc2SDmitri Tikhonovint 219626cfc2SDmitri Tikhonovlsquic_iquic_parse_packet_in_begin (struct lsquic_packet_in *, 229626cfc2SDmitri Tikhonov size_t length, int is_server, struct packin_parse_state *); 239626cfc2SDmitri Tikhonov 2414e3680dSDmitri Tikhonov/* Instead of just -1 like CHECK_SPACE(), this macro returns the number 2514e3680dSDmitri Tikhonov * of bytes needed. 2614e3680dSDmitri Tikhonov */ 2714e3680dSDmitri Tikhonov#define CHECK_STREAM_SPACE(need, pstart, pend) do { \ 2814e3680dSDmitri Tikhonov if ((intptr_t) (need) > ((pend) - (pstart))) { \ 2914e3680dSDmitri Tikhonov return -((int) (need)); \ 3014e3680dSDmitri Tikhonov } \ 3114e3680dSDmitri Tikhonov} while (0) 3214e3680dSDmitri Tikhonov 339626cfc2SDmitri Tikhonov#endif 34