mirror of
https://github.com/EndPositive/slipstream.git
synced 2025-10-08 12:25:04 +00:00
64 lines
No EOL
1.7 KiB
C
64 lines
No EOL
1.7 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "slipstream.h"
|
|
|
|
static void usage(char const * sample_name)
|
|
{
|
|
fprintf(stderr, "Usage:\n");
|
|
fprintf(stderr, " %s client listen_port slipstream_server_name slipstream_server_port domain_name\n", sample_name);
|
|
fprintf(stderr, " %s server listen_port cert key target_server_name target_server_port domain_name\n", sample_name);
|
|
exit(1);
|
|
}
|
|
|
|
int get_port(char const* sample_name, char const* port_arg)
|
|
{
|
|
int server_port = atoi(port_arg);
|
|
if (server_port <= 0) {
|
|
fprintf(stderr, "Invalid port: %s\n", port_arg);
|
|
usage(sample_name);
|
|
}
|
|
|
|
return server_port;
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
int exit_code = 0;
|
|
#ifdef _WINDOWS
|
|
WSADATA wsaData = { 0 };
|
|
(void)WSA_START(MAKEWORD(2, 2), &wsaData);
|
|
#endif
|
|
|
|
if (argc < 2) {
|
|
usage(argv[0]);
|
|
}
|
|
else if (strcmp(argv[1], "client") == 0) {
|
|
if (argc != 5) {
|
|
usage(argv[0]);
|
|
}
|
|
else {
|
|
int local_port = atoi(argv[2]);
|
|
char const* resolver_addresses_filename = argv[3];
|
|
const char* domain_name = argv[4];
|
|
exit_code = picoquic_slipstream_client(local_port, resolver_addresses_filename, domain_name);
|
|
}
|
|
}
|
|
else if (strcmp(argv[1], "server") == 0) {
|
|
if (argc != 8) {
|
|
usage(argv[0]);
|
|
}
|
|
else {
|
|
int server_port = get_port(argv[0], argv[2]);
|
|
int remote_port = get_port(argv[0], argv[6]);
|
|
const char* domain_name = argv[7];
|
|
exit_code = picoquic_slipstream_server(server_port, argv[3], argv[4], argv[5], remote_port, domain_name);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
usage(argv[0]);
|
|
}
|
|
|
|
exit(exit_code);
|
|
} |