refactor(network): clarify net profiling struct and field names

This commit is contained in:
smallmodel
2025-12-20 23:32:47 +01:00
parent b019c1811c
commit 46798d46dc
8 changed files with 146 additions and 137 deletions

View File

@@ -1531,7 +1531,7 @@ void CL_Rcon_f( void ) {
NET_SendPacket (NS_CLIENT, strlen(message) + 1, message, to);
if (cl_netprofile->integer) {
NetProfileAddPacket(&cls.netprofile.inPackets, strlen(message) + 1, NETPROF_PACKET_MESSAGE);
NetProfileAddPacket(&cls.netprofile.upstream, strlen(message) + 1, NETPROF_PACKET_MESSAGE);
}
}
@@ -2314,7 +2314,7 @@ void CL_ConnectionlessPacket( netadr_t from, msg_t *msg ) {
const char *reason;
if (cl_netprofile->integer) {
NetProfileAddPacket(&cls.netprofile.outPackets, msg->cursize, NETPROF_PACKET_MESSAGE);
NetProfileAddPacket(&cls.netprofile.downstream, msg->cursize, NETPROF_PACKET_MESSAGE);
}
MSG_BeginReadingOOB( msg );
@@ -2790,8 +2790,8 @@ void CL_Frame ( int msec ) {
}
}
cls.netprofile.outPackets.updateTime = Com_Milliseconds();
cls.netprofile.inPackets.updateTime = cls.netprofile.outPackets.updateTime;
cls.netprofile.downstream.updateTime = Com_Milliseconds();
cls.netprofile.upstream.updateTime = cls.netprofile.downstream.updateTime;
} else {
cls.netprofile.initialized = qfalse;
}
@@ -4255,7 +4255,7 @@ void CL_LocalServers_f( void ) {
NET_SendPacket( NS_CLIENT, strlen( message ), message, to );
if (cl_netprofile->integer) {
NetProfileAddPacket(&cls.netprofile.inPackets, strlen( message ), NETPROF_PACKET_MESSAGE);
NetProfileAddPacket(&cls.netprofile.upstream, strlen( message ), NETPROF_PACKET_MESSAGE);
}
// Added in OPM (from ioquake3)
@@ -4263,7 +4263,7 @@ void CL_LocalServers_f( void ) {
NET_SendPacket( NS_CLIENT, strlen( message ), message, to );
if (cl_netprofile->integer) {
NetProfileAddPacket(&cls.netprofile.inPackets, strlen(message), NETPROF_PACKET_MESSAGE);
NetProfileAddPacket(&cls.netprofile.upstream, strlen(message), NETPROF_PACKET_MESSAGE);
}
}
}

View File

