You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-analyzer/tptest/files/tptest-3.1.7-getstatsfromli...

151 lines
5.6 KiB

--- a/engine/tpcommon.c
+++ b/engine/tpcommon.c
@@ -37,6 +37,8 @@
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
+#include <stdlib.h>
+#include <stddef.h>
#ifdef UNIX
#include <sys/time.h>
@@ -194,68 +196,76 @@ done:
// Fill a tpStats structure with the contents from a STATS line
-int GetStatsFromLine(char *line, TPStats *s)
+int GetStatsFromLine(const char *line, TPStats *s)
{
char valBuf[30];
+ char * stats_ptr = NULL;
if (strncmp(line, "STATS ", 6) != 0)
return -1;
- memset(valBuf, 0, 30);
+ memset(valBuf, 0, sizeof(valBuf));
+ stats_ptr = ((char *)line)+6;
- if (CopyTagField(valBuf, 29, line+6, "majorv"))
- s->MajorVersion = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "minorv"))
- s->MinorVersion = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "pktssent"))
- s->PktsSent = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "pktsunsent"))
- s->PktsUnSent = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "pktsrcvd"))
- s->PktsRecvd = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "bytessent"))
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "majorv"))
+ s->MajorVersion = (USHORT) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "minorv"))
+ s->MinorVersion = (USHORT) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "pktssent"))
+ s->PktsSent = (UINT32) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "pktsunsent"))
+ s->PktsUnSent = (UINT32) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "pktsrcvd"))
+ s->PktsRecvd = (UINT32) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "bytessent"))
sscanf(valBuf, "%" LONG_LONG_PREFIX "d", &(s->BytesSent));
- if (CopyTagField(valBuf, 29, line+6, "bytesrcvd"))
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "bytesrcvd"))
sscanf(valBuf, "%" LONG_LONG_PREFIX "d", &(s->BytesRecvd));
- if (CopyTagField(valBuf, 29, line+6, "maxrtt"))
- s->MaxRoundtrip = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "minrtt"))
- s->MinRoundtrip = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "oocount"))
- s->ooCount = atoi(valBuf);
-
- if (CopyTagField(valBuf, 29, line+6, "txstart_s"))
- s->StartSend.tv_sec = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "txstart_us"))
- s->StartSend.tv_usec = atoi(valBuf);
-
- if (CopyTagField(valBuf, 29, line+6, "txstop_s"))
- s->StopSend.tv_sec = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "txstop_us"))
- s->StopSend.tv_usec = atoi(valBuf);
-
- if (CopyTagField(valBuf, 29, line+6, "rxstart_s"))
- s->StartRecv.tv_sec = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "rxstart_us"))
- s->StartRecv.tv_usec = atoi(valBuf);
-
- if (CopyTagField(valBuf, 29, line+6, "rxstop_s"))
- s->StopRecv.tv_sec = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "rxstop_us"))
- s->StopRecv.tv_usec = atoi(valBuf);
-
- if (CopyTagField(valBuf, 29, line+6, "totrtt"))
- s->TotalRoundtrip = atoi(valBuf);
- if (CopyTagField(valBuf, 29, line+6, "nortt"))
- s->nRoundtrips = atoi(valBuf);
-
- if (CopyTagField(valBuf, 101, line + 6, "email"))
- strcpy(s->email, valBuf);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "maxrtt"))
+ s->MaxRoundtrip = (UINT32) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "minrtt"))
+ s->MinRoundtrip = (UINT32) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "oocount"))
+ s->ooCount = (UINT32) strtoul(valBuf,NULL,10);
+
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "txstart_s"))
+ s->StartSend.tv_sec = strtol(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "txstart_us"))
+ s->StartSend.tv_usec = strtol(valBuf,NULL,10);
+
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "txstop_s"))
+ s->StopSend.tv_sec = strtol(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "txstop_us"))
+ s->StopSend.tv_usec = strtol(valBuf,NULL,10);
+
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "rxstart_s"))
+ s->StartRecv.tv_sec = strtol(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "rxstart_us"))
+ s->StartRecv.tv_usec = strtol(valBuf,NULL,10);
+
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "rxstop_s"))
+ s->StopRecv.tv_sec = strtol(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "rxstop_us"))
+ s->StopRecv.tv_usec = strtol(valBuf,NULL,10);
+
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "totrtt"))
+ s->TotalRoundtrip = (UINT32) strtoul(valBuf,NULL,10);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "nortt"))
+ s->nRoundtrips = (UINT32) strtoul(valBuf,NULL,10);
+
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "email"))
+ {
+ strncpy(s->email, valBuf, sizeof(s->email));
+ s->email[sizeof(s->email)-1] = '\0';
+ }
- if (CopyTagField(valBuf, 101, line + 6, "pwd"))
- strcpy(s->pwd, valBuf);
+ if (CopyTagField(valBuf, sizeof(valBuf)-1, stats_ptr, "pwd"))
+ {
+ strncpy(s->pwd, valBuf, sizeof(s->pwd));
+ s->pwd[sizeof(s->pwd)-1] = '\0';
+ }
+ stats_ptr = NULL;
return 0;
-
}
--- a/engine/tpcommon.h
+++ b/engine/tpcommon.h
@@ -43,7 +43,7 @@ int SameTag(char *s1, char *s2);
int CopyTagField(char *destp, int destSize, char *srcp, char *pname);
int GetSessionFromLine(char *, TPEngine *);
char * CreateSessionLine(TPEngine *, char *);
-int GetStatsFromLine(char *, TPStats *);
+int GetStatsFromLine(const char *, TPStats *);
char * CreateLineFromStats(TPStats *, char *);
int ReplyCode(char *);
void TVAddUSec(struct timeval *, int);