Diff for /embedaddon/iperf/src/iperf.h between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2021/03/17 00:36:46 version 1.1.1.3, 2023/09/27 11:14:54
Line 39 Line 39
 #ifndef _GNU_SOURCE  #ifndef _GNU_SOURCE
 # define _GNU_SOURCE  # define _GNU_SOURCE
 #endif  #endif
   #ifdef HAVE_LINUX_TCP_H
   #include <linux/tcp.h>
   #else
 #include <netinet/tcp.h>  #include <netinet/tcp.h>
   #endif
   #include <net/if.h> // for IFNAMSIZ
   
 #if defined(HAVE_CPUSET_SETAFFINITY)  #if defined(HAVE_CPUSET_SETAFFINITY)
 #include <sys/param.h>  #include <sys/param.h>
Line 74  typedef uint64_t iperf_size_t; Line 79  typedef uint64_t iperf_size_t;
   
 struct iperf_interval_results  struct iperf_interval_results
 {  {
    iperf_size_t bytes_transferred; /* bytes transfered in this interval */    iperf_size_t bytes_transferred; /* bytes transferred in this interval */
     struct iperf_time interval_start_time;      struct iperf_time interval_start_time;
     struct iperf_time interval_end_time;      struct iperf_time interval_end_time;
     float     interval_duration;      float     interval_duration;
   
     /* for UDP */      /* for UDP */
    int       interval_packet_count;    int64_t   interval_packet_count;
    int       interval_outoforder_packets;    int64_t   interval_outoforder_packets;
    int       interval_cnt_error;    int64_t   interval_cnt_error;
    int       packet_count;    int64_t   packet_count;
     double    jitter;      double    jitter;
    int       outoforder_packets;    int64_t   outoforder_packets;
    int       cnt_error;    int64_t   cnt_error;
   
     int omitted;      int omitted;
#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__)) && \#if (defined(linux) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)) && \
         defined(TCP_INFO)          defined(TCP_INFO)
    struct tcp_info tcpInfo; /* getsockopt(TCP_INFO) for Linux, {Free,Net}BSD */    struct tcp_info tcpInfo; /* getsockopt(TCP_INFO) for Linux, {Free,Net,Open}BSD */
 #else  #else
     /* Just placeholders, never accessed. */      /* Just placeholders, never accessed. */
     char *tcpInfo;      char *tcpInfo;
 #endif  #endif
    int interval_retrans;    long interval_retrans;
    int interval_sacks;    long snd_cwnd;
    int snd_cwnd;    long snd_wnd;
     TAILQ_ENTRY(iperf_interval_results) irlistentries;      TAILQ_ENTRY(iperf_interval_results) irlistentries;
     void     *custom_data;      void     *custom_data;
    int rtt;    long rtt;
    int rttvar;    long rttvar;
    int pmtu;    long pmtu;
 };  };
   
 struct iperf_stream_result  struct iperf_stream_result
Line 113  struct iperf_stream_result Line 118  struct iperf_stream_result
     iperf_size_t bytes_received_this_interval;      iperf_size_t bytes_received_this_interval;
     iperf_size_t bytes_sent_this_interval;      iperf_size_t bytes_sent_this_interval;
     iperf_size_t bytes_sent_omit;      iperf_size_t bytes_sent_omit;
    int stream_prev_total_retrans;    long stream_prev_total_retrans;
    int stream_retrans;    long stream_retrans;
    int stream_prev_total_sacks;    long stream_max_rtt;
    int stream_sacks;    long stream_min_rtt;
    int stream_max_rtt;    long stream_sum_rtt;
    int stream_min_rtt; 
    int stream_sum_rtt; 
     int stream_count_rtt;      int stream_count_rtt;
    int stream_max_snd_cwnd;    long stream_max_snd_cwnd;
     long stream_max_snd_wnd;
     struct iperf_time start_time;      struct iperf_time start_time;
     struct iperf_time end_time;      struct iperf_time end_time;
     struct iperf_time start_time_fixed;      struct iperf_time start_time_fixed;
