]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add tls flag to packets
authorAlan T. DeKok <aland@freeradius.org>
Fri, 16 Feb 2024 13:33:54 +0000 (08:33 -0500)
committerMatthew Newton <matthew-git@newtoncomputing.co.uk>
Mon, 8 Jul 2024 19:38:15 +0000 (20:38 +0100)
and set it for TLS transport send / receive.  This lets the
packet encoder and verification routines behave differently for
TLS and non-TLS transport

src/include/libradius.h
src/main/tls_listen.c

index 757828f070e2f8433adf4ac3ff8a7211658c9c41..c2e8969f3c9893798fe7197017e352126b664b32 100644 (file)
@@ -407,6 +407,7 @@ typedef struct radius_packet {
        size_t                  partial;
        int                     proto;
 #endif
+       bool                    tls;            //!< uses secure transport
 } RADIUS_PACKET;
 
 typedef enum {
index 563a887d240cd1501de2dcba0b99ed5df361c1e1..6d954d269f11c66c7dcab5caf010cfba14f31dee 100644 (file)
@@ -439,6 +439,8 @@ read_application_data:
        packet->vps = NULL;
        PTHREAD_MUTEX_UNLOCK(&sock->mutex);
 
+       packet->tls = true;
+
        if (!rad_packet_ok(packet, 0, NULL)) {
                if (DEBUG_ENABLED) ERROR("Receive - %s", fr_strerror());
                DEBUG("(TLS) Closing TLS socket from client");
@@ -935,6 +937,8 @@ int proxy_tls_recv(rad_listen_t *listener)
        memcpy(packet->data, data, packet->data_len);
        memcpy(packet->vector, packet->data + 4, 16);
 
+       packet->tls = true;
+
        /*
         *      FIXME: Client MIB updates?
         */
@@ -995,6 +999,7 @@ int proxy_tls_send(rad_listen_t *listener, REQUEST *request)
         *      if there's no packet, encode it here.
         */
        if (!request->proxy->data) {
+               request->reply->tls = true;
                request->proxy_listener->proxy_encode(request->proxy_listener,
                                                      request);
        }