tftpclient: converting to net sockets
[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                        void *payload)
31 {
32     TFTP_DEBUG_PACKETS("sending ack(%u)\n", blockno);
33
34     memset(payload, 0, sizeof(uint32_t) + sizeof(uint16_t));
35
36     size_t length = set_opcode(payload, TFTP_OP_ACK);
37     length += set_block_no(payload + length, blockno);
38
39     errval_t err;
40     err = net_send_to(socket, payload, length + 1, addr, port);
41     assert(err_is_ok(err));
42
43     return SYS_ERR_OK;
44 }