From: Alan T. DeKok Date: Wed, 19 Aug 2020 22:15:56 +0000 (-0400) Subject: make track->address "const" X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=56563f6f22826fe2fa4925dfa6b60b885e6b73ee;p=thirdparty%2Ffreeradius-server.git make track->address "const" as it's used in dedup comparisons --- diff --git a/src/lib/io/master.c b/src/lib/io/master.c index 1fc33eb1298..e20769676a9 100644 --- a/src/lib/io/master.c +++ b/src/lib/io/master.c @@ -150,6 +150,9 @@ static int track_free(fr_io_track_t *track) { if (track->in_dedup_tree) { fr_assert(track->client->table != NULL); + + fr_assert(rbtree_finddata(track->client->table, track) != NULL); + if (!rbtree_deletebydata(track->client->table, track)) { fr_assert(0); } @@ -849,6 +852,7 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client, { size_t len; fr_io_track_t *track, *old; + fr_io_address_t *my_address; /* * Allocate a new tracking structure. Most of the time @@ -856,10 +860,10 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client, */ MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + sizeof(track->address) + 64)); talloc_set_destructor(track, track_free); - MEM(track->address = talloc_zero(track, fr_io_address_t)); + MEM(track->address = my_address = talloc_zero(track, fr_io_address_t)); - memcpy(track->address, address, sizeof(*address)); - track->address->radclient = client->radclient; + memcpy(my_address, address, sizeof(*address)); + my_address->radclient = client->radclient; track->client = client; if (client->connection) { diff --git a/src/lib/io/master.h b/src/lib/io/master.h index 11da7b469a5..6abc19b64c9 100644 --- a/src/lib/io/master.h +++ b/src/lib/io/master.h @@ -55,7 +55,7 @@ typedef struct { * definition. */ fr_time_t dynamic; //!< timestamp for packet doing dynamic client definition - fr_io_address_t *address; //!< of this packet.. shared between multiple packets + fr_io_address_t const *address; //!< of this packet.. shared between multiple packets fr_io_client_t *client; //!< client handling this packet. union { diff --git a/src/modules/proto_control/proto_control.c b/src/modules/proto_control/proto_control.c index d6fbae54f25..2b4f43859fd 100644 --- a/src/modules/proto_control/proto_control.c +++ b/src/modules/proto_control/proto_control.c @@ -165,7 +165,7 @@ static int mod_decode(void const *instance, REQUEST *request, uint8_t *const dat { proto_control_t const *inst = talloc_get_type_abort_const(instance, proto_control_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; RADCLIENT const *client; fr_assert(data[0] < FR_RADIUS_MAX_PACKET_CODE); @@ -235,7 +235,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe { proto_control_t const *inst = talloc_get_type_abort_const(instance, proto_control_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; RADCLIENT const *client; /* diff --git a/src/modules/proto_dhcpv4/proto_dhcpv4.c b/src/modules/proto_dhcpv4/proto_dhcpv4.c index df1ea32de90..cf7cfdede00 100644 --- a/src/modules/proto_dhcpv4/proto_dhcpv4.c +++ b/src/modules/proto_dhcpv4/proto_dhcpv4.c @@ -246,7 +246,7 @@ static int mod_decode(void const *instance, REQUEST *request, uint8_t *const dat { proto_dhcpv4_t const *inst = talloc_get_type_abort_const(instance, proto_dhcpv4_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; RADCLIENT const *client; RADIUS_PACKET *packet = request->packet; @@ -313,7 +313,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe { proto_dhcpv4_t const *inst = talloc_get_type_abort_const(instance, proto_dhcpv4_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; dhcp_packet_t *reply = (dhcp_packet_t *) buffer; dhcp_packet_t *original = (dhcp_packet_t *) request->packet->data; ssize_t data_len; diff --git a/src/modules/proto_dhcpv6/proto_dhcpv6.c b/src/modules/proto_dhcpv6/proto_dhcpv6.c index b1cf32b153b..1301725bfb0 100644 --- a/src/modules/proto_dhcpv6/proto_dhcpv6.c +++ b/src/modules/proto_dhcpv6/proto_dhcpv6.c @@ -245,7 +245,7 @@ static int mod_decode(void const *instance, REQUEST *request, uint8_t *const dat { proto_dhcpv6_t const *inst = talloc_get_type_abort_const(instance, proto_dhcpv6_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; RADCLIENT const *client; RADIUS_PACKET *packet = request->packet; @@ -312,7 +312,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe { proto_dhcpv6_t const *inst = talloc_get_type_abort_const(instance, proto_dhcpv6_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; fr_dhcpv6_packet_t *reply = (fr_dhcpv6_packet_t *) buffer; fr_dhcpv6_packet_t *original = (fr_dhcpv6_packet_t *) request->packet->data; ssize_t data_len; diff --git a/src/modules/proto_radius/proto_radius.c b/src/modules/proto_radius/proto_radius.c index 617440296dd..3aedaeb2f4a 100644 --- a/src/modules/proto_radius/proto_radius.c +++ b/src/modules/proto_radius/proto_radius.c @@ -277,7 +277,7 @@ static int mod_decode(void const *instance, REQUEST *request, uint8_t *const dat { proto_radius_t const *inst = talloc_get_type_abort_const(instance, proto_radius_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; RADCLIENT const *client; fr_assert(data[0] < FR_RADIUS_MAX_PACKET_CODE); @@ -400,7 +400,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe { proto_radius_t const *inst = talloc_get_type_abort_const(instance, proto_radius_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; ssize_t data_len; RADCLIENT const *client; diff --git a/src/modules/proto_radius/proto_radius_udp.c b/src/modules/proto_radius/proto_radius_udp.c index 4a1adc86f8e..de2a12c5cd5 100644 --- a/src/modules/proto_radius/proto_radius_udp.c +++ b/src/modules/proto_radius/proto_radius_udp.c @@ -200,7 +200,7 @@ static ssize_t mod_write(fr_listen_t *li, void *packet_ctx, UNUSED fr_time_t req proto_radius_udp_thread_t *thread = talloc_get_type_abort(li->thread_instance, proto_radius_udp_thread_t); fr_io_track_t *track = talloc_get_type_abort(packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; int flags; ssize_t data_size; diff --git a/src/modules/proto_tacacs/proto_tacacs.c b/src/modules/proto_tacacs/proto_tacacs.c index eb277f5ba5c..b09eed8cbef 100644 --- a/src/modules/proto_tacacs/proto_tacacs.c +++ b/src/modules/proto_tacacs/proto_tacacs.c @@ -238,7 +238,7 @@ static int mod_decode(void const *instance, REQUEST *request, uint8_t *const dat { proto_tacacs_t const *inst = talloc_get_type_abort_const(instance, proto_tacacs_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; RADCLIENT const *client; fr_tacacs_packet_t const *pkt = (fr_tacacs_packet_t const *)data; @@ -386,7 +386,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe { proto_tacacs_t const *inst = talloc_get_type_abort_const(instance, proto_tacacs_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; ssize_t data_len; RADCLIENT const *client; diff --git a/src/modules/proto_vmps/proto_vmps.c b/src/modules/proto_vmps/proto_vmps.c index c6924917871..c8725f8eee8 100644 --- a/src/modules/proto_vmps/proto_vmps.c +++ b/src/modules/proto_vmps/proto_vmps.c @@ -227,7 +227,7 @@ static int mod_decode(void const *instance, REQUEST *request, uint8_t *const dat { proto_vmps_t const *inst = talloc_get_type_abort_const(instance, proto_vmps_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; RADCLIENT const *client; RADIUS_PACKET *packet = request->packet; @@ -297,7 +297,7 @@ static ssize_t mod_encode(void const *instance, REQUEST *request, uint8_t *buffe { proto_vmps_t const *inst = talloc_get_type_abort_const(instance, proto_vmps_t); fr_io_track_t const *track = talloc_get_type_abort_const(request->async->packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; ssize_t data_len; RADCLIENT const *client; diff --git a/src/modules/proto_vmps/proto_vmps_udp.c b/src/modules/proto_vmps/proto_vmps_udp.c index 38a035d85eb..1ccd712af33 100644 --- a/src/modules/proto_vmps/proto_vmps_udp.c +++ b/src/modules/proto_vmps/proto_vmps_udp.c @@ -206,7 +206,7 @@ static ssize_t mod_write(fr_listen_t *li, void *packet_ctx, UNUSED fr_time_t req { proto_vmps_udp_thread_t *thread = talloc_get_type_abort(li->thread_instance, proto_vmps_udp_thread_t); fr_io_track_t *track = talloc_get_type_abort(packet_ctx, fr_io_track_t); - fr_io_address_t *address = track->address; + fr_io_address_t const *address = track->address; int flags; ssize_t data_size;