amqp                = protocol-header ; ALTERED: amqp-unit not defined anywhere
protocol-header     = literal-AMQP protocol-id protocol-version
literal-AMQP        = %d65.77.81.80                             ; "AMQP"
protocol-id         = %d0                                       ; Must be 0
protocol-version    = %d0.9.1                                   ; 0-9-1
method              = method-frame [content]                    ; ALTERED: Optional rules are enclosed with brackets
method-frame        = %d1 frame-properties method-payload frame-end
frame-properties    = channel payload-size
channel             = short-uint                                ; Non-zero
payload-size        = long-uint
method-payload      = class-id method-id *amqp-field
class-id            = %x00.01-FF.FF
method-id           = %x00.01-FF.FF
amqp-field          = BIT / OCTET / short-uint / long-uint / long-long-uint / short-string / long-string / timestamp / field-table
short-uint          = 2OCTET
long-uint           = 4OCTET
long-long-uint      = 8OCTET
short-string        = OCTET *string-char ; length + content
string-char         = %x01-FF ; ALTERED: does not fit RFC2234 or superior
long-string         = long-uint *OCTET ; length + content
timestamp           = long-long-uint ; 64-bit POSIX
field-table         = long-uint *field-value-pair
field-value-pair    = field-name field-value
field-name          = short-string
field-value         = %x74 boolean / %x62 short-short-int / %x42 short-short-uint / %x55 short-int / %x75 short-uint / %x49 long-int / %x69 long-uint / %x4c long-long-int / %x6c long-long-uint / %x66 float / %x64 double / %x44 decimal-value / %x73 short-string / %x53 long-string / %x41 field-array / %x54 timestamp / %x46 field-table / %x56                                   ; ALTERED: Case-sensitive strings should have its characters specified individually
boolean             = OCTET                                     ; 0 = FALSE, else TRUE
short-short-int     = OCTET
short-short-uint    = OCTET
short-int           = 2OCTET
long-int            = 4OCTET
long-long-int       = 8OCTET
float               = 4OCTET                                   ; IEEE-754
double              = 8OCTET                                   ; rfc1832 XDR double
decimal-value       = scale long-uint
scale               = OCTET                                     ; number of decimal digits
field-array         = long-int *field-value                     ; array of values
frame-end           = %xCE
content             = %d2 content-header *content-body
content-header      = frame-properties header-payload frame-end
header-payload      = content-class content-weight content-body-size property-flags property-list
content-class       = OCTET
content-weight      = %x00
content-body-size   = long-long-uint
property-flags      = 15*BIT %b0 / 15*BIT %b1 property-flags
property-list       = *amqp-field
content-body        = %d3 frame-properties body-payload frame-end
body-payload        = *OCTET
heartbeat           = %d8 %d0 %d0 frame-end
