diff options
Diffstat (limited to 'fastbootd/fastbootd.c')
-rw-r--r-- | fastbootd/fastbootd.c | 67 |
1 files changed, 61 insertions, 6 deletions
diff --git a/fastbootd/fastbootd.c b/fastbootd/fastbootd.c index 98df0db..2b51b33 100644 --- a/fastbootd/fastbootd.c +++ b/fastbootd/fastbootd.c @@ -16,30 +16,85 @@ #include <stdio.h> #include <unistd.h> - #include <cutils/klog.h> +#include <getopt.h> +#include <stdlib.h> #include "debug.h" +#include "trigger.h" +#include "socket_client.h" +#include "secure.h" unsigned int debug_level = DEBUG; void commands_init(); void usb_init(); void config_init(); +int transport_socket_init(); +int network_discovery_init(); +void ssh_server_start(); int main(int argc, char **argv) { + int socket_client = 0; + int c; + int network = 1; + + klog_init(); + klog_set_level(6); + + const struct option longopts[] = { + {"socket", no_argument, 0, 'S'}, + {"nonetwork", no_argument, 0, 'n'}, + {0, 0, 0, 0} + }; + + while (1) { + c = getopt_long(argc, argv, "Sn", longopts, NULL); + /* Alphabetical cases */ + if (c < 0) + break; + switch (c) { + case 'S': + socket_client = 1; + break; + case 'n': + network = 0; + break; + case '?': + return 1; + default: + return 0; + } + } + (void)argc; (void)argv; klog_init(); klog_set_level(6); - config_init(); - commands_init(); - usb_init(); - while (1) { - sleep(1); + if (socket_client) { + //TODO: Shouldn't we change current tty into raw mode? + run_socket_client(); + } + else { + cert_init_crypto(); + config_init(); + load_trigger(); + commands_init(); + usb_init(); + + if (network) { + if (!transport_socket_init()) + exit(1); + ssh_server_start(); + network_discovery_init(); + } + + while (1) { + sleep(1); + } } return 0; } |