/*
 * misc.h
 *
 *  Created on: Oct 26, 2017
 *      Author: root
 */

#ifndef MISC_H_
#define MISC_H_

#include "common.h"
#include "connection.h"
#include "fd_manager.h"
#include "delay_manager.h"
#include "fec_manager.h"



extern char fifo_file[1000];

extern int mtu_warn;

extern int disable_mtu_warn;
extern int disable_fec;
extern int disable_checksum;

extern int debug_force_flush_fec;


extern int jitter_min;
extern int jitter_max;

extern int output_interval_min;
extern int output_interval_max;

extern int fix_latency;

//extern u32_t local_ip_uint32,remote_ip_uint32;
//extern char local_ip[100], remote_ip[100];
//extern int local_port, remote_port;


extern address_t local_addr,remote_addr;

extern address_t *out_addr;
extern char *out_interface;

extern conn_manager_t conn_manager;
extern delay_manager_t delay_manager;
extern fd_manager_t fd_manager;

extern int time_mono_test;

extern int delay_capacity;

extern int keep_reconnect;

extern int tun_mtu;

extern int mssfix;

extern int manual_set_tun;
extern int persist_tun;


int from_normal_to_fec(conn_info_t & conn_info,char *data,int len,int & out_n,char **&out_arr,int *&out_len,my_time_t *&out_delay);
int from_fec_to_normal(conn_info_t & conn_info,char *data,int len,int & out_n,char **&out_arr,int *&out_len,my_time_t *&out_delay);

int delay_send(my_time_t delay,const dest_t &dest,char *data,int len);
int print_parameter();
int handle_command(char *s);

int unit_test();

//void print_help();

void process_arg(int argc, char *argv[]);

extern char sub_net[100];
extern u32_t sub_net_uint32;
extern char tun_dev[100];

#endif /* MISC_H_ */