rx: correctly count RX_PACKET_TYPE_VERSION packets 19/14519/2
authorMark Vitale <mvitale@sinenomine.net>
Wed, 17 Feb 2021 18:53:55 +0000 (13:53 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 26 Feb 2021 16:54:34 +0000 (11:54 -0500)
Since the original IBM code import, rx statistics for counting incoming
packet types have inadvertently omitted RX_PACKET_TYPE_VERSION packets.
This results in rxdebug -rxstats always reporting 0 for the number of
version packets read.

A similar bug causes a debugging facility in rxi_ReceivePacket to emit
"*UNKNOWN*" instead of "version" for version packets.

Correct all versions of the offending logic.

Change-Id: I9e713eb595b75ef06a347a1c05edb9efffd0b366
Reviewed-on: https://gerrit.openafs.org/14519
Tested-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Tested-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/rx/DARWIN/rx_knet.c
src/rx/rx.c
src/rx/rx_kcommon.c
src/rx/rx_packet.c

index 9952957..888a8ce 100644 (file)
@@ -127,7 +127,7 @@ rx_upcall(socket_t so, void *arg, __unused int waitflag)
 
            host = from.sin_addr.s_addr;
            port = from.sin_port;
-           if (p->header.type > 0 && p->header.type < RX_N_PACKET_TYPES) {
+           if (p->header.type > 0 && p->header.type <= RX_N_PACKET_TYPES) {
                if (rx_stats_active) {
                    rx_atomic_inc(&rx_stats.packetsRead[p->header.type - 1]);
                }
index 565cca4..371c74a 100644 (file)
@@ -3473,7 +3473,7 @@ rxi_ReceivePacket(struct rx_packet *np, osi_socket socket,
  * accurate enough until now in the lwp implementation (rx_Listener only gets
  * the time after the packet is read) and (2) from a protocol point of view,
  * this is the first time the packet has been seen */
-    packetType = (np->header.type > 0 && np->header.type < RX_N_PACKET_TYPES)
+    packetType = (np->header.type > 0 && np->header.type <= RX_N_PACKET_TYPES)
        ? rx_packetTypes[np->header.type - 1] : "*UNKNOWN*";
     dpf(("R %d %s: %x.%d.%d.%d.%d.%d.%d flags %d, packet %p\n",
         np->header.serial, packetType, ntohl(host), ntohs(port), np->header.serviceId,
index 181d479..af956b9 100644 (file)
@@ -1170,7 +1170,7 @@ rxk_ReadPacket(osi_socket so, struct rx_packet *p, int *host, int *port)
 
            *host = from.sin_addr.s_addr;
            *port = from.sin_port;
-           if (p->header.type > 0 && p->header.type < RX_N_PACKET_TYPES) {
+           if (p->header.type > 0 && p->header.type <= RX_N_PACKET_TYPES) {
                 if (rx_stats_active) {
                     rx_atomic_inc(&rx_stats.packetsRead[p->header.type - 1]);
                 }
index a8ea7bc..e9e7ab0 100644 (file)
@@ -1520,7 +1520,7 @@ rxi_ReadPacket(osi_socket socket, struct rx_packet *p, afs_uint32 * host,
        *host = from.sin_addr.s_addr;
        *port = from.sin_port;
        if (rx_stats_active
-           && p->header.type > 0 && p->header.type < RX_N_PACKET_TYPES) {
+           && p->header.type > 0 && p->header.type <= RX_N_PACKET_TYPES) {
 
                rx_atomic_inc(&rx_stats.packetsRead[p->header.type - 1]);
        }