Here is my diff to change the data type of the block variable so tftp can handle tftpd block rollover when transferring large files. May not be that useful but I'm just using something trivial (pun intended) to learn the procedure.
J From: Justin Mayes Sent: Monday, October 20, 2014 9:26 AM To: misc@openbsd.org Subject: Making tftp download large files from tftpd I will spare you all the backstory but I found that tftp could not download files over 32 mb by default from tftpd. I know you can pass blocksize to tftpd to handle much larger files but I was originally working with a client where this wasn't possible. Tftp protocol has 2 bytes for block number which put a 65535 limit on that. tftpd data doesn't care and will just roll that over back to 0 and keep sending data. Tftp client fails when there is block number roll over because it is tracking all the blocks with an int so ends up comparing its block counter which is now at 65536 to what comes off the network, 0 and quits. I updated the tftp client code to use same data type as the network side structs are using - u_int16_t. Now tftp counter rolls along with server and can send file of any size with or without a blocksize change. I feel like this is mostly pointless but doesn't hurt anything. Will gladly provide the actuall diffs. I have to look into that process for openbsd but just wanted to check with the group first in case there was a reason an int was used that I do not understand. J [demime 1.01d removed an attachment of type application/octet-stream which had a name of tftp.diff]