Skip to content

Commit 6e1f52c

Browse files
committed
add listener to tracking structure
which is easier than the alternatives of adding it to all of the other APIs
1 parent cd32600 commit 6e1f52c

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

src/lib/io/master.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,7 +1085,7 @@ static fr_io_client_t *client_alloc(TALLOC_CTX *ctx, fr_io_client_state_t state,
10851085
}
10861086

10871087

1088-
static fr_io_track_t *fr_io_track_add(fr_io_client_t *client,
1088+
static fr_io_track_t *fr_io_track_add(fr_listen_t const *li, fr_io_client_t *client,
10891089
fr_io_address_t *address,
10901090
uint8_t const *packet, size_t packet_len,
10911091
fr_time_t recv_time, bool *is_dup)
@@ -1112,6 +1112,7 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client,
11121112
my_address->radclient = client->radclient;
11131113
}
11141114

1115+
track->li = li;
11151116
track->client = client;
11161117

11171118
track->timestamp = recv_time;
@@ -1709,7 +1710,7 @@ static ssize_t mod_read(fr_listen_t *li, void **packet_ctx, fr_time_t *recv_time
17091710
static fr_rate_limit_t tracking_failed;
17101711
bool is_dup = false;
17111712

1712-
track = fr_io_track_add(client, &address, buffer, packet_len, recv_time, &is_dup);
1713+
track = fr_io_track_add(li, client, &address, buffer, packet_len, recv_time, &is_dup);
17131714
if (!track) {
17141715
RATE_LIMIT_LOCAL(thread ? &thread->rate_limit.tracking_failed : &tracking_failed,
17151716
ERROR, "Failed tracking packet from client %s - discarding it",
@@ -1954,7 +1955,7 @@ static int mod_inject(fr_listen_t *li, uint8_t const *buffer, size_t buffer_len,
19541955
/*
19551956
* Track this packet, because that's what mod_read expects.
19561957
*/
1957-
track = fr_io_track_add(connection->client, connection->address,
1958+
track = fr_io_track_add(li, connection->client, connection->address,
19581959
buffer, buffer_len, recv_time, &is_dup);
19591960
if (!track) {
19601961
DEBUG2("Failed injecting packet to tracking table");
@@ -3304,6 +3305,8 @@ fr_io_track_t *fr_master_io_track_alloc(fr_listen_t *li, fr_client_t *radclient,
33043305

33053306
MEM(track = talloc_zero_pooled_object(client, fr_io_track_t, 1, sizeof(*track) + sizeof(track->address) + 64));
33063307
MEM(track->address = address = talloc_zero(track, fr_io_address_t));
3308+
3309+
track->li = li;
33073310
track->client = client;
33083311

33093312
address->socket.inet.src_port = src_port;

src/lib/io/master.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ typedef struct fr_io_client_s fr_io_client_t;
3939

4040
typedef struct fr_io_track_s {
4141
fr_rb_node_t node; //!< rbtree node in the tracking tree.
42+
fr_listen_t const *li; //!< listener associated with this tracking structure
4243
fr_timer_t *ev; //!< when we clean up this tracking entry
4344
fr_time_t timestamp; //!< when this packet was received
4445
fr_time_t expires; //!< when this packet expires

0 commit comments

Comments
 (0)