3737#include <unistd.h>
3838
3939#include "cfg.h"
40+ #include "config.h"
4041#include "cktp.h"
4142#include "cktp_server.h"
4243#include "cktp_url.h"
4849#define OPTION_INIT_START 3
4950#define OPTION_INIT_STOP 4
5051#define OPTION_LIST 5
51- #define OPTION_RATE_LIMIT 6
52- #define OPTION_REMOVE 7
53- #define OPTION_THREADS 8
52+ #define OPTION_REMOVE 6
5453
5554#define COLOR_RED 31
5655#define COLOR_GREEN 32
5756#define COLOR_YELLOW 33
5857
59- #define THREADS_DEFAULT 3
60-
6158#define MAX_ADDRS 8
6259
6360/*
6461 * Prototypes.
6562 */
6663static int add_servers (int argc , char * * argv , int optind ,
67- const uint32_t * addrs , unsigned threads , size_t bps );
64+ const uint32_t * addrs );
6865static int remove_servers (int argc , char * * argv , int optind ,
6966 const uint32_t * addrs );
7067static int list_servers (const uint32_t * addrs );
7168static int init_start_servers (const uint32_t * addrs );
7269static int init_stop_servers (const uint32_t * addrs );
73- static int start_server (const char * url , unsigned threads , size_t bps );
70+ static int start_server (const char * url );
7471static void help (const char * progname );
7572static void usage (const char * progname );
7673void error (const char * message , ...);
@@ -106,14 +103,10 @@ int main(int argc, char **argv)
106103 {"init-start" , 0 , NULL , OPTION_INIT_START },
107104 {"init-stop" , 0 , NULL , OPTION_INIT_STOP },
108105 {"list" , 0 , NULL , OPTION_LIST },
109- {"rate-limit" , 1 , NULL , OPTION_RATE_LIMIT },
110106 {"remove" , 0 , NULL , OPTION_REMOVE },
111- {"threads" , 1 , NULL , OPTION_THREADS },
112107 {NULL , 0 , NULL , 0 }
113108 };
114109 int command = OPTION_NONE ;
115- unsigned threads = THREADS_DEFAULT ;
116- size_t bps = SIZE_MAX ;
117110
118111 while (true)
119112 {
@@ -142,31 +135,6 @@ int main(int argc, char **argv)
142135 }
143136 command = option ;
144137 break ;
145- case OPTION_THREADS :
146- {
147- char * end ;
148- threads = strtoul (optarg , & end , 10 );
149- if (threads == 0 || end == NULL || end [0 ] != '\0' )
150- {
151- error ("unable to parse value for `--threads' option; "
152- "try `%s --help' for more information" , argv [0 ]);
153- return EXIT_FAILURE ;
154- }
155- break ;
156- }
157- case OPTION_RATE_LIMIT :
158- {
159- char * end ;
160- bps = strtoul (optarg , & end , 10 );
161- if (bps == 0 || end == NULL || end [0 ] != '\0' )
162- {
163- error ("unable to parse value for `--rate-limit' option; "
164- "try `%s --help' for more information" , argv [0 ]);
165- return EXIT_FAILURE ;
166- }
167- bps *= 1000 ;
168- break ;
169- }
170138 default :
171139 error ("unable to parse options; try `%s --help' for more "
172140 "information" , argv [0 ]);
@@ -207,7 +175,7 @@ int main(int argc, char **argv)
207175 switch (command )
208176 {
209177 case OPTION_ADD : default :
210- return add_servers (argc , argv , optind , addrs , threads , bps );
178+ return add_servers (argc , argv , optind , addrs );
211179 case OPTION_REMOVE :
212180 return remove_servers (argc , argv , optind , addrs );
213181 case OPTION_LIST :
@@ -223,7 +191,7 @@ int main(int argc, char **argv)
223191 * Add servers.
224192 */
225193static int add_servers (int argc , char * * argv , int optind ,
226- const uint32_t * addrs , unsigned threads , size_t bps )
194+ const uint32_t * addrs )
227195{
228196 server_entry_t table = server_table_read ();
229197
@@ -265,7 +233,7 @@ static int add_servers(int argc, char **argv, int optind,
265233 {
266234 // Child:
267235 server_table_free (table );
268- return start_server (url , threads , bps );
236+ return start_server (url );
269237 }
270238
271239 // Parent:
@@ -279,8 +247,16 @@ static int add_servers(int argc, char **argv, int optind,
279247/*
280248 * Start a server instance.
281249 */
282- static int start_server (const char * url , unsigned threads , size_t bps )
250+ static int start_server (const char * url )
283251{
252+ // Read the configuration file:
253+ config_init ();
254+ struct config_s config ;
255+ config_get (& config );
256+ unsigned threads = config .threads ;
257+ size_t bps = (config .kb_per_sec == 0 ? SIZE_MAX :
258+ (size_t )config .kb_per_sec * 1000 );
259+
284260 // Open the tunnel
285261 cktp_tunnel_t tunnel = cktp_open_tunnel (url , bps );
286262 if (tunnel == NULL )
@@ -430,7 +406,7 @@ static int init_start_servers(const uint32_t *addrs)
430406 char url [strlen (entry -> url )+ 1 ];
431407 strcpy (url , entry -> url );
432408 server_table_free (table );
433- return start_server (url , THREADS_DEFAULT , SIZE_MAX );
409+ return start_server (url );
434410 }
435411
436412 // Parent:
@@ -523,11 +499,6 @@ static void help(const char *progname)
523499 puts ("OPTIONS are:" );
524500 puts ("\t--help" );
525501 puts ("\t\tPrint this helpful message." );
526- puts ("\t--rate-limit <number>" );
527- puts ("\t\tPer connection bandwidth limit in KBps (default is unlimited)." );
528- puts ("\t--threads <number>" );
529- printf ("\t\tNumber of threads per server (default is %d).\n" ,
530- THREADS_DEFAULT );
531502 putchar ('\n' );
532503}
533504
0 commit comments