@@ -132,7 +132,7 @@ CL_Netchan_TransmitNextFragment
=================
*/
void CL_Netchan_TransmitNextFragment( netchan_t *chan ) {
Netchan_TransmitNextFragment( chan, cl_netprofile->integer ? &cls.netprofile.inPackets : NULL );
Netchan_TransmitNextFragment( chan, cl_netprofile->integer ? &cls.netprofile.upstream : NULL );
}
/*
@@ -144,7 +144,7 @@ void CL_Netchan_Transmit( netchan_t *chan, msg_t* msg ) {
MSG_WriteByte( msg, clc_EOF );
CL_Netchan_Encode( msg );
Netchan_Transmit( chan, msg->cursize, msg->data, cl_netprofile->integer ? &cls.netprofile.inPackets : NULL );
Netchan_Transmit( chan, msg->cursize, msg->data, cl_netprofile->integer ? &cls.netprofile.upstream : NULL );
}
extern int oldsize;
@@ -158,7 +158,7 @@ CL_Netchan_Process
qboolean CL_Netchan_Process( netchan_t *chan, msg_t *msg ) {
int ret;
ret = Netchan_Process( chan, msg, cl_netprofile->integer ? &cls.netprofile.outPackets : NULL );
ret = Netchan_Process( chan, msg, cl_netprofile->integer ? &cls.netprofile.downstream : NULL );
if (!ret)
return qfalse;
CL_Netchan_Decode( msg );
@@ -182,6 +182,6 @@ void CL_NET_OutOfBandPrint(netadr_t adr, const char* format, ...) {
NET_OutOfBandPrint(NS_CLIENT, adr, "%s", string);
if (cl_netprofile->integer) {
NetProfileAddPacket(&cls.netprofile.inPackets, strlen(string), NETPROF_PACKET_MESSAGE);
NetProfileAddPacket(&cls.netprofile.upstream, strlen(string), NETPROF_PACKET_MESSAGE);
}
}

View File

@@ -252,43 +252,43 @@ void View3D::DrawSoundOverlay(void)
void DisplayServerNetProfileInfo(UIFont *font, float y, netprofclient_t *netprofile)
{
font->Print(104, y, va("%i", netprofile->inPackets.packetsPerSec));
font->Print(144, y, va("%i", netprofile->outPackets.packetsPerSec));
font->Print(184, y, va("%i", netprofile->inPackets.packetsPerSec + netprofile->outPackets.packetsPerSec));
font->Print(234, y, va("%i", netprofile->inPackets.percentFragmented));
font->Print(264, y, va("%i", netprofile->outPackets.percentFragmented));
font->Print(104, y, va("%i", netprofile->upstream.packetsPerSec));
font->Print(144, y, va("%i", netprofile->downstream.packetsPerSec));
font->Print(184, y, va("%i", netprofile->upstream.packetsPerSec + netprofile->downstream.packetsPerSec));
font->Print(234, y, va("%i", netprofile->upstream.percentFragmented));
font->Print(264, y, va("%i", netprofile->downstream.percentFragmented));
font->Print(
294,
y,
va("%i",
(unsigned int)((float)(netprofile->outPackets.numFragmented + netprofile->inPackets.numFragmented)
/ (float)(netprofile->inPackets.totalProcessed + netprofile->outPackets.totalProcessed))),
(unsigned int)((float)(netprofile->downstream.numFragmented + netprofile->upstream.numFragmented)
/ (float)(netprofile->upstream.totalPackets + netprofile->downstream.totalPackets))),
-1
);
font->Print(334, y, va("%i", netprofile->inPackets.percentDropped));
font->Print(364, y, va("%i", netprofile->outPackets.percentDropped));
font->Print(334, y, va("%i", netprofile->upstream.percentDropped));
font->Print(364, y, va("%i", netprofile->downstream.percentDropped));
font->Print(
394,
y,
va("%i",
(unsigned int)((float)(netprofile->outPackets.numDropped + netprofile->inPackets.numDropped)
/ (float)(netprofile->inPackets.totalProcessed + netprofile->outPackets.totalProcessed))),
(unsigned int)((float)(netprofile->downstream.numDropped + netprofile->upstream.numDropped)
/ (float)(netprofile->upstream.totalPackets + netprofile->downstream.totalPackets))),
-1
);
font->Print(434, y, va("%i", netprofile->inPackets.percentDropped));
font->Print(464, y, va("%i", netprofile->outPackets.percentDropped));
font->Print(434, y, va("%i", netprofile->upstream.percentDropped));
font->Print(464, y, va("%i", netprofile->downstream.percentDropped));
font->Print(
494,
y,
va("%i",
(unsigned int)((float)(netprofile->outPackets.totalLengthConnectionLess
+ netprofile->inPackets.totalLengthConnectionLess)
/ (float)(netprofile->outPackets.totalSize + netprofile->inPackets.totalSize))),
(unsigned int)((float)(netprofile->downstream.totalBytesConnectionLess
+ netprofile->upstream.totalBytesConnectionLess)
/ (float)(netprofile->downstream.totalSize + netprofile->upstream.totalSize))),
-1
);
font->Print(534, y, va("%i", netprofile->inPackets.bytesPerSec));
font->Print(594, y, va("%i", netprofile->outPackets.bytesPerSec));
font->Print(654, y, va("%i", netprofile->outPackets.bytesPerSec + netprofile->inPackets.bytesPerSec));
font->Print(534, y, va("%i", netprofile->upstream.bytesPerSec));
font->Print(594, y, va("%i", netprofile->downstream.bytesPerSec));
font->Print(654, y, va("%i", netprofile->downstream.bytesPerSec + netprofile->upstream.bytesPerSec));
font->Print(714, y, va("%i", netprofile->rate));
}
@@ -326,51 +326,51 @@ void DisplayClientNetProfile(UIFont *font, float x, float y, netprofclient_t *ne
columnHeight += fontHeight;
font->Print(x, columnHeight, "Data In");
font->Print(columns[0], columnHeight, va("%i", netprofile->outPackets.packetsPerSec));
font->Print(columns[1], columnHeight, va("%i%%", netprofile->outPackets.percentFragmented));
font->Print(columns[2], columnHeight, va("%i%%", netprofile->outPackets.percentDropped));
font->Print(columns[3], columnHeight, va("%i%%", netprofile->outPackets.percentConnectionLess));
font->Print(columns[4], columnHeight, va("%i", netprofile->outPackets.bytesPerSec));
font->Print(columns[0], columnHeight, va("%i", netprofile->downstream.packetsPerSec));
font->Print(columns[1], columnHeight, va("%i%%", netprofile->downstream.percentFragmented));
font->Print(columns[2], columnHeight, va("%i%%", netprofile->downstream.percentDropped));
font->Print(columns[3], columnHeight, va("%i%%", netprofile->downstream.percentConnectionLess));
font->Print(columns[4], columnHeight, va("%i", netprofile->downstream.bytesPerSec));
columnHeight += fontHeight;
font->Print(x, columnHeight, "Data Out");
font->Print(columns[0], columnHeight, va("%i", netprofile->inPackets.packetsPerSec));
font->Print(columns[1], columnHeight, va("%i%%", netprofile->inPackets.percentFragmented));
font->Print(columns[2], columnHeight, va("%i%%", netprofile->inPackets.percentDropped));
font->Print(columns[3], columnHeight, va("%i%%", netprofile->inPackets.percentConnectionLess));
font->Print(columns[4], columnHeight, va("%i", netprofile->inPackets.bytesPerSec));
font->Print(columns[0], columnHeight, va("%i", netprofile->upstream.packetsPerSec));
font->Print(columns[1], columnHeight, va("%i%%", netprofile->upstream.percentFragmented));
font->Print(columns[2], columnHeight, va("%i%%", netprofile->upstream.percentDropped));
font->Print(columns[3], columnHeight, va("%i%%", netprofile->upstream.percentConnectionLess));
font->Print(columns[4], columnHeight, va("%i", netprofile->upstream.bytesPerSec));
columnHeight += fontHeight;
font->Print(x, columnHeight, "Total Data");
font->Print(
columns[0], columnHeight, va("%i", netprofile->inPackets.packetsPerSec + netprofile->outPackets.packetsPerSec)
columns[0], columnHeight, va("%i", netprofile->upstream.packetsPerSec + netprofile->downstream.packetsPerSec)
);
font->Print(
columns[1],
columnHeight,
va("%i%%",
(unsigned int)((float)(netprofile->outPackets.numFragmented + netprofile->inPackets.numFragmented)
/ (float)(netprofile->inPackets.totalProcessed + netprofile->outPackets.totalProcessed)))
(unsigned int)((float)(netprofile->downstream.numFragmented + netprofile->upstream.numFragmented)
/ (float)(netprofile->upstream.totalPackets + netprofile->downstream.totalPackets)))
);
font->Print(
columns[2],
columnHeight,
va("%i%%",
(unsigned int)((float)(netprofile->outPackets.numDropped + netprofile->inPackets.numDropped)
/ (double)(netprofile->inPackets.totalProcessed + netprofile->outPackets.totalProcessed)))
(unsigned int)((float)(netprofile->downstream.numDropped + netprofile->upstream.numDropped)
/ (double)(netprofile->upstream.totalPackets + netprofile->downstream.totalPackets)))
);
font->Print(
columns[3],
columnHeight,
va("%i%%",
(unsigned int)((float)(netprofile->outPackets.totalLengthConnectionLess
+ netprofile->inPackets.totalLengthConnectionLess)
/ (float)(netprofile->outPackets.totalSize + netprofile->inPackets.totalSize)))
(unsigned int)((float)(netprofile->downstream.totalBytesConnectionLess
+ netprofile->upstream.totalBytesConnectionLess)
/ (float)(netprofile->downstream.totalSize + netprofile->upstream.totalSize)))
);
font->Print(
columns[4], columnHeight, va("%i", netprofile->inPackets.bytesPerSec + netprofile->outPackets.bytesPerSec)
columns[4], columnHeight, va("%i", netprofile->upstream.bytesPerSec + netprofile->downstream.bytesPerSec)
);
}
@@ -481,8 +481,8 @@ void View3D::DrawNetProfile(void)
m_font->Print(16, yOffset, "Client Net Profile", -1);
NetProfileCalcStats(&cls.netprofile.outPackets, 500);
NetProfileCalcStats(&cls.netprofile.inPackets, 500);
NetProfileCalcStats(&cls.netprofile.downstream, 500);
NetProfileCalcStats(&cls.netprofile.upstream, 500);
DisplayClientNetProfile(m_font, 16, yOffset + fontHeight * 2, &cls.netprofile);
}

View File

@@ -140,12 +140,12 @@ void NetProfileCalcStats(netprofpacketlist_t* list, int time)
list->lastCalcTime = list->updateTime;
list->lowestUpdateTime = list->updateTime;
list->highestUpdateTime = 0;
list->totalProcessed = 0;
list->totalPackets = 0;
list->totalSize = 0;
list->numFragmented = 0;
list->numDropped = 0;
list->numConnectionLess = 0;
list->totalLengthConnectionLess = 0;
list->totalBytesConnectionLess = 0;
for (i = 0; i < ARRAY_LEN(list->packets); i++) {
packet = &list->packets[i];
@@ -165,7 +165,7 @@ void NetProfileCalcStats(netprofpacketlist_t* list, int time)
list->highestUpdateTime = packet->updateTime;
}
list->totalProcessed++;
list->totalPackets++;
list->totalSize += packet->size;
if (packet->flags & NETPROF_PACKET_FRAGMENTED) {
@@ -176,11 +176,11 @@ void NetProfileCalcStats(netprofpacketlist_t* list, int time)
}
if (packet->flags & NETPROF_PACKET_MESSAGE) {
list->numConnectionLess++;
list->totalLengthConnectionLess += packet->size;
list->totalBytesConnectionLess += packet->size;
}
}
if (!list->totalProcessed) {
if (!list->totalPackets) {
list->packetsPerSec = 0;
list->highestUpdateTime = list->lowestUpdateTime;
list->bytesPerSec = 0;
@@ -199,23 +199,23 @@ void NetProfileCalcStats(netprofpacketlist_t* list, int time)
frequency = 1.0 / list->latency;
}
list->packetsPerSec = list->totalProcessed * frequency;
list->packetsPerSec = list->totalPackets * frequency;
list->bytesPerSec = list->totalSize * frequency;
if (list->numFragmented) {
list->percentFragmented = (float)list->numFragmented / list->totalProcessed * 100.0;
list->percentFragmented = (float)list->numFragmented / list->totalPackets * 100.0;
} else {
list->percentFragmented = 0;
}
if (list->numDropped) {
list->percentDropped = (float)list->numDropped / list->totalProcessed * 100.0;
list->percentDropped = (float)list->numDropped / list->totalPackets * 100.0;
} else {
list->percentDropped = 0;
}
if (list->totalLengthConnectionLess) {
list->percentConnectionLess = (float)list->totalLengthConnectionLess / list->totalSize * 100.0;
if (list->totalBytesConnectionLess) {
list->percentConnectionLess = (float)list->totalBytesConnectionLess / list->totalSize * 100.0;
} else {
list->percentConnectionLess = 0;
}

View File

@@ -315,28 +315,37 @@ typedef struct {
int updateTime;
int index;
netprofpacket_t packets[NETPROX_MAX_PACKETS];
// Timing
int lastCalcTime;
int lowestUpdateTime;
int highestUpdateTime;
int totalProcessed;
// Accumulators
int totalPackets;
int totalSize;
int numFragmented;
int numDropped;
int numConnectionLess;
int totalLengthConnectionLess;
int totalBytesConnectionLess;
// Rates
int packetsPerSec;
int bytesPerSec;
// Percentages
int percentFragmented;
int percentDropped;
int percentConnectionLess;
float latency;
} netprofpacketlist_t;
typedef struct {
qboolean initialized;
int rate;
netprofpacketlist_t outPackets;
netprofpacketlist_t inPackets;
netprofpacketlist_t downstream;
netprofpacketlist_t upstream;
} netprofclient_t;
void Netchan_Init( int qport );

View File

@@ -1690,30 +1690,30 @@ SV_NetProfileDump_PrintProf
*/
void SV_NetProfileDump_PrintProf(fileHandle_t file, netprofclient_t* netprofile)
{
size_t totalProcessed;
size_t totalPackets;
char buffer[2048];
totalProcessed = netprofile->outPackets.totalProcessed + netprofile->inPackets.totalProcessed;
totalPackets = netprofile->downstream.totalPackets + netprofile->upstream.totalPackets;
Com_sprintf(
buffer,
sizeof(buffer),
"%4i %4i %4i | %3i %3i %3i | %3i %3i %3i | %3i %3i %3i | %7i %7i %7i\n",
netprofile->inPackets.packetsPerSec,
netprofile->outPackets.packetsPerSec,
netprofile->outPackets.packetsPerSec + netprofile->inPackets.packetsPerSec,
netprofile->inPackets.percentFragmented,
netprofile->outPackets.percentFragmented,
(unsigned int)((float)(netprofile->outPackets.numFragmented + netprofile->inPackets.numFragmented) / totalProcessed),
netprofile->inPackets.percentDropped,
netprofile->outPackets.percentDropped,
(unsigned int)((float)(netprofile->outPackets.numDropped + netprofile->inPackets.numDropped) / totalProcessed),
netprofile->inPackets.percentDropped,
netprofile->outPackets.percentDropped,
(unsigned int)((float)(netprofile->outPackets.totalLengthConnectionLess + netprofile->inPackets.totalLengthConnectionLess) / (float)(netprofile->outPackets.totalSize + netprofile->inPackets.totalSize)),
netprofile->inPackets.bytesPerSec,
netprofile->outPackets.bytesPerSec,
netprofile->outPackets.bytesPerSec + netprofile->inPackets.bytesPerSec
netprofile->upstream.packetsPerSec,
netprofile->downstream.packetsPerSec,
netprofile->downstream.packetsPerSec + netprofile->upstream.packetsPerSec,
netprofile->upstream.percentFragmented,
netprofile->downstream.percentFragmented,
(unsigned int)((float)(netprofile->downstream.numFragmented + netprofile->upstream.numFragmented) / totalPackets),
netprofile->upstream.percentDropped,
netprofile->downstream.percentDropped,
(unsigned int)((float)(netprofile->downstream.numDropped + netprofile->upstream.numDropped) / totalPackets),
netprofile->upstream.percentDropped,
netprofile->downstream.percentDropped,
(unsigned int)((float)(netprofile->downstream.totalBytesConnectionLess + netprofile->upstream.totalBytesConnectionLess) / (float)(netprofile->downstream.totalSize + netprofile->upstream.totalSize)),
netprofile->upstream.bytesPerSec,
netprofile->downstream.bytesPerSec,
netprofile->downstream.bytesPerSec + netprofile->upstream.bytesPerSec
);
FS_Write(buffer, strlen(buffer), file);

View File

@@ -753,7 +753,7 @@ void SV_ConnectionlessPacket( netadr_t from, msg_t *msg ) {
char *c;
if (sv_netprofile->integer) {
NetProfileAddPacket(&svs.netprofile.inPackets, msg->cursize, NETPROF_PACKET_MESSAGE);
NetProfileAddPacket(&svs.netprofile.upstream, msg->cursize, NETPROF_PACKET_MESSAGE);
}
MSG_BeginReadingOOB( msg );

View File

@@ -169,7 +169,7 @@ void SV_Netchan_TransmitNextInQueue(client_t *client)
SV_Netchan_Encode(client, &netbuf->msg, netbuf->clientCommandString);
#endif
Netchan_Transmit(&client->netchan, netbuf->msg.cursize, netbuf->msg.data, sv_netprofile->integer ? &client->netprofile.outPackets : NULL);
Netchan_Transmit(&client->netchan, netbuf->msg.cursize, netbuf->msg.data, sv_netprofile->integer ? &client->netprofile.downstream : NULL);
// pop from queue
client->netchan_start_queue = netbuf->next;
@@ -197,7 +197,7 @@ int SV_Netchan_TransmitNextFragment(client_t *client)
{
if(client->netchan.unsentFragments)
{
Netchan_TransmitNextFragment(&client->netchan, sv_netprofile->integer ? &client->netprofile.outPackets : NULL);
Netchan_TransmitNextFragment(&client->netchan, sv_netprofile->integer ? &client->netprofile.downstream : NULL);
return SV_RateMsec(client);
}
else if(client->netchan_start_queue)
@@ -250,7 +250,7 @@ void SV_Netchan_Transmit( client_t *client, msg_t *msg)
if(client->compat)
SV_Netchan_Encode(client, msg, client->lastClientCommandString);
#endif
Netchan_Transmit(&client->netchan, msg->cursize, msg->data, sv_netprofile->integer ? &client->netprofile.outPackets : NULL);
Netchan_Transmit(&client->netchan, msg->cursize, msg->data, sv_netprofile->integer ? &client->netprofile.downstream : NULL);
}
}
@@ -261,7 +261,7 @@ Netchan_SV_Process
*/
qboolean SV_Netchan_Process( client_t *client, msg_t *msg ) {
int ret;
ret = Netchan_Process( &client->netchan, msg, sv_netprofile->integer ? &client->netprofile.inPackets : NULL );
ret = Netchan_Process( &client->netchan, msg, sv_netprofile->integer ? &client->netprofile.upstream : NULL );
if (!ret)
return qfalse;
@@ -289,7 +289,7 @@ void SV_NET_OutOfBandPrint(netprofclient_t* netprof, netadr_t adr, const char* f
NET_OutOfBandPrint(NS_SERVER, adr, "%s", string);
if (sv_netprofile->integer && netprof) {
NetProfileAddPacket(&netprof->outPackets, strlen(string), NETPROF_PACKET_MESSAGE);
NetProfileAddPacket(&netprof->downstream, strlen(string), NETPROF_PACKET_MESSAGE);
}
}
@@ -313,8 +313,8 @@ void SV_NET_UpdateClientNetProfileInfo(netprofclient_t* netprofile, int rate) {
// set the update time
time = Com_Milliseconds();
netprofile->outPackets.updateTime = time;
netprofile->inPackets.updateTime = time;
netprofile->downstream.updateTime = time;
netprofile->upstream.updateTime = time;
}
/*
@@ -367,11 +367,11 @@ void SV_NET_CalcTotalNetProfile(netprofclient_t* netprofile, qboolean server) {
memset(netprofile, 0, sizeof(*netprofile));
if (server) {
NetProfileCalcStats(&svs.netprofile.outPackets, 0);
NetProfileCalcStats(&svs.netprofile.inPackets, 0);
NetProfileCalcStats(&svs.netprofile.downstream, 0);
NetProfileCalcStats(&svs.netprofile.upstream, 0);
} else {
NetProfileCalcStats(&svs.netprofile.outPackets, 500);
NetProfileCalcStats(&svs.netprofile.inPackets, 500);
NetProfileCalcStats(&svs.netprofile.downstream, 500);
NetProfileCalcStats(&svs.netprofile.upstream, 500);
}
for (i = 0; i < svs.iNumClients; i++) {
@@ -382,61 +382,61 @@ void SV_NET_CalcTotalNetProfile(netprofclient_t* netprofile, qboolean server) {
}
if (server) {
NetProfileCalcStats(&client->netprofile.outPackets, 0);
NetProfileCalcStats(&client->netprofile.inPackets, 0);
NetProfileCalcStats(&client->netprofile.downstream, 0);
NetProfileCalcStats(&client->netprofile.upstream, 0);
} else {
NetProfileCalcStats(&client->netprofile.outPackets, 500);
NetProfileCalcStats(&client->netprofile.inPackets, 500);
NetProfileCalcStats(&client->netprofile.downstream, 500);
NetProfileCalcStats(&client->netprofile.upstream, 500);
}
numValidClients++;
netprofile->rate += client->netprofile.rate;
netprofile->outPackets.totalSize += client->netprofile.outPackets.totalSize;
netprofile->outPackets.bytesPerSec += client->netprofile.outPackets.bytesPerSec;
netprofile->outPackets.numDropped += client->netprofile.outPackets.numDropped;
netprofile->outPackets.percentDropped += client->netprofile.outPackets.percentDropped;
netprofile->outPackets.percentFragmented += client->netprofile.outPackets.percentFragmented;
netprofile->outPackets.numFragmented += client->netprofile.outPackets.numFragmented;
netprofile->outPackets.totalLengthConnectionLess += client->netprofile.outPackets.totalLengthConnectionLess;
netprofile->outPackets.percentConnectionLess += client->netprofile.outPackets.percentConnectionLess;
netprofile->outPackets.totalProcessed += client->netprofile.outPackets.totalProcessed;
netprofile->outPackets.packetsPerSec += client->netprofile.outPackets.packetsPerSec;
netprofile->inPackets.totalSize += client->netprofile.inPackets.totalSize;
netprofile->inPackets.bytesPerSec += client->netprofile.inPackets.bytesPerSec;
netprofile->inPackets.numDropped += client->netprofile.inPackets.numDropped;
netprofile->inPackets.percentDropped += client->netprofile.inPackets.percentDropped;
netprofile->inPackets.percentFragmented += client->netprofile.inPackets.percentFragmented;
netprofile->inPackets.numFragmented += client->netprofile.inPackets.numFragmented;
netprofile->inPackets.totalLengthConnectionLess += client->netprofile.inPackets.totalLengthConnectionLess;
netprofile->inPackets.percentConnectionLess += client->netprofile.inPackets.percentConnectionLess;
netprofile->inPackets.totalProcessed += client->netprofile.inPackets.totalProcessed;
netprofile->inPackets.packetsPerSec += client->netprofile.inPackets.packetsPerSec;
netprofile->downstream.totalSize += client->netprofile.downstream.totalSize;
netprofile->downstream.bytesPerSec += client->netprofile.downstream.bytesPerSec;
netprofile->downstream.numDropped += client->netprofile.downstream.numDropped;
netprofile->downstream.percentDropped += client->netprofile.downstream.percentDropped;
netprofile->downstream.percentFragmented += client->netprofile.downstream.percentFragmented;
netprofile->downstream.numFragmented += client->netprofile.downstream.numFragmented;
netprofile->downstream.totalBytesConnectionLess += client->netprofile.downstream.totalBytesConnectionLess;
netprofile->downstream.percentConnectionLess += client->netprofile.downstream.percentConnectionLess;
netprofile->downstream.totalPackets += client->netprofile.downstream.totalPackets;
netprofile->downstream.packetsPerSec += client->netprofile.downstream.packetsPerSec;
netprofile->upstream.totalSize += client->netprofile.upstream.totalSize;
netprofile->upstream.bytesPerSec += client->netprofile.upstream.bytesPerSec;
netprofile->upstream.numDropped += client->netprofile.upstream.numDropped;
netprofile->upstream.percentDropped += client->netprofile.upstream.percentDropped;
netprofile->upstream.percentFragmented += client->netprofile.upstream.percentFragmented;
netprofile->upstream.numFragmented += client->netprofile.upstream.numFragmented;
netprofile->upstream.totalBytesConnectionLess += client->netprofile.upstream.totalBytesConnectionLess;
netprofile->upstream.percentConnectionLess += client->netprofile.upstream.percentConnectionLess;
netprofile->upstream.totalPackets += client->netprofile.upstream.totalPackets;
netprofile->upstream.packetsPerSec += client->netprofile.upstream.packetsPerSec;
}
if (numValidClients && netprofile->rate) {
netprofile->rate /= numValidClients;
}
netprofile->outPackets.totalSize += svs.netprofile.outPackets.totalSize;
netprofile->outPackets.bytesPerSec += svs.netprofile.outPackets.bytesPerSec;
netprofile->outPackets.numDropped += svs.netprofile.outPackets.numDropped;
netprofile->outPackets.percentDropped += svs.netprofile.outPackets.percentDropped;
netprofile->outPackets.percentFragmented += svs.netprofile.outPackets.percentFragmented;
netprofile->outPackets.numFragmented += svs.netprofile.outPackets.numFragmented;
netprofile->outPackets.totalLengthConnectionLess += svs.netprofile.outPackets.totalLengthConnectionLess;
netprofile->outPackets.percentConnectionLess += svs.netprofile.outPackets.percentConnectionLess;
netprofile->outPackets.totalProcessed += svs.netprofile.outPackets.totalProcessed;
netprofile->outPackets.packetsPerSec += svs.netprofile.outPackets.packetsPerSec;
netprofile->inPackets.totalSize += svs.netprofile.inPackets.totalSize;
netprofile->inPackets.bytesPerSec += svs.netprofile.inPackets.bytesPerSec;
netprofile->inPackets.numDropped += svs.netprofile.inPackets.numDropped;
netprofile->inPackets.percentDropped += svs.netprofile.inPackets.percentDropped;
netprofile->inPackets.percentFragmented += svs.netprofile.inPackets.percentFragmented;
netprofile->inPackets.numFragmented += svs.netprofile.inPackets.numFragmented;
netprofile->inPackets.totalLengthConnectionLess += svs.netprofile.inPackets.totalLengthConnectionLess;
netprofile->inPackets.percentConnectionLess += svs.netprofile.inPackets.percentConnectionLess;
netprofile->inPackets.totalProcessed += svs.netprofile.inPackets.totalProcessed;
netprofile->inPackets.packetsPerSec += svs.netprofile.inPackets.packetsPerSec;
netprofile->downstream.totalSize += svs.netprofile.downstream.totalSize;
netprofile->downstream.bytesPerSec += svs.netprofile.downstream.bytesPerSec;
netprofile->downstream.numDropped += svs.netprofile.downstream.numDropped;
netprofile->downstream.percentDropped += svs.netprofile.downstream.percentDropped;
netprofile->downstream.percentFragmented += svs.netprofile.downstream.percentFragmented;
netprofile->downstream.numFragmented += svs.netprofile.downstream.numFragmented;
netprofile->downstream.totalBytesConnectionLess += svs.netprofile.downstream.totalBytesConnectionLess;
netprofile->downstream.percentConnectionLess += svs.netprofile.downstream.percentConnectionLess;
netprofile->downstream.totalPackets += svs.netprofile.downstream.totalPackets;
netprofile->downstream.packetsPerSec += svs.netprofile.downstream.packetsPerSec;
netprofile->upstream.totalSize += svs.netprofile.upstream.totalSize;
netprofile->upstream.bytesPerSec += svs.netprofile.upstream.bytesPerSec;
netprofile->upstream.numDropped += svs.netprofile.upstream.numDropped;
netprofile->upstream.percentDropped += svs.netprofile.upstream.percentDropped;
netprofile->upstream.percentFragmented += svs.netprofile.upstream.percentFragmented;
netprofile->upstream.numFragmented += svs.netprofile.upstream.numFragmented;
netprofile->upstream.totalBytesConnectionLess += svs.netprofile.upstream.totalBytesConnectionLess;
netprofile->upstream.percentConnectionLess += svs.netprofile.upstream.percentConnectionLess;
netprofile->upstream.totalPackets += svs.netprofile.upstream.totalPackets;
netprofile->upstream.packetsPerSec += svs.netprofile.upstream.packetsPerSec;
}