1 /*---------------------------------------------------------------
2  * Copyright (c) 1999,2000,2001,2002,2003
3  * The Board of Trustees of the University of Illinois
4  * All Rights Reserved.
5  *---------------------------------------------------------------
6  * Permission is hereby granted, free of charge, to any person
7  * obtaining a copy of this software (Iperf) and associated
8  * documentation files (the "Software"), to deal in the Software
9  * without restriction, including without limitation the
10  * rights to use, copy, modify, merge, publish, distribute,
11  * sublicense, and/or sell copies of the Software, and to permit
12  * persons to whom the Software is furnished to do
13  * so, subject to the following conditions:
14  *
15  *
16  * Redistributions of source code must retain the above
17  * copyright notice, this list of conditions and
18  * the following disclaimers.
19  *
20  *
21  * Redistributions in binary form must reproduce the above
22  * copyright notice, this list of conditions and the following
23  * disclaimers in the documentation and/or other materials
24  * provided with the distribution.
25  *
26  *
27  * Neither the names of the University of Illinois, NCSA,
28  * nor the names of its contributors may be used to endorse
29  * or promote products derived from this Software without
30  * specific prior written permission.
31  *
32  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
33  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
34  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
35  * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTIBUTORS OR COPYRIGHT
36  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
38  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE
39  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
40  * ________________________________________________________________
41  * National Laboratory for Applied Network Research
42  * National Center for Supercomputing Applications
43  * University of Illinois at Urbana-Champaign
44  * http://www.ncsa.uiuc.edu
45  * ________________________________________________________________
46  *
47  * List.h
48  * by Kevin Gibbs <kgibbs@ncsa.uiuc.edu>
49  *
50  * renamed to active_hosts.h
51  * -------------------------------------------------------------------
52  */
53 
54 #ifndef Iperf_LIST_H
55 #define Iperf_LIST_H
56 
57 #include "headers.h"
58 #include "Settings.hpp"
59 #include "Mutex.h"
60 
61 /*
62  * A List entry that consists of a sockaddr
63  * a pointer to the Audience that sockaddr is
64  * associated with and a pointer to the next
65  * entry
66  */
67 struct Iperf_ListEntry {
68     iperf_sockaddr host;
69     struct SumReport *sum_report;
70     int thread_count;
71 #if WIN32
72     SOCKET socket;
73 #else
74     int socket;
75 #endif
76     struct Iperf_ListEntry *next;
77 };
78 
79 struct Iperf_Table {
80     Mutex my_mutex;
81     struct Iperf_ListEntry *root;
82     int count;
83     int total_count;
84     int groupid;
85 };
86 
87 /*
88  * Functions to modify or search the list
89  */
90 void Iperf_initialize_active_table (void);
91 void Iperf_destroy_active_table (void);
92 int Iperf_push_host (struct thread_Settings *agent);
93 int Iperf_push_host_port_conditional (struct thread_Settings *agent);
94 void Iperf_remove_host (struct thread_Settings *agent);
95 #endif
96