tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Gloss.     Arch.     IMS     UICC    |    Misc.    |    search     info

ABNF grammars

 

ABNF for MSRP – Message Session Relay Protocol – RFC 4975 and RFC 4976


msrp-req-or-resp   =
msrp-request   =
req-start     headers     [ content-stuff ]     end-line

msrp-response   =
req-start   =
pMSRP   SP   transact-id   SP   method   CRLF

resp-start   =
pMSRP   SP   transact-id   SP   status-code   [SP   comment]   CRLF

headers   =
To-Path   CRLF   From-Path   CRLF   1*( header   CRLF )

end-line   =
"-------"     transact-id     continuation-flag     CRLF

transact-id   =
comment   =
continuation-flag   =
"+"   /   "$"   /   "#"

pMSRP   =
%x4D.53.52.50     ;  MSRP in caps

method   =
mSEND   =
%x53.45.4E.44     ;  SEND in caps

mREPORT   =
%x52.45.50.4F.52.54     ;  REPORT in caps

mAUTH   =
%x41.55.54.48     ;  AUTH in caps

other-method   =
header   =
ext-header   =
hname   ":"   SP   hval   CRLF

hname   =
ALPHA   *token

hval   =
To-Path   =
"To-Path:"   SP   MSRP-URI   *( SP   MSRP-URI )

From-Path   =
"From-Path:"   SP   MSRP-URI   *( SP   MSRP-URI )

Message-ID   =
"Message-ID:"   SP   ident

Success-Report   =
"Success-Report:"   ( "yes"   /   "no" )

Failure-Report   =
"Failure-Report:"   ( "yes"   /   "no"   /   "partial" )

Byte-Range   =
"Byte-Range:"   SP   range-start   "-"   range-end   "/"   total

range-start   =
1*DIGIT

range-end   =
1*DIGIT   /   "*"

total   =
1*DIGIT   /   "*"

Status   =
"Status:"   SP   namespace   SP   status-code   [ SP   text-reason ]

namespace   =
3( DIGIT )

text-reason   =
Expires   =
"Expires:"   SP   1*DIGIT

Min-Expires   =
"Min-Expires:"   SP   1*DIGIT

Max-Expires   =
"Max-Expires:"   SP   1*DIGIT

Use-Path   =
"Use-Path:"   SP   MSRP-URI   *( SP   MSRP-URI )

WWW-Authenticate   =
"WWW-Authenticate:" SP   "Digest"   SP   digest-param   *( ","   SP   digest-param )

digest-param   =
( realm   /   nonce   /  
[ opaque ]   /   [ stale ]   /   [ algorithm ]   /   qop-options   /   [ auth-param ] )

realm   =
"realm="   realm-value

realm-value   =
nonce   =
"nonce="   nonce-value

nonce-value   =
opaque   =
"opaque="   quoted-string

stale   =
"stale="   ( "true"   /   "false" )

algorithm   =
"algorithm="   ( "MD5"   /   token )

qop-options   =
"qop="   QUOTE   qop-list   QUOTE

qop-list   =
qop-value   *( ","   qop-value )

qop-value   =
"auth"   /   token

auth-param   =
token   "="   ( token   /   quoted-string )

Authorization   =
"Authorization:"   SP   credentials

credentials   =
"Digest"   SP   digest-response   *( ","   SP   digest-response )

digest-response   =
( username   /   realm   /   nonce   /   response   /   [ algorithm ]   /   cnonce   /   [ opaque ]   /
message-qop   /   [ nonce-count ]   /   [ auth-param ] )

username   =
"username="   username-value

username-value   =
response   =
"response="   request-digest

request-digest   =
QUOTE   32LHEX   QUOTE

cnonce   =
"cnonce="   cnonce-value

cnonce-value   =
message-qop   =
"qop="   qop-value

nonce-count   =
"nc="   nc-value

nc-value   =
8LHEX

Authentication-Info   =
"Authentication-Info:"   SP   ainfo   *( ","   ainfo )

ainfo   =
nextnonce   /   message-qop   /   response-auth   /   cnonce   /   nonce-count

nextnonce   =
"nextnonce="   nonce-value

response-auth   =
"rspauth="   response-digest

response-digest   =
QUOTE   *LHEX   QUOTE

MSRP-URI   =
msrp-scheme   "://"   authority   [ "/"   session-id ] ";"   transport  
*( ";"   URI-parameter )

msrp-scheme   =
"msrp"   /   "msrps"

session-id   =
1*( unreserved   /   "+"   /   "="   /   "/" )

transport   =
"tcp"   /   1*ALPHANUM

URI-parameter   =
token   [ "="   token ]

content-stuff   =
Content-Type   =
"Content-Type:"   SP   media-type

media-type   =
type   "/"   subtype   *( ";"   gen-param )

type   =
subtype   =
gen-param   =
pname   [ "="   pval ]

pname   =
pval   =
data   =
Other-Mime-header   =
( Content-ID   /   Content-Description   /   Content-Disposition   /   MIME-extension-field )


; Content-ID, and Content-Description are defined in
; Content-Disposition is defined in RFC 2183


Content-ID   =
"Content-ID:"   msg-id

Content-Description   =
"Content-Description:"   *text

Content-Disposition   =
"Content-Disposition:"   disposition-type   *( ";"   disposition-parm )

disposition-type   =
"inline"   /   "attachment"   /   extension-token

extension-token   =
ietf-token   =
x-token   =
disposition-parm   =
filename-parm   =
"filename="   value

creation-date-parm   =
"creation-date="   quoted-date-time

modification-date-parm   =
"modification-date="   quoted-date-time

read-date-parm   =
"read-date="   quoted-date-time

size-parm   =
"size="   1*DIGIT

parameter   =
attribute   "="   value

attribute   =
value   =
token   =
tspecials   =
"("   /   ")"   /   "<"   /   ">"   /   "@"   /   ","   /   ";"   /   ":"   /
"\"   /   <">   /   "/"   /   "["   /   "]"   /   "?"   /   "="

quoted-date-time   =
MIME-extension-field   =
status-code   =
ident   =
ident-char   =
ALPHANUM   /   "."   /   "-"   /   "+"   /   "%"   /   "="

utf8text   =
*( HTAB   /   %x20-7E   /   UTF8-NONASCII )

UTF8-NONASCII   =
%xC0-DF 1UTF8-CONT   /   %xE0-EF 2UTF8-CONT   /   %xF0-F7 3UTF8-CONT   /
%xF8-FB 4UTF8-CONT   /   %xFC-FD 5UTF8-CONT

UTF8-CONT   =
%x80-BF

token   =
1*( %x21   /   %x23-27   /   %x2A-2B   /   %x2D-2E   /   %x30-39   /   %x41-5A   /   %x5E-7E )

quoted-string   =
DQUOTE   *( qdtext   /   qd-esc )   DQUOTE

qdtext   =
SP   /   HTAB   /   %x21   /   %x23-5B   /   %x5D-7E   /   UTF8-NONASCII

qd-esc   =
( BACKSLASH   BACKSLASH )   /   ( BACKSLASH   DQUOTE )

BACKSLASH   =
"\"

UPALPHA   =
%x41-5A

ALPHANUM   =
ALPHA   /   DIGIT

QUOTE   =
%x22

LHEX   =
DIGIT   /   %x61-66