Tech-
invite
3GPP
specs
Glossaries
IETF
RFCs
Groups
SIP
ABNFs
T
i
+
Search
SIP
SIP URIs
SIP Headers
SIP P‑Headers
SDP
HTTP
Generic URI
IRI
IMF
MSRP
RTSP
ABNF Notation
ABNF for MSRP – Message Session Relay Protocol – RFC 4975 and RFC 4976
msrp-req-or-resp
=
msrp-request
/
msrp-response
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
=
ident
comment
=
utf8text
continuation-flag
=
"
+
" / "
$
" / "
#
"
pMSRP
=
%x4D.53.52.50
; MSRP in caps
method
=
mSEND
/
mREPORT
/
mAUTH
/
other-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
=
1*
UPALPHA
header
=
Message-ID
/
Success-Report
/
Failure-Report
/
Byte-Range
/
Status
/
Expires
/
Min-Expires
/
Max-Expires
/
Use-Path
/
WWW-Authenticate
/
Authorization
/
Authentication-Info
/
ext-header
ext-header
=
hname
"
:
"
SP
hval
CRLF
hname
=
ALPHA
*
token
hval
=
utf8text
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
=
utf8text
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
=
quoted‑string
nonce
=
"
nonce=
"
nonce-value
nonce-value
=
quoted‑string
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
=
quoted‑string
response
=
"
response=
"
request-digest
request-digest
=
QUOTE
32
LHEX
QUOTE
cnonce
=
"
cnonce=
"
cnonce-value
cnonce-value
=
nonce-value
message-qop
=
"
qop=
"
qop-value
nonce-count
=
"
nc=
"
nc-value
nc-value
=
8
LHEX
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
2
CRLF
data
CRLF
Content-Type
=
"
Content-Type:
"
SP
media-type
media-type
=
type
"
/
"
subtype
*( "
;
"
gen-param
)
type
=
token
subtype
=
token
gen-param
=
pname
[ "
=
"
pval
]
pname
=
token
pval
=
token
/
quoted‑string
data
=
*
OCTET
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
ietf-token
=
<An extension token defined by a standards-track RFC and registered with IANA>
x-token
=
<The two characters "X-" or "x-" followed, with no intervening white space, by any token>
disposition-parm
=
filename-parm
/
creation-date-parm
/
modification-date-parm
/
read-date-parm
/
size-parm
/
parameter
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
=
token
value
=
token
/
quoted‑string
token
=
1*
<any (US-ASCII) CHAR except SPACE, CTLs, or tspecials>
tspecials
=
"
(
" / "
)
" / "
<
" / "
>
" / "
@
" / "
,
" / "
;
" / "
:
" /
"
\
" / <
"
> / "
/
" / "
[
" / "
]
" / "
?
" / "
=
"
quoted-date-time
=
quoted‑string
MIME-extension-field
=
<Any RFC 822 header field which begins with the string "Content-">
status-code
=
3
DIGIT
ident
=
ALPHANUM
3*31
ident-char
ident-char
=
ALPHANUM
/ "
.
" / "
-
" / "
+
" / "
%
" / "
=
"
utf8text
=
*(
HTAB
/ %x20-7E /
UTF8-NONASCII
)
UTF8-NONASCII
=
%xC0-DF 1
UTF8-CONT
/ %xE0-EF 2
UTF8-CONT
/ %xF0-F7 3
UTF8-CONT
/
%xF8-FB 4
UTF8-CONT
/ %xFC-FD 5
UTF8-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