tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Glossaries     Architecture     IMS     UICC    |    search

ABNF grammars

|   SIP   |   SIP URIs   |   SIP Headers   |   SIP Private Headers   |   SDP   |
|   HTTP   |   Generic URI   |   IRI   |   IMF   |   MSRP   |   RTSP   |   ABNF Notation   |

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

 

Here          Top

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

msrp-response   =
resp-start     headers     end-line

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   =
*( Other-Mime-header   CRLF )   Content-Type   2CRLF   data   CRLF

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