harness: fixed tfpt test
[barrelfish] / usr / tests / tftpclient / main.c
1 /**
2  * \file main.c
3  * \brief 
4  */
5
6
7 /*
8  * Copyright (c) 2016 ETH Zurich.
9  * All rights reserved.
10  *
11  * This file is distributed under the terms in the attached LICENSE file.
12  * If you do not find this file, copies can be found by writing to:
13  * ETH Zurich D-INFK, Universitaetsstrasse 6, CH-8092 Zurich. Attn: Systems Group.
14  */
15
16 #include <barrelfish/barrelfish.h>
17 #include <tftp/tftp.h>
18
19 static char *file = "test";
20 static char *server = "127.0.0.1";
21 uint16_t port = 69;
22
23 #define TFTP_BUF_SIZE (1<<20)
24
25 char buffer[TFTP_BUF_SIZE];
26
27 static void parse_uri(char *uri)
28 {
29     debug_printf("TFTP PARSE URI '%s'\n", uri);
30     if (uri == NULL) {
31         return;
32     }
33
34     if (strncmp(uri, "tftp://", 7)) {
35         return;
36     }
37
38     uri += 7;
39
40     /* format: tftp://10.110.4.4:69 */
41     char *del = strchr(uri, ':');
42     if (del != NULL) {
43         port = atoi(del + 1);
44         *del = 0;
45     }
46
47     server = uri;
48 }
49
50 int main(int argc, char *argv[])
51 {
52     errval_t err;
53
54     for (int i = 1; i < argc; i++) {
55         if (strncmp(argv[i], "--server=", 9) == 0) {
56             parse_uri(argv[i] + 9);
57         } else if (strncmp(argv[i], "--file=", 7) == 0) {
58             file = argv[i] + 7;
59         } else {
60             debug_printf("TFTP WARNING unknown argument '%s'\n", argv[i]);
61         }
62     }
63
64     debug_printf("TFTP SERVER: %s:%u\n", server, port);
65     err = tftp_client_connect(server, port);
66     if (err_is_fail(err)) {
67         USER_PANIC_ERR(err, "TFTP ERROR Could not connect to the tftp service");
68     }
69
70     debug_printf("TFTP READFILE: %s\n", file);
71
72     size_t size;
73     err = tftp_client_read_file(file, buffer, TFTP_BUF_SIZE, &size);
74     if (err_is_fail(err)) {
75         USER_PANIC("TFTP ERRO: reading tftp file");
76     }
77
78     debug_printf("TFTP READFILE: %zu bytes\n", size);
79
80     debug_printf("TFTP TEST DONE. \n");
81
82     // prevent main exit since we do not have
83     // graceful flounder channel teardown
84     while(1) {
85         event_dispatch(get_default_waitset());
86     }
87 }