]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
tacacs: Add missing 'TACACS-Flags'
authorJorge Pereira <jpereiran@gmail.com>
Tue, 28 Jul 2020 19:20:25 +0000 (16:20 -0300)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 13 Aug 2020 21:10:36 +0000 (17:10 -0400)
src/protocols/tacacs/attrs.h
src/protocols/tacacs/base.c
src/protocols/tacacs/decode.c

index 0a886c885893dc1e9097a9c5773e15f6bb9b6870..d18e1dfe59862ee0db0b029aefbe5c0514450938 100644 (file)
@@ -38,6 +38,7 @@ extern fr_dict_attr_t const *attr_tacacs_authentication_type;
 extern fr_dict_attr_t const *attr_tacacs_authorization_status;
 extern fr_dict_attr_t const *attr_tacacs_client_port;
 extern fr_dict_attr_t const *attr_tacacs_data;
+extern fr_dict_attr_t const *attr_tacacs_flags;
 extern fr_dict_attr_t const *attr_tacacs_packet;
 extern fr_dict_attr_t const *attr_tacacs_packet_type;
 extern fr_dict_attr_t const *attr_tacacs_privilege_level;
index 27810dfa59ddb8dd8214f453fecac48cdb37e6eb..7a6cf551655c041542c7414dec26c1842bfbf363 100644 (file)
@@ -55,6 +55,7 @@ fr_dict_attr_t const *attr_tacacs_authentication_type;
 fr_dict_attr_t const *attr_tacacs_authorization_status;
 fr_dict_attr_t const *attr_tacacs_client_port;
 fr_dict_attr_t const *attr_tacacs_data;
+fr_dict_attr_t const *attr_tacacs_flags;
 fr_dict_attr_t const *attr_tacacs_packet;
 fr_dict_attr_t const *attr_tacacs_packet_type;
 fr_dict_attr_t const *attr_tacacs_privilege_level;
@@ -79,6 +80,7 @@ fr_dict_attr_autoload_t libfreeradius_tacacs_dict_attr[] = {
        { .out = &attr_tacacs_authorization_status, .name = "TACACS-Authorization-Status", .type = FR_TYPE_UINT8, .dict = &dict_tacacs },
        { .out = &attr_tacacs_client_port, .name = "TACACS-Client-Port", .type = FR_TYPE_STRING, .dict = &dict_tacacs },
        { .out = &attr_tacacs_data, .name = "TACACS-Data", .type = FR_TYPE_STRING, .dict = &dict_tacacs },
+       { .out = &attr_tacacs_flags, .name = "TACACS-Flags", .type = FR_TYPE_UINT8, .dict = &dict_tacacs },
        { .out = &attr_tacacs_packet, .name = "TACACS-Packet", .type = FR_TYPE_STRUCT, .dict = &dict_tacacs },
        { .out = &attr_tacacs_packet_type, .name = "TACACS-Packet-Type", .type = FR_TYPE_UINT8, .dict = &dict_tacacs },
        { .out = &attr_tacacs_privilege_level, .name = "TACACS-Privilege-Level", .type = FR_TYPE_UINT8, .dict = &dict_tacacs },
index 09a498bea02eacc14ac4b7d37ba8329ebbb2e6dd..43a12d32fa9697c693f8c38762f3ac11d37c5609 100644 (file)
@@ -110,6 +110,11 @@ int fr_tacacs_packet_decode(RADIUS_PACKET * const packet)
        vp->vp_uint8 = pkt->hdr.seq_no;
        fr_cursor_append(&cursor, vp);
 
+       vp = fr_pair_afrom_da(packet, attr_tacacs_flags);
+       if (!vp) goto oom;
+       vp->vp_uint8 = pkt->hdr.flags;
+       fr_cursor_append(&cursor, vp);
+
        vp = fr_pair_afrom_da(packet, attr_tacacs_session_id);
        if (!vp) goto oom;
        vp->vp_uint32 = ntohl(pkt->hdr.session_id);