Line 139  struct iperf_settings Line 143  struct iperf_settings
     int       blksize;              /* size of read/writes (-l) */      int       blksize;              /* size of read/writes (-l) */
     iperf_size_t  rate;                 /* target data rate for application pacing*/      iperf_size_t  rate;                 /* target data rate for application pacing*/
     iperf_size_t  bitrate_limit;   /* server's maximum allowed total data rate for all streams*/      iperf_size_t  bitrate_limit;   /* server's maximum allowed total data rate for all streams*/
    double        bitrate_limit_interval;  /* interval for avaraging total data rate */    double        bitrate_limit_interval;  /* interval for averaging total data rate */
     int           bitrate_limit_stats_per_interval;     /* calculated number of stats periods for averaging total data rate */      int           bitrate_limit_stats_per_interval;     /* calculated number of stats periods for averaging total data rate */
     uint64_t  fqrate;               /* target data rate for FQ pacing*/      uint64_t  fqrate;               /* target data rate for FQ pacing*/
     int       pacing_timer;         /* pacing timer in microseconds */      int       pacing_timer;         /* pacing timer in microseconds */
Line 152  struct iperf_settings Line 156  struct iperf_settings
     iperf_size_t blocks;            /* number of blocks (packets) to send */      iperf_size_t blocks;            /* number of blocks (packets) to send */
     char      unit_format;          /* -f */      char      unit_format;          /* -f */
     int       num_ostreams;         /* SCTP initmsg settings */      int       num_ostreams;         /* SCTP initmsg settings */
       int       dont_fragment;        /* Whether to set IP flag Do-Not_Fragment */
 #if defined(HAVE_SSL)  #if defined(HAVE_SSL)
     char      *authtoken;           /* Authentication token */      char      *authtoken;           /* Authentication token */
     char      *client_username;      char      *client_username;
Line 159  struct iperf_settings Line 164  struct iperf_settings
     EVP_PKEY  *client_rsa_pubkey;      EVP_PKEY  *client_rsa_pubkey;
 #endif // HAVE_SSL  #endif // HAVE_SSL
     int       connect_timeout;      /* socket connection timeout, in ms */      int       connect_timeout;      /* socket connection timeout, in ms */
       int       idle_timeout;         /* server idle time timeout */
       unsigned int snd_timeout; /* Timeout for sending tcp messages in active mode, in us */
       struct iperf_time rcv_timeout;  /* Timeout for receiving messages in active mode, in us */
 };  };
   
 struct iperf_test;  struct iperf_test;
Line 173  struct iperf_stream Line 181  struct iperf_stream
     int       socket;      int       socket;
     int       id;      int       id;
     int       sender;      int       sender;
        /* XXX: is settings just a pointer to the same struct in iperf_test? if not,         /* XXX: is settings just a pointer to the same struct in iperf_test? if not,
                 should it be? */                  should it be? */
     struct iperf_settings *settings;    /* pointer to structure settings */      struct iperf_settings *settings;    /* pointer to structure settings */
   
Line 183  struct iperf_stream Line 191  struct iperf_stream
     int       green_light;      int       green_light;
     int       buffer_fd;        /* data to send, file descriptor */      int       buffer_fd;        /* data to send, file descriptor */
     char      *buffer;          /* data to send, mmapped */      char      *buffer;          /* data to send, mmapped */
       int       pending_size;     /* pending data to send */
     int       diskfile_fd;      /* file to send, file descriptor */      int       diskfile_fd;      /* file to send, file descriptor */
     int       diskfile_left;    /* remaining file data on disk */      int       diskfile_left;    /* remaining file data on disk */
   
