#ifndef TRUNNEL_CONGESTION_CONTROL_H
#define TRUNNEL_CONGESTION_CONTROL_H
#include <stdint.h>
#include "trunnel.h"
#define TRUNNEL_EXT_TYPE_CC_FIELD_REQUEST 1
#define TRUNNEL_EXT_TYPE_CC_FIELD_RESPONSE 2
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_TRN_EXTENSION_FIELD_CC)
struct trn_extension_field_cc_st {
uint8_t sendme_inc;
uint8_t trunnel_error_code_;
};
#endif
typedef struct trn_extension_field_cc_st trn_extension_field_cc_t;
trn_extension_field_cc_t *trn_extension_field_cc_new(void);
void trn_extension_field_cc_free(trn_extension_field_cc_t *victim);
ssize_t trn_extension_field_cc_parse(trn_extension_field_cc_t **output, const uint8_t *input, const size_t len_in);
ssize_t trn_extension_field_cc_encoded_len(const trn_extension_field_cc_t *obj);
ssize_t trn_extension_field_cc_encode(uint8_t *output, size_t avail, const trn_extension_field_cc_t *input);
const char *trn_extension_field_cc_check(const trn_extension_field_cc_t *obj);
int trn_extension_field_cc_clear_errors(trn_extension_field_cc_t *obj);
uint8_t trn_extension_field_cc_get_sendme_inc(const trn_extension_field_cc_t *inp);
int trn_extension_field_cc_set_sendme_inc(trn_extension_field_cc_t *inp, uint8_t val);
#endif