Fix init error
This commit is contained in:
parent
ef49d07dd9
commit
3293197860
6 changed files with 27 additions and 20 deletions
|
@ -20,6 +20,7 @@ typedef void (*algo_init)(struct evt_core_ctx* ctx, struct algo_skel* as);
|
||||||
|
|
||||||
void init_algo(struct evt_core_ctx* ctx, struct algo_skel* as, char* name);
|
void init_algo(struct evt_core_ctx* ctx, struct algo_skel* as, char* name);
|
||||||
void algo_naive(struct evt_core_ctx* ctx, struct algo_skel* as);
|
void algo_naive(struct evt_core_ctx* ctx, struct algo_skel* as);
|
||||||
|
void algo_rr(struct evt_core_ctx* ctx, struct algo_skel* as);
|
||||||
|
|
||||||
struct algo_desc {
|
struct algo_desc {
|
||||||
algo_init init;
|
algo_init init;
|
||||||
|
@ -30,5 +31,9 @@ static struct algo_desc available_algo[] = {
|
||||||
{
|
{
|
||||||
.init = algo_naive,
|
.init = algo_naive,
|
||||||
.name = "naive"
|
.name = "naive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.init = algo_rr,
|
||||||
|
.name = "rr"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -58,18 +58,14 @@ int main(int argc, char** argv) {
|
||||||
if (!(is_server ^ is_client)) goto in_error;
|
if (!(is_server ^ is_client)) goto in_error;
|
||||||
if (algo == NULL) goto in_error;
|
if (algo == NULL) goto in_error;
|
||||||
|
|
||||||
struct algo_skel as = {0};
|
|
||||||
|
|
||||||
if (is_server) {
|
if (is_server) {
|
||||||
struct donar_server_ctx ctx;
|
struct donar_server_ctx ctx;
|
||||||
init_algo(&ctx.evts, &as, algo);
|
|
||||||
if (exposed_ports->len < 1 && remote_ports->len < 1) goto in_error;
|
if (exposed_ports->len < 1 && remote_ports->len < 1) goto in_error;
|
||||||
donar_server(&ctx, &as, exposed_ports, remote_ports);
|
donar_server(&ctx, algo, exposed_ports, remote_ports);
|
||||||
} else if (is_client) {
|
} else if (is_client) {
|
||||||
struct donar_client_ctx ctx;
|
struct donar_client_ctx ctx;
|
||||||
init_algo(&ctx.evts, &as, algo);
|
|
||||||
if ((exposed_ports->len < 1 && remote_ports->len < 1) || onion_file == NULL) goto in_error;
|
if ((exposed_ports->len < 1 && remote_ports->len < 1) || onion_file == NULL) goto in_error;
|
||||||
donar_client(&ctx, &as, onion_file, exposed_ports, remote_ports);
|
donar_client(&ctx, algo, onion_file, exposed_ports, remote_ports);
|
||||||
}
|
}
|
||||||
goto terminate;
|
goto terminate;
|
||||||
|
|
||||||
|
|
|
@ -122,9 +122,12 @@ on_socks5_err:
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void donar_client(struct donar_client_ctx* ctx, struct algo_skel* algo,
|
void donar_client(struct donar_client_ctx* ctx, char* algoname,
|
||||||
char* onion_file, GPtrArray* exposed_ports, GPtrArray* remote_ports) {
|
char* onion_file, GPtrArray* exposed_ports, GPtrArray* remote_ports) {
|
||||||
|
struct algo_skel algo = {0};
|
||||||
|
|
||||||
evt_core_init (&(ctx->evts));
|
evt_core_init (&(ctx->evts));
|
||||||
|
init_algo(&ctx->evts, &algo, algoname);
|
||||||
struct evt_core_cat init_socks5 = {
|
struct evt_core_cat init_socks5 = {
|
||||||
.app_ctx = ctx,
|
.app_ctx = ctx,
|
||||||
.free_app_ctx = NULL,
|
.free_app_ctx = NULL,
|
||||||
|
@ -135,11 +138,11 @@ void donar_client(struct donar_client_ctx* ctx, struct algo_skel* algo,
|
||||||
.socklist = NULL
|
.socklist = NULL
|
||||||
};
|
};
|
||||||
evt_core_add_cat (&(ctx->evts), &init_socks5);
|
evt_core_add_cat (&(ctx->evts), &init_socks5);
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_tcp_co));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_tcp_co));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_udp_read));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_udp_read));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_tcp_read));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_tcp_read));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_udp_write));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_udp_write));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_tcp_write));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_tcp_write));
|
||||||
printf("--- Categories created\n");
|
printf("--- Categories created\n");
|
||||||
|
|
||||||
load_onion_services (ctx, onion_file, CLIENT_PORT_SIZE);
|
load_onion_services (ctx, onion_file, CLIENT_PORT_SIZE);
|
||||||
|
|
|
@ -19,5 +19,5 @@ struct donar_client_ctx {
|
||||||
} client_sock[CLIENT_PORT_SIZE];
|
} client_sock[CLIENT_PORT_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
void donar_client(struct donar_client_ctx* ctx, struct algo_skel* as,
|
void donar_client(struct donar_client_ctx* ctx, char* algoname,
|
||||||
char* onion_file, GPtrArray* exposed_ports, GPtrArray* remote_ports);
|
char* onion_file, GPtrArray* exposed_ports, GPtrArray* remote_ports);
|
||||||
|
|
|
@ -51,14 +51,17 @@ socket_create_err:
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void donar_server(struct donar_server_ctx* ctx, struct algo_skel* algo,
|
void donar_server(struct donar_server_ctx* ctx, char* algoname,
|
||||||
GPtrArray* exposed_ports, GPtrArray* remote_ports) {
|
GPtrArray* exposed_ports, GPtrArray* remote_ports) {
|
||||||
|
struct algo_skel algo = {0};
|
||||||
|
|
||||||
evt_core_init (&(ctx->evts));
|
evt_core_init (&(ctx->evts));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_tcp_co));
|
init_algo(&ctx->evts, &algo, algoname);
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_udp_read));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_tcp_co));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_tcp_read));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_udp_read));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_udp_write));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_tcp_read));
|
||||||
evt_core_add_cat (&(ctx->evts), &(algo->on_tcp_write));
|
evt_core_add_cat (&(ctx->evts), &(algo.on_udp_write));
|
||||||
|
evt_core_add_cat (&(ctx->evts), &(algo.on_tcp_write));
|
||||||
|
|
||||||
printf("--- Categories created\n");
|
printf("--- Categories created\n");
|
||||||
|
|
||||||
|
|
|
@ -20,5 +20,5 @@ struct donar_server_ctx {
|
||||||
uint16_t ports[PORT_SIZE];
|
uint16_t ports[PORT_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
void donar_server(struct donar_server_ctx* ctx, struct algo_skel* algo,
|
void donar_server(struct donar_server_ctx* ctx, char* algoname,
|
||||||
GPtrArray* exposed_ports, GPtrArray* remote_ports);
|
GPtrArray* exposed_ports, GPtrArray* remote_ports);
|
||||||
|
|
Loading…
Reference in a new issue