version 1.2.2.6, 2014/02/20 15:39:15
|
version 1.2.2.7, 2014/02/20 16:04:03
|
Line 129 getOpts(rpack_t * __restrict pkt, int rlen)
|
Line 129 getOpts(rpack_t * __restrict pkt, int rlen)
|
char *opt, *val; |
char *opt, *val; |
int len; |
int len; |
|
|
|
if (!rlen) |
|
return -1; |
|
|
do { |
do { |
/* option */ |
/* option */ |
len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL); |
len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL); |
Line 139 getOpts(rpack_t * __restrict pkt, int rlen)
|
Line 142 getOpts(rpack_t * __restrict pkt, int rlen)
|
opt = (char*) rpack_rnext(pkt, len); |
opt = (char*) rpack_rnext(pkt, len); |
if (!opt) |
if (!opt) |
return -1; |
return -1; |
|
EVERBOSE(7, "opt=%s rlen=%d", opt, rlen); |
/* value */ |
/* value */ |
len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL); |
len = str_getString(RPACK_NEXT(pkt), RPACK_REMAIN(pkt), NULL); |
if (len == -1) |
if (len == -1) |
Line 148 getOpts(rpack_t * __restrict pkt, int rlen)
|
Line 152 getOpts(rpack_t * __restrict pkt, int rlen)
|
val = (char*) rpack_rnext(pkt, len); |
val = (char*) rpack_rnext(pkt, len); |
if (!val) |
if (!val) |
return -1; |
return -1; |
|
EVERBOSE(7, "val=%s rlen=%d", val, rlen); |
|
|
if (!strcasecmp(opt, TFTP_OPT_BLKSIZE)) { |
if (!strcasecmp(opt, TFTP_OPT_BLKSIZE)) { |
len = strtol(val, NULL, 10); | cli.tmp = strtol(val, NULL, 10); |
if (len > TFTP_LOAD_MAX) { | |
cli.siz = len; | |
if (rpack_resize(pkt, cli.siz + 4)) | |
cli.siz = TFTP_PKT_MAX; | |
} | |
} else if (!strcasecmp(opt, TFTP_OPT_TSIZE)) |
} else if (!strcasecmp(opt, TFTP_OPT_TSIZE)) |
cli.tsiz = strtoll(val, NULL, 10); |
cli.tsiz = strtoll(val, NULL, 10); |
else if (!strcasecmp(opt, TFTP_OPT_TIMEOUT)) |
else if (!strcasecmp(opt, TFTP_OPT_TIMEOUT)) |
cli.tout = strtol(val, NULL, 10); |
cli.tout = strtol(val, NULL, 10); |
else if (!strcasecmp(opt, TFTP_OPT_ROLLOVER)) |
else if (!strcasecmp(opt, TFTP_OPT_ROLLOVER)) |
cli.roll = strtol(val, NULL, 10); |
cli.roll = strtol(val, NULL, 10); |
else |
|
return -1; |
|
} while (rlen > 0); |
} while (rlen > 0); |
|
|
EVERBOSE(4, "blksize=%u tsize=%llu timeout=%u rollover=%u", |
EVERBOSE(4, "blksize=%u tsize=%llu timeout=%u rollover=%u", |
Line 292 RQ(sched_task_t *task)
|
Line 290 RQ(sched_task_t *task)
|
|
|
schedEvent(TASK_ROOT(task), execProg, "request", 0, NULL, cli.opc); |
schedEvent(TASK_ROOT(task), execProg, "request", 0, NULL, cli.opc); |
|
|
if (!RPACK_ISEND(pkt) && !getOpts(pkt, rlen)) | if (!getOpts(pkt, rlen)) { |
| if (cli.tmp > TFTP_LOAD_MAX) { |
| if (rpack_resize(pkt, cli.tmp + 4)) |
| ELIBERR(elwix); |
| else |
| cli.siz = cli.tmp; |
| } |
schedEvent(TASK_ROOT(task), txOack, NULL, TASK_FD(task), |
schedEvent(TASK_ROOT(task), txOack, NULL, TASK_FD(task), |
TASK_DATA(task), 0); |
TASK_DATA(task), 0); |
else if (cli.opc == TFTP_OPC_WRQ) { | } else if (cli.opc == TFTP_OPC_WRQ) { |
/* ack */ |
/* ack */ |
tftp->tftp_opc = htons(TFTP_OPC_ACK); |
tftp->tftp_opc = htons(TFTP_OPC_ACK); |
RPACK_REWIND(pkt); |
RPACK_REWIND(pkt); |