Subject: [AAA-WG]: [issue] Make FAIR flags a part of Command-Code

From: Mark Eklund <[email-masked]>
Date: Fri, 18 May 2001 14:21:13 -0400 (EDT)

Submitter name: Mark Eklund
Submitter email address: [email-masked]
Date first submitted: 18-May-2001
Reference: 
Document: Base
Comment type: T
Priority: 2
Section: 3.0
Rationale/Explanation of issue:
  
* Initially we only had different command-codes.  I.E. ACA = 272,
  and ACR = 271.  We had to have a table of command codes and command 
  types.  This wasn't good for proxy because a proxy should not have
  to know what command type it is to properly proxy it.

* So flags were added to state what type it is.  These represented
  Indication, Request, Answer, Query, Response.

* Between draft 3 and draft 4 three things happened.
  1. Query and Response were eliminated.
  2. Failed was added.
  3. Requests and Answers were combined to give us one code
     ACA = ACR = 271 and the flags must be used to determine which type
     it is.

  This is good because it makes it easy to match a request with an
  answer without even knowing what protocol it is.

  This is bad because for known AVPs, you can no longer use a switch 
  statement to determine the attribute.  

Requested change:

  Go the next step.  Use the top 8 bits of the Command-Code for attribute
  type and the bottom 24 bits for the Command-Code.  Now you have the best 
  of all worlds, a command that documents what type it is, you can easily 
  match requests with answers, and an ACA and an ACR can be distinguished 
  in a 32 bit value.

====================================================================

---

From: Mark Eklund <[email-masked]>
Date: Wed, 23 May 2001 18:18:39 -0400 (EDT)

Resolution of Issue:

The command flags will be moved to the header as such:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Version     |           Message Length                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Hop-by-Hop Identifier                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      End-to-End Identifier                    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |A|   Reserved    |       Command-Code                          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           Vendor-ID                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  AVPs ...
      +-+-+-+-+-+-+-+-+-+-+-+-+-

The FIR flags were removed as a result of other changes.
The Message Length has been increased in the event that one day
something exceptionally large like fingerprint information is needed.
The flags have been moved into the Command Code itself.

The AVP will be also changed to have a 24 bit length to reflect
the larger Message Length.

-mark