• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /barrelfish-2018-10-04/lib/tftp/

Lines Matching defs:tftp_client

40 struct tftp_client
62 struct tftp_client tftp_client;
68 void *payload = tftp_client.ppayload;
104 if (blockno == tftp_client.block) {
105 if (tftp_client.state == TFTP_ST_LAST_DATA_SENT) {
106 tftp_client.state = TFTP_ST_CLOSED;
112 if (tftp_client.buflen - offset < TFTP_BLOCKSIZE) {
113 length = tftp_client.buflen - offset;
114 tftp_client.state = TFTP_ST_LAST_DATA_SENT;
117 tftp_client.block++;
119 tftp_client_send_data(socket, tftp_client.block, tftp_client.buf + offset, length,
121 tftp_client.state = TFTP_ST_DATA_SENT;
131 tftp_client.state = TFTP_ST_ERROR;
149 if (blockno == tftp_client.block) {
158 if (tftp_client.buflen < tftp_client.bytes + length) {
160 length = tftp_client.buflen - tftp_client.bytes;
162 memcpy(tftp_client.buf + tftp_client.bytes, buf, length);
165 tftp_client.ppayload);
167 tftp_client.state = TFTP_ST_ERROR;
170 tftp_client.state = TFTP_ST_ACK_SENT;
171 tftp_client.block++;
172 tftp_client.bytes += length;
175 tftp_client.state = TFTP_ST_LAST_ACK_SENT;
180 tftp_client.ppayload);
182 tftp_client.state = TFTP_ST_ERROR;
185 tftp_client.state = TFTP_ST_ACK_SENT;
192 tftp_client.state = TFTP_ST_ERROR;
195 tftp_client.state = TFTP_ST_ERROR;
205 switch(tftp_client.state) {
216 TFTP_DEBUG("unexpected state: %u\n", tftp_client.state);
226 void *payload = tftp_client.ppayload;
233 length += set_mode(payload + length, tftp_client.mode);
238 err = net_send_to(tftp_client.pcb, payload, length, tftp_client.server_ip, tftp_client.server_port);
247 if (tftp_client.state < TFTP_ST_IDLE) {
252 if (tftp_client.state > TFTP_ST_IDLE) {
256 tftp_client.buf = buf;
257 tftp_client.buflen = buflen;
258 tftp_client.block = 1;
259 tftp_client.state = TFTP_ST_WRITE_REQ_SENT;
260 tftp_client.bytes = 0;
267 if (tftp_client.state < TFTP_ST_IDLE) {
272 if (tftp_client.state > TFTP_ST_IDLE) {
276 tftp_client.buf = buf;
277 tftp_client.buflen = buflen;
278 tftp_client.block = 1;
279 tftp_client.state = TFTP_ST_READ_REQ_SENT;
280 tftp_client.bytes = 0;
282 assert(tftp_client.pcb);
288 while(tftp_client.state > TFTP_ST_ERROR) {
295 *ret_size = tftp_client.bytes;
298 if (tftp_client.state == TFTP_ST_ERROR) {
299 tftp_client.state = TFTP_ST_IDLE;
303 tftp_client.state = TFTP_ST_IDLE;
318 switch(tftp_client.state) {
321 tftp_client.pcb = net_udp_socket();
326 tftp_client.pcb = net_udp_socket();
333 if (tftp_client.pcb == NULL) {
337 tftp_client.server_port = port;
339 int ret = inet_aton(ip, &tftp_client.server_ip);
348 r = net_bind(tftp_client.pcb, (struct in_addr){(INADDR_ANY)}, 0);
352 debug_printf("bound to %d\n", tftp_client.pcb->bound_port);
354 // r = net_connect(tftp_client.pcb, tftp_client.server_ip, tftp_client.server_port, NULL);
360 net_set_on_received(tftp_client.pcb, tftp_client_recv_handler);
362 tftp_client.state = TFTP_ST_IDLE;
363 tftp_client.mode = TFTP_MODE_OCTET;
364 tftp_client.ppayload = net_alloc(TFTP_MAX_MSGSIZE);
371 net_free(tftp_client.ppayload);
372 net_close(tftp_client.pcb);
373 tftp_client.state = TFTP_ST_CLOSED;