/* * Copyright (C) 2019 iopsys Software Solutions AB * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation * * Author: Amin Ben Ramdhane * */ #ifndef __DMDIAGNOSTICS_H__ #define __DMDIAGNOSTICS_H__ #include #define DOWNLOAD_UPLOAD_PROTOCOL_HTTP "http://" #define DOWNLOAD_UPLOAD_PROTOCOL_FTP "ftp://" #define default_date_format "AAAA-MM-JJTHH:MM:SS.000000Z" #define default_date_size sizeof(default_date_format) + 1 #define FTP_SIZE_RESPONSE "213" #define FTP_PASV_RESPONSE "227 Entering Passive" #define FTP_TRANSFERT_COMPLETE "226 Transfer" #define FTP_RETR_REQUEST "RETR" #define FTP_STOR_REQUEST "STOR" struct download_diag { char romtime[default_date_size]; char bomtime[default_date_size]; char eomtime[default_date_size]; int test_bytes_received; unsigned long total_bytes_received; char tcpopenrequesttime[default_date_size]; char tcpopenresponsetime[default_date_size]; int tmp; int first_data; uint16_t ip_len; uint32_t ack_seq; uint32_t random_seq; uint32_t get_ack; uint32_t ftp_syn; }; struct upload_diagnostic_stats { char romtime[default_date_size]; char bomtime[default_date_size]; char eomtime[default_date_size]; unsigned long total_bytes_sent; char tcpopenrequesttime[default_date_size]; char tcpopenresponsetime[default_date_size]; int tmp; int first_data; uint16_t ip_len; uint32_t ack_seq; uint32_t random_seq; uint32_t get_ack; uint32_t ftp_syn; }; enum download_diagnostic_protocol { DOWNLOAD_DIAGNOSTIC_HTTP = 1, DOWNLOAD_DIAGNOSTIC_FTP }; enum diagnostic_type { DOWNLOAD_DIAGNOSTIC = 1, UPLOAD_DIAGNOSTIC }; char *get_param_diagnostics(char *diag, char *option); void set_param_diagnostics(char *diag, char *option, char *value); void init_download_stats(void); void init_upload_stats(void); int extract_stats(char *dump_file, int proto, int diagnostic_type, char *protocol); int get_default_gateway_device( char **gw ); int start_upload_download_diagnostic(int diagnostic_type); #endif