readme: add NXP iMX8X to supported platforms
[barrelfish] / lib / tftp / common.c
1 /**
2  * \file
3  * \brief TFTP library
4  */
5
6 /*
7  * Copyright (c) 2015 ETH Zurich.
8  * All rights reserved.
9  *
10  * This file is distributed under the terms in the attached LICENSE file.
11  * If you do not find this file, copies can be found by writing to:
12  * ETH Zurich D-INFK, Universitaetsstrasse 6, CH-8092 Zurich. Attn: Systems Group.
13  */
14
15 #include <barrelfish/barrelfish.h>
16 #include <net_sockets/net_sockets.h>
17
18 #include <tftp/tftp.h>
19 #include "tftp_internal.h"
20
21
22 /*
23  * ------------------------------------------------------------------------------
24  * Ack
25  * ------------------------------------------------------------------------------
26  */
27
28 errval_t tftp_send_ack(struct net_socket *socket, uint32_t blockno,
29                        struct in_addr addr, uint16_t port)
30 {
31     TFTP_DEBUG_PACKETS("sending ack(%u)\n", blockno);
32     void *payload = net_alloc(TFTP_MAX_MSGSIZE);
33     if (payload == NULL) {
34         return LIB_ERR_MALLOC_FAIL;
35     }
36
37     memset(payload, 0, sizeof(uint32_t) + sizeof(uint16_t));
38
39     size_t length = set_opcode(payload, TFTP_OP_ACK);
40     length += set_block_no(payload + length, blockno);
41
42     errval_t err;
43     err = net_send_to(socket, payload, length + 1, addr, port);
44     assert(err_is_ok(err));
45
46     return SYS_ERR_OK;
47 }