#ifndef TRUNNEL_CHANNELPADDING_NEGOTIATION_H
#define TRUNNEL_CHANNELPADDING_NEGOTIATION_H
#include <stdint.h>
#include "trunnel.h"
#define CHANNELPADDING_COMMAND_STOP 1
#define CHANNELPADDING_COMMAND_START 2
#if !defined(TRUNNEL_OPAQUE) && !defined(TRUNNEL_OPAQUE_CHANNELPADDING_NEGOTIATE)
struct channelpadding_negotiate_st {
uint8_t version;
uint8_t command;
uint16_t ito_low_ms;
uint16_t ito_high_ms;
uint8_t trunnel_error_code_;
};
#endif
typedef struct channelpadding_negotiate_st channelpadding_negotiate_t;
channelpadding_negotiate_t *channelpadding_negotiate_new(void);
void channelpadding_negotiate_free(channelpadding_negotiate_t *victim);
ssize_t channelpadding_negotiate_parse(channelpadding_negotiate_t **output, const uint8_t *input, const size_t len_in);
ssize_t channelpadding_negotiate_encoded_len(const channelpadding_negotiate_t *obj);
ssize_t channelpadding_negotiate_encode(uint8_t *output, size_t avail, const channelpadding_negotiate_t *input);
const char *channelpadding_negotiate_check(const channelpadding_negotiate_t *obj);
int channelpadding_negotiate_clear_errors(channelpadding_negotiate_t *obj);
uint8_t channelpadding_negotiate_get_version(const channelpadding_negotiate_t *inp);
int channelpadding_negotiate_set_version(channelpadding_negotiate_t *inp, uint8_t val);
uint8_t channelpadding_negotiate_get_command(const channelpadding_negotiate_t *inp);
int channelpadding_negotiate_set_command(channelpadding_negotiate_t *inp, uint8_t val);
uint16_t channelpadding_negotiate_get_ito_low_ms(const channelpadding_negotiate_t *inp);
int channelpadding_negotiate_set_ito_low_ms(channelpadding_negotiate_t *inp, uint16_t val);
uint16_t channelpadding_negotiate_get_ito_high_ms(const channelpadding_negotiate_t *inp);
int channelpadding_negotiate_set_ito_high_ms(channelpadding_negotiate_t *inp, uint16_t val);
#endif