static int app_network_service_main(int argc, char *argv[]) { int ret; struct cavan_dynamic_service *service; struct app_network_service *app_service; assert(argc > 1); service = cavan_dynamic_service_create(sizeof(struct app_network_service)); if (service == NULL) { pr_red_info("cavan_dynamic_service_create"); return -ENOMEM; } service->min = 20; service->max = 1000; service->verbose = true; service->name = "APP_NETWORK"; service->conn_size = sizeof(struct network_client); service->start = app_network_start_handler; service->stop = app_network_stop_handler; service->run = app_network_run_handler; service->open_connect = app_network_open_connect; service->close_connect = app_network_close_connect; app_service = cavan_dynamic_service_get_data(service); app_service->url = argv[1]; ret = cavan_dynamic_service_run(service); cavan_dynamic_service_destroy(service); return ret; }
int main(int argc, char *argv[]) { int ret; struct cavan_tcp_repeater *repeater; struct cavan_dynamic_service *service; service = cavan_dynamic_service_create(sizeof(struct cavan_tcp_repeater)); if (service == NULL) { pr_red_info("cavan_dynamic_service_create"); return -ENOMEM; } service->min = 20; service->max = 1000; repeater = cavan_dynamic_service_get_data(service); network_url_init(&repeater->url, "tcp", "any", CAVAN_TCP_REPEATER_PORT, network_get_socket_pathname()); ret = network_url_parse_cmdline(&repeater->url, service, argc, argv); if (ret < 0) { goto out_cavan_dynamic_service_destroy; } ret = cavan_tcp_repeater_run(service); out_cavan_dynamic_service_destroy: cavan_dynamic_service_destroy(service); return ret; }
static int ftp_service_run_handler(struct cavan_dynamic_service *service, void *conn) { struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service); return ftp_service_cmdline(ftp, conn); }
static void ftp_service_stop_handler(struct cavan_dynamic_service *service) { struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service); network_service_close(&ftp->service); }
static int ftp_service_start_handler(struct cavan_dynamic_service *service) { struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service); return network_service_open(&ftp->service, &ftp->url, 0); }
static int ftp_service_open_connect(struct cavan_dynamic_service *service, void *conn) { struct cavan_ftp_service *ftp = cavan_dynamic_service_get_data(service); return network_service_accept(&ftp->service, conn); }
static int app_network_open_connect(struct cavan_dynamic_service *service, void *conn) { struct app_network_service *app_service = cavan_dynamic_service_get_data(service); return network_service_accept(&app_service->service, conn); }
static void app_network_stop_handler(struct cavan_dynamic_service *service) { struct app_network_service *app_service = cavan_dynamic_service_get_data(service); network_service_close(&app_service->service); }
static int app_network_start_handler(struct cavan_dynamic_service *service) { struct app_network_service *app_service = cavan_dynamic_service_get_data(service); return network_service_open2(&app_service->service, app_service->url, 0); }