From: Alan T. DeKok Date: Tue, 9 May 2017 14:46:57 +0000 (-0400) Subject: remove packet->offset X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb0ed7d9c8def38d8d8c548cffdc69b08376b5a0;p=thirdparty%2Ffreeradius-server.git remove packet->offset which was only used for caching the offset of Message-Authenticator, and is no longer used --- diff --git a/src/include/packet.h b/src/include/packet.h index ccc68c9dfd4..8627c7b6ed4 100644 --- a/src/include/packet.h +++ b/src/include/packet.h @@ -62,7 +62,6 @@ typedef struct radius_packet { uint8_t *data; //!< Packet data (body). size_t data_len; //!< Length of packet data. VALUE_PAIR *vps; //!< Result of decoding the packet into VALUE_PAIRs. - ssize_t offset; uint32_t rounds; //!< for State[0] diff --git a/src/lib/util/mem.c b/src/lib/util/mem.c index f9a7db9ac03..02507c24218 100644 --- a/src/lib/util/mem.c +++ b/src/lib/util/mem.c @@ -43,7 +43,6 @@ RADIUS_PACKET *fr_radius_alloc(TALLOC_CTX *ctx, bool new_vector) return NULL; } rp->id = -1; - rp->offset = -1; if (new_vector) { int i; @@ -154,7 +153,6 @@ RADIUS_PACKET *fr_radius_copy(TALLOC_CTX *ctx, RADIUS_PACKET const *in) out->data_len = 0; out->vps = fr_pair_list_copy(out, in->vps); - out->offset = 0; return out; } diff --git a/src/main/listen.c b/src/main/listen.c index 648dab7ac6c..57f28ad4123 100644 --- a/src/main/listen.c +++ b/src/main/listen.c @@ -2458,6 +2458,7 @@ static int client_socket_decode(UNUSED rad_listen_t *listener, REQUEST *request) if (fr_radius_packet_verify(request->packet, NULL, request->client->secret) < 0) { + if (request->reply) request->reply->id = -1; return -1; } diff --git a/src/main/process.c b/src/main/process.c index df7cdd02fe5..3bfb0b85a00 100644 --- a/src/main/process.c +++ b/src/main/process.c @@ -1124,7 +1124,6 @@ static int request_pre_handler(REQUEST *request, UNUSED fr_state_action_t action if (rcode < 0) { RATE_LIMIT(INFO("Dropping packet without response because of error: %s", fr_strerror())); - request->reply->offset = -2; /* bad authenticator */ return 0; } diff --git a/src/main/stats.c b/src/main/stats.c index 05aeb048b12..6ed184d41bf 100644 --- a/src/main/stats.c +++ b/src/main/stats.c @@ -184,18 +184,46 @@ void request_stats_final(REQUEST *request) * authenticator. */ case 0: - if (request->packet->code == PW_CODE_ACCESS_REQUEST) { - if (request->reply->offset == -2) { + switch (request->packet->code) { + case PW_CODE_ACCESS_REQUEST: + if (request->reply->id == -1) { INC_AUTH(total_bad_authenticators); } else { INC_AUTH(total_packets_dropped); } - } else if (request->packet->code == PW_CODE_ACCOUNTING_REQUEST) { - if (request->reply->offset == -2) { + break; + + +#ifdef WITH_ACCOUNTING + case PW_CODE_ACCOUNTING_REQUEST: + if (request->reply->id == -1) { INC_ACCT(total_bad_authenticators); } else { INC_ACCT(total_packets_dropped); } + break; +#endif + +#ifdef WITH_COA + case PW_CODE_COA_REQUEST: + if (request->reply->id == -1) { + INC_COA(total_bad_authenticators); + } else { + INC_COA(total_packets_dropped); + } + break; + + case PW_CODE_DISCONNECT_REQUEST: + if (request->reply->id == -1) { + INC_DSC(total_bad_authenticators); + } else { + INC_DSC(total_packets_dropped); + } + break; +#endif + + default: + break; } break; diff --git a/src/protocols/radius/packet.c b/src/protocols/radius/packet.c index ba052b40eb8..eefadc04b36 100644 --- a/src/protocols/radius/packet.c +++ b/src/protocols/radius/packet.c @@ -115,7 +115,6 @@ int fr_radius_packet_encode(RADIUS_PACKET *packet, RADIUS_PACKET const *original * Load up the configuration values for the user */ ptr = hdr->data; - packet->offset = 0; /* * Loop over the reply attributes for the packet. @@ -163,11 +162,6 @@ int fr_radius_packet_encode(RADIUS_PACKET *packet, RADIUS_PACKET const *original * length and initial value. */ if (!vp->da->vendor && (vp->da->attr == PW_MESSAGE_AUTHENTICATOR)) { - /* - * Cache the offset to the - * Message-Authenticator - */ - packet->offset = total_length; last_len = 16; } else { last_len = vp->vp_length;