From: Jorge Pereira Date: Tue, 28 Jul 2020 19:20:25 +0000 (-0300) Subject: tacacs: Add missing 'TACACS-Flags' X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=db2bb58a03d8165c2ba9a6461468588d7388e109;p=thirdparty%2Ffreeradius-server.git tacacs: Add missing 'TACACS-Flags' --- diff --git a/src/protocols/tacacs/attrs.h b/src/protocols/tacacs/attrs.h index 0a886c88589..d18e1dfe598 100644 --- a/src/protocols/tacacs/attrs.h +++ b/src/protocols/tacacs/attrs.h @@ -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; diff --git a/src/protocols/tacacs/base.c b/src/protocols/tacacs/base.c index 27810dfa59d..7a6cf551655 100644 --- a/src/protocols/tacacs/base.c +++ b/src/protocols/tacacs/base.c @@ -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 }, diff --git a/src/protocols/tacacs/decode.c b/src/protocols/tacacs/decode.c index 09a498bea02..43a12d32fa9 100644 --- a/src/protocols/tacacs/decode.c +++ b/src/protocols/tacacs/decode.c @@ -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);