tech-invite   World Map
3GPP     Specs     Glossaries     Architecture     IMS     UICC       IETF     RFCs     Groups     SIP     ABNFs       Search     Home

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