[SLOF] [PATCH v2 01/11] libnet: Get rid of unused huge_load and block_size parameters
Greg Kurz
groug at kaod.org
Wed May 23 00:49:14 AEST 2018
On Fri, 18 May 2018 17:45:30 +0200
Thomas Huth <thuth at redhat.com> wrote:
> The blocksize is hard-coded to 1428 bytes in obp-tftp.fs, so instead of
> hardcoding this in the Forth code, we could also move this into tftp.c
> directly instead. A similar condition exists with the huge-tftp-load
> parameter. While this non-standard variable could still be changed in the
> obp-tftp package, it does not make much sense to set it to zero since you
> only lose the possibility to do huge TFTP loads with index wrap-around in
> that case.
>
> Signed-off-by: Thomas Huth <thuth at redhat.com>
> ---
> lib/libnet/libnet.code | 4 +---
> lib/libnet/netapps.h | 3 +--
> lib/libnet/netload.c | 11 ++++-------
> lib/libnet/tftp.c | 13 +++----------
> lib/libnet/tftp.h | 2 +-
> slof/fs/packages/obp-tftp.fs | 3 ---
> 6 files changed, 10 insertions(+), 26 deletions(-)
>
> diff --git a/lib/libnet/libnet.code b/lib/libnet/libnet.code
> index 2746782..419419d 100644
> --- a/lib/libnet/libnet.code
> +++ b/lib/libnet/libnet.code
> @@ -4,11 +4,9 @@
> PRIM(NET_X2d_LOAD)
> int alen = TOS.n; POP;
> char *arg = TOS.a; POP;
> - int blocksize = TOS.n; POP;
> - int hugeload = TOS.n; POP;
> long maxlen = TOS.n; POP;
> void *loadaddr = TOS.a;
> - TOS.n = netload(loadaddr, maxlen, hugeload, blocksize, arg, alen);
> + TOS.n = netload(loadaddr, maxlen, arg, alen);
> MIRP
>
> PRIM(NET_X2d_PING)
> diff --git a/lib/libnet/netapps.h b/lib/libnet/netapps.h
> index 0e637e1..6e00466 100644
> --- a/lib/libnet/netapps.h
> +++ b/lib/libnet/netapps.h
> @@ -18,8 +18,7 @@
>
> struct filename_ip;
>
> -extern int netload(char *buffer, int len, int huge_load, int block_size,
> - char *args_fs, int alen);
> +extern int netload(char *buffer, int len, char *args_fs, int alen);
> extern int ping(char *args_fs, int alen);
> extern int dhcp(char *ret_buffer, struct filename_ip *fn_ip,
> unsigned int retries, int flags);
> diff --git a/lib/libnet/netload.c b/lib/libnet/netload.c
> index 5c37fe2..8dca654 100644
> --- a/lib/libnet/netload.c
> +++ b/lib/libnet/netload.c
> @@ -405,13 +405,12 @@ static void seed_rng(uint8_t mac[])
> }
>
> static int tftp_load(filename_ip_t *fnip, unsigned char *buffer, int len,
> - unsigned int retries, int32_t mode,
> - int32_t blksize, int ip_vers)
> + unsigned int retries, int ip_vers)
> {
> tftp_err_t tftp_err;
> int rc;
>
> - rc = tftp(fnip, buffer, len, retries, &tftp_err, mode, blksize, ip_vers);
> + rc = tftp(fnip, buffer, len, retries, &tftp_err, ip_vers);
>
> if (rc > 0) {
> printf(" TFTP: Received %s (%d KBytes)\n", fnip->filename,
> @@ -510,8 +509,7 @@ static void encode_response(char *pkt_buffer, size_t size, int ip_init)
> }
> }
>
> -int netload(char *buffer, int len, int huge_load, int block_size,
> - char *args_fs, int alen)
> +int netload(char *buffer, int len, char *args_fs, int alen)
> {
> int rc;
> filename_ip_t fn_ip;
> @@ -755,8 +753,7 @@ int netload(char *buffer, int len, int huge_load, int block_size,
>
> /* Do the TFTP load and print error message if necessary */
> rc = tftp_load(&fn_ip, (unsigned char *)buffer, len,
> - obp_tftp_args.tftp_retries, huge_load,
> - block_size, ip_version);
> + obp_tftp_args.tftp_retries, ip_version);
>
> if (obp_tftp_args.ip_init == IP_INIT_DHCP)
> dhcp_send_release(fn_ip.fd);
> diff --git a/lib/libnet/tftp.c b/lib/libnet/tftp.c
> index 1656c27..5e7951f 100644
> --- a/lib/libnet/tftp.c
> +++ b/lib/libnet/tftp.c
> @@ -497,19 +497,15 @@ void handle_tftp_dun(uint8_t err_code)
> * @param _len size of destination buffer
> * @param _retries max number of retries
> * @param _tftp_err contains info about TFTP-errors (e.g. lost packets)
> - * @param _mode NON ZERO - multicast, ZERO - unicast
> - * @param _blocksize blocksize for DATA-packets
> * @return ZERO - error condition occurs
> * NON ZERO - size of received file
> */
> int tftp(filename_ip_t * _fn_ip, unsigned char *_buffer, int _len,
> - unsigned int _retries, tftp_err_t * _tftp_err,
> - int32_t _mode, int32_t _blocksize, int _ip_version)
> + unsigned int _retries, tftp_err_t * _tftp_err, int _ip_version)
> {
> retries = _retries;
> fn_ip = _fn_ip;
> len = _len;
> - huge_load = _mode;
> ip_version = _ip_version;
> tftp_errno = 0;
> tftp_err = _tftp_err;
> @@ -523,17 +519,14 @@ int tftp(filename_ip_t * _fn_ip, unsigned char *_buffer, int _len,
> port_number = -1;
> progress_first = -1;
> progress_last_bytes = 0;
> + huge_load = 1;
>
This static variable seems to have only two users, both in handle_tftp():
else if( block == 0xffff && huge_load != 0
&& (tftp->th_data == 0 || tftp->th_data == 1) ) {
block = tftp->th_data;
}
and
if (block >= 0xffff && huge_load == 0) {
tftp_errno = -9;
goto error;
}
which could be simplified as well, but this can be done later I guess.
Reviewed-by: Greg Kurz <groug at kaod.org>
> /* Default blocksize must be 512 for TFTP servers
> * which do not support the RRQ blocksize option */
> blocksize = 512;
>
> /* Preferred blocksize - used as option for the read request */
> - if (_blocksize < 8)
> - _blocksize = 8;
> - else if (_blocksize > MAX_BLOCKSIZE)
> - _blocksize = MAX_BLOCKSIZE;
> - sprintf(blocksize_str, "%d", _blocksize);
> + sprintf(blocksize_str, "%d", MAX_BLOCKSIZE);
>
> printf(" Receiving data: ");
> print_progress(-1, 0);
> diff --git a/lib/libnet/tftp.h b/lib/libnet/tftp.h
> index e32e473..a09cf71 100644
> --- a/lib/libnet/tftp.h
> +++ b/lib/libnet/tftp.h
> @@ -41,7 +41,7 @@ typedef struct {
> } tftp_err_t;
>
> int tftp(filename_ip_t *, unsigned char *, int, unsigned int,
> - tftp_err_t *, int32_t mode, int32_t blocksize, int ip_version);
> + tftp_err_t *, int ip_version);
>
> int32_t handle_tftp(int fd, uint8_t *, int32_t);
> void handle_tftp_dun(uint8_t err_code);
> diff --git a/slof/fs/packages/obp-tftp.fs b/slof/fs/packages/obp-tftp.fs
> index 17fb980..19c11e1 100644
> --- a/slof/fs/packages/obp-tftp.fs
> +++ b/slof/fs/packages/obp-tftp.fs
> @@ -12,8 +12,6 @@
>
> s" obp-tftp" device-name
>
> -VARIABLE huge-tftp-load 1 huge-tftp-load !
> -
> : open ( -- okay? )
> true
> ;
> @@ -28,7 +26,6 @@ VARIABLE huge-tftp-load 1 huge-tftp-load !
>
> 60000000 ( addr maxlen )
>
> - huge-tftp-load @ d# 1428 ( addr maxlen hugetftp blocksize )
> \ Add OBP-TFTP Bootstring argument, e.g. "10.128.0.1,bootrom.bin,10.128.40.1"
> my-args
> net-load dup 0< IF drop 0 THEN
More information about the SLOF
mailing list