Lines Matching defs:packet

92  * Makes a request packet in BUFFER with OPCODE and file PATH of MODE
93 * and returns length of packet.
105 * Makes an acknowledgement packet in BUFFER of BLOCNO
106 * and returns packet length.
118 * Makes an error packet in BUFFER with ERRORCODE and ERRORMSG.
119 * and returns packet length.
180 // checks packet for data and updates block no
181 static inline int check_data( uint8_t *packet, uint16_t *opcode,
184 *opcode = (uint16_t) packet[0] << 8 | (uint16_t) packet[1];
186 *blockno = (uint16_t) packet[2] << 8 | (uint16_t) packet[3];
192 // Makes data packet through FD from file OFFSET in buffer PACKET of BLOCKNO
193 static int mkpkt_data(int fd, off_t offset, uint8_t *packet, uint16_t blockno)
198 packet[0] = TFTP_OP_DATA >> 8;
199 packet[1] = TFTP_OP_DATA & 0xff;
200 packet[2] = blockno >> 8;
201 packet[3] = blockno & 0xff;
207 nbytesread = readall(fd, &packet[TFTP_DATAHEADERSIZE], TFTP_DATASIZE);
213 static int read_ack(int sd, uint8_t *packet, struct sockaddr_storage *server,
223 nbytes = read_server(sd, packet, TFTP_IOBUFSIZE, &from);
226 else if (nbytes > 0) error_msg("Short packet: %d bytes", nbytes);
242 packetlen = mkpkt_err(packet, TFTP_ER_UNKID, TFTP_ES_UNKID);
243 (void) write_server(sd, packet, packetlen, server);
246 opcode = (uint16_t) packet[0] << 8 | (uint16_t) packet[1];
247 rblockno = (uint16_t) packet[2] << 8 | (uint16_t) packet[3];
252 packetlen = mkpkt_err(packet, TFTP_ER_ILLEGALOP, TFTP_ES_ILLEGALOP);
253 (void) write_server(sd, packet, packetlen, server);
270 uint8_t *packet;
276 packet = (uint8_t*) xzalloc(TFTP_IOBUFSIZE);
279 len = mkpkt_request(packet, TFTP_OP_RRQ, TT.remote_file, 1);
280 ret = write_server(sd, packet, len, &server);
291 nbytesrecvd = read_server(sd, packet, TFTP_IOBUFSIZE, &from);
312 len = mkpkt_err(packet, TFTP_ER_UNKID, TFTP_ES_UNKID);
313 ret = write_server(sd, packet, len, &from);
318 error_msg("Tiny data packet ignored.");
321 if (check_data(packet, &opcode, &rblockno) != 0
334 len = mkpkt_ack(packet, 0);
335 ret = write_server(sd, packet, len, &from);
342 len = mkpkt_err(packet, TFTP_ER_ILLEGALOP, TFTP_ES_ILLEGALOP);
343 ret = write_server(sd, packet, len, &from);
362 if (writeall(fd, packet + TFTP_DATAHEADERSIZE, ndatabytes) < 0){
366 len = mkpkt_ack(packet, blockno);
367 ret = write_server(sd, packet, len, &server);
377 free(packet);
385 uint8_t *packet;
391 packet = (uint8_t*)xzalloc(TFTP_IOBUFSIZE);
395 packetlen = mkpkt_request(packet, TFTP_OP_WRQ, TT.remote_file, 1);
396 ret = write_server(sd, packet, packetlen, &server);
398 if (read_ack(sd, packet, &server, &port, NULL) == 0) break;
405 packetlen = mkpkt_data(fd, offset, packet, blockno);
408 ret = write_server(sd, packet, packetlen, &server);
411 if (read_ack(sd, packet, &server, &port, &rblockno) == 0) {
428 free(packet);