typedef struct v3_channel {
uint16_t id;
uint16_t parent;
uint8_t unknown_1;
uint8_t password_protected; // this only defines whether or not a password string is set
// see protect_mode below
uint16_t unknown_2;
uint16_t allow_recording;
uint16_t allow_cross_channel_transmit;
uint16_t allow_paging;
uint16_t allow_wave_file_binds;
uint16_t allow_tts_binds;
uint16_t allow_u2u_transmit;
uint16_t disable_guest_transmit;
uint16_t disable_sound_events;
uint16_t voice_mode;
uint16_t transmit_time_limit;
uint16_t allow_phantoms;
uint16_t max_clients;
uint16_t allow_guests;
uint16_t inactive_exempt;
uint16_t protect_mode; // 0 if anyone can join
// 1 if password protected
// 2 if it requires user authorization
uint16_t transmit_rank_level;
uint16_t channel_codec; // -1 (65535) for server default
uint16_t channel_format; // -1 (65535) for server default
uint16_t allow_voice_target;
uint16_t allow_command_target;
char *name;
char *phonetic;
char *comment;
void *next; // used internally, will always be NULL when returned by v3_get_channel()
} v3_channel;