Line 190  struct iperf_stream Line 199  struct iperf_stream
      * for udp measurements - This can be a structure outside stream, and       * for udp measurements - This can be a structure outside stream, and
      * stream can have a pointer to this       * stream can have a pointer to this
      */       */
    int       packet_count;    int64_t   packet_count;
    int       peer_packet_count;    int64_t   peer_packet_count;
    int       omitted_packet_count;    int64_t   peer_omitted_packet_count;
     int64_t   omitted_packet_count;
     double    jitter;      double    jitter;
     double    prev_transit;      double    prev_transit;
    int       outoforder_packets;    int64_t   outoforder_packets;
    int       omitted_outoforder_packets;    int64_t   omitted_outoforder_packets;
    int       cnt_error;    int64_t   cnt_error;
    int       omitted_cnt_error;    int64_t   omitted_cnt_error;
     uint64_t  target;      uint64_t  target;
   
     struct sockaddr_storage local_addr;      struct sockaddr_storage local_addr;
Line 246  enum iperf_mode { Line 256  enum iperf_mode {
         BIDIRECTIONAL = -1          BIDIRECTIONAL = -1
 };  };
   
   enum debug_level {
       DEBUG_LEVEL_ERROR = 1,
       DEBUG_LEVEL_WARN = 2,
       DEBUG_LEVEL_INFO = 3,
       DEBUG_LEVEL_DEBUG = 4,
       DEBUG_LEVEL_MAX = 4
   };
   
   
 struct iperf_test  struct iperf_test
 {  {
     char      role;                             /* 'c' lient or 's' erver */      char      role;                             /* 'c' lient or 's' erver */
Line 257  struct iperf_test Line 276  struct iperf_test
     char     *server_hostname;                  /* -c option */      char     *server_hostname;                  /* -c option */
     char     *tmp_template;      char     *tmp_template;
     char     *bind_address;                     /* first -B option */      char     *bind_address;                     /* first -B option */
       char     *bind_dev;                         /* bind to network device */
     TAILQ_HEAD(xbind_addrhead, xbind_entry) xbind_addrs; /* all -X opts */      TAILQ_HEAD(xbind_addrhead, xbind_entry) xbind_addrs; /* all -X opts */
     int       bind_port;                        /* --cport option */      int       bind_port;                        /* --cport option */
     int       server_port;      int       server_port;
Line 278  struct iperf_test Line 298  struct iperf_test
     FILE     *outfile;      FILE     *outfile;
   
     int       ctrl_sck;      int       ctrl_sck;
       int       mapped_v4;
     int       listener;      int       listener;
     int       prot_listener;      int       prot_listener;
   
Line 286  struct iperf_test Line 307  struct iperf_test
 #if defined(HAVE_SSL)  #if defined(HAVE_SSL)
     char      *server_authorized_users;      char      *server_authorized_users;
     EVP_PKEY  *server_rsa_private_key;      EVP_PKEY  *server_rsa_private_key;
       int       server_skew_threshold;
 #endif // HAVE_SSL  #endif // HAVE_SSL
   
     /* boolean variables for Options */      /* boolean variables for Options */
Line 298  struct iperf_test Line 320  struct iperf_test
     int       json_output;                      /* -J option - JSON output */      int       json_output;                      /* -J option - JSON output */
     int       zerocopy;                         /* -Z option - use sendfile */      int       zerocopy;                         /* -Z option - use sendfile */
     int       debug;                            /* -d option - enable debug */      int       debug;                            /* -d option - enable debug */
       enum      debug_level debug_level;          /* -d option option - level of debug messages to show */
     int       get_server_output;                /* --get-server-output */      int       get_server_output;                /* --get-server-output */
     int       udp_counters_64bit;               /* --use-64-bit-udp-counters */      int       udp_counters_64bit;               /* --use-64-bit-udp-counters */
     int       forceflush; /* --forceflush - flushing output at every interval */      int       forceflush; /* --forceflush - flushing output at every interval */
Line 312  struct iperf_test Line 335  struct iperf_test
     fd_set    read_set;                         /* set of read sockets */      fd_set    read_set;                         /* set of read sockets */
     fd_set    write_set;                        /* set of write sockets */      fd_set    write_set;                        /* set of write sockets */
   
    /* Interval related members */     /* Interval related members */
     int       omitting;      int       omitting;
     double    stats_interval;      double    stats_interval;
     double    reporter_interval;      double    reporter_interval;
Line 337  struct iperf_test Line 360  struct iperf_test
   
     iperf_size_t bitrate_limit_stats_count;               /* Number of stats periods accumulated for server's total bitrate average */      iperf_size_t bitrate_limit_stats_count;               /* Number of stats periods accumulated for server's total bitrate average */
     iperf_size_t *bitrate_limit_intervals_traffic_bytes;  /* Pointer to a cyclic array that includes the last interval's bytes transferred */      iperf_size_t *bitrate_limit_intervals_traffic_bytes;  /* Pointer to a cyclic array that includes the last interval's bytes transferred */
    iperf_size_t bitrate_limit_last_interval_index;       /* Index of the last interval traffic insrted into the cyclic array */    iperf_size_t bitrate_limit_last_interval_index;       /* Index of the last interval traffic inserted into the cyclic array */
     int          bitrate_limit_exceeded;                  /* Set by callback routine when average data rate exceeded the server's bitrate limit */      int          bitrate_limit_exceeded;                  /* Set by callback routine when average data rate exceeded the server's bitrate limit */
   
       int server_last_run_rc;                      /* Save last server run rc for next test */
       uint server_forced_idle_restarts_count;      /* count number of forced server restarts to make sure it is not stack */
       uint server_forced_no_msg_restarts_count;    /* count number of forced server restarts to make sure it is not stack */
       uint server_test_number;                     /* count number of tests performed by a server */
   
     char      cookie[COOKIE_SIZE];      char      cookie[COOKIE_SIZE];
 //    struct iperf_stream *streams;               /* pointer to list of struct stream */  //    struct iperf_stream *streams;               /* pointer to list of struct stream */
     SLIST_HEAD(slisthead, iperf_stream) streams;      SLIST_HEAD(slisthead, iperf_stream) streams;
Line 372  struct iperf_test Line 400  struct iperf_test
 /* default settings */  /* default settings */
 #define PORT 5201  /* default port to listen on (don't use the same port as iperf2) */  #define PORT 5201  /* default port to listen on (don't use the same port as iperf2) */
 #define uS_TO_NS 1000  #define uS_TO_NS 1000
   #define mS_TO_US 1000
   #define SEC_TO_mS 1000
 #define SEC_TO_US 1000000LL  #define SEC_TO_US 1000000LL
 #define UDP_RATE (1024 * 1024) /* 1 Mbps */  #define UDP_RATE (1024 * 1024) /* 1 Mbps */
 #define OMIT 0 /* seconds */  #define OMIT 0 /* seconds */
Line 400  struct iperf_test Line 430  struct iperf_test
 #define TIMESTAMP_FORMAT "%c "  #define TIMESTAMP_FORMAT "%c "
   
 extern int gerror; /* error value from getaddrinfo(3), for use in internal error handling */  extern int gerror; /* error value from getaddrinfo(3), for use in internal error handling */
   
   /* UDP "connect" message and reply (textual value for Wireshark, etc. readability - legacy was numeric) */
   #define UDP_CONNECT_MSG 0x36373839          // "6789" - legacy value was 123456789
   #define UDP_CONNECT_REPLY 0x39383736        // "9876" - legacy value was 987654321
   #define LEGACY_UDP_CONNECT_REPLY 987654321  // Old servers may still reply with the legacy value
   
   /* In Reverse mode, maximum number of packets to wait for "accept" response - to handle out of order packets */
   #define MAX_REVERSE_OUT_OF_ORDER_PACKETS 2
   
 #endif /* !__IPERF_H */  #endif /* !__IPERF_H */

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>