Data: required rights
list of optional rights
The LISTRIGHTS response occurs as a result of a LISTRIGHTS
command. The first argument is a string containing the (possibly
empty) set of rights the identifier will always be granted on the
dataset or attribute.
Following this are zero or more strings each containing a single
right which the current user may revoke or grant to the identifier
in the dataset or attribute.
The same right MUST NOT be listed more than once in the LISTRIGHTS
response.
6.8. Quotas
The section defines the commands and responses relating to quotas.
6.8.1. GETQUOTA Command
Arguments: dataset
Data: untagged responses: QUOTA
Result: OK - Quota information returned
NO - Quota failure: can't access resource limit
no resource limit
BAD - command unknown or arguments invalid
The GETQUOTA command takes the name of a dataset, and returns in
an untagged QUOTA response the name of the dataset, quota limit in
bytes that applies to that dataset and the quota usage within that
limit. The scope of a quota limit is implementation dependent.
Example: C: A043 GETQUOTA "/option/user/fred/common"
S: * QUOTA "/option/user/fred/common" 1048576 2475
S: A043 OK "Getquota completed"
6.8.3. QUOTA Untagged Response
Data: dataset
quota limit in bytes
amount of quota limit used
extension data
The QUOTA untagged response is generated as a result of a GETQUOTA
command or MAY be generated by the server in response to a SEARCH
or STORE command to warn about high usage of a quota. It includes
the name of the applicable dataset, the quota limit in bytes, the
quota usage and some optional extension data. Clients MUST
tolerate the extension data as its use is reserved for a future
extension.
6.9. Extensions
In order to simplify the process of extending the protocol, clients
MUST tolerate unknown server responses which meet the syntax of
response-extend. In addition, clients MUST tolerate unknown server
response codes which meet the syntax of resp-code-ext. Availability
of new commands MUST be announced via a capability on the initial
greeting line and such commands SHOULD meet the syntax of
command-extend.
Servers MUST respond to unknown commands with a BAD command
completion result. Servers MUST skip over non-synchronizing literals
contained in an unknown command. This may be done by assuming the
unknown command matches the command-extend syntax, or by reading a
line at a time and checking for the non-synchronizing literal syntax
at the end of the line.
7. Registration Procedures
ACAP's usefulness comes from providing a structured storage model for
all sorts of configuration data. However, for its potential to be
achieved, it is important that the Internet community strives for the
following goals:
(1) Standardization. It is very important to standardize dataset
classes. The authors hope that ACAP achieves the success that SNMP
has seen with the definition of numerous standards track MIBs.
(2) Community Review. In the absence of standardization, it is
important to get community review on a proposal to improve its
engineering quality. Community review is strongly recommended prior
to registration. The ACAP implementors mailing list
<ietf-acap@andrew.cmu.edu> should be used for this purpose.
(3) Registration. Registration serves a two-fold purpose. First it
prevents use of the same name for different purposes, and second it
provides a one-stop list which can be used to locate existing
extensions or dataset classes to prevent duplicate work.
The following registration templates may be used to register ACAP
protocol elements with the Internet Assigned Numbers Authority
(IANA).
7.1. ACAP Capabilities
New ACAP capabilities MUST be registered prior to use. Careful
consideration should be made before extending the protocol, as it can
lead to complexity or interoperability problems. Review of proposals
on the acap implementors mailing list is strongly encouraged prior to
registration.
To: iana@iana.org
Subject: Registration of ACAP capability
Capability name:
Capability keyword:
Capability arguments:
Published Specification(s):
(Optional, but strongly encouraged)
Person and email address to contact for further information:
7.2. ACAP Response Codes
ACAP response codes are registered on a first come, first served
basis. Review of proposals on the acap implementors mailing list is
strongly encouraged prior to registration.
To: iana@iana.org
Subject: Registration of ACAP response code
Response Code:
Arguments (use ABNF to specify syntax):
Purpose:
Published Specification(s):
(Optional, but strongly encouraged)
Person and email address to contact for further information:
7.3. Dataset Classes
A dataset class provides a core set of attributes for use in a
specified hierarchy. It may also define rules for the dataset
hierarchy underneath that class. Dataset class specifications must
be standards track or IESG approved experimental RFCs.
To: iana@iana.org
Subject: Registration of ACAP dataset class
Dataset class name/attribute prefix:
Purpose:
Published Specification(s):
(Standards track or IESG approved experimental RFC)
Person and email address to contact for further information:
7.4. Vendor Subtree
Vendors may reserve a portion of the ACAP namespace for private use.
Dataset class names beginning with "vendor.<company/product name>."
are reserved for use by that company or product. In addition, all
attribute names beginning with "vendor.<company/product name>." are
reserved for use by that company or product once registered.
Registration is on a first come, first served basis. Whenever
possible, private attributes and dataset classes should be avoided in
favor of improving interoperable dataset class definitions.
To: iana@iana.org
Subject: Registration of ACAP vendor subtree
Private Prefix: vendor.<company/product name>.
Person and email address to contact for further information:
(company names and addresses should be included when appropriate)
8. Formal Syntax
The following syntax specification uses the augmented Backus-Naur
Form (BNF) notation as specified in [ABNF]. This uses the ABNF core
rules as specified in Appendix A of the ABNF specification [ABNF].
Except as noted otherwise, all alphabetic characters are
case-insensitive. The use of upper or lower case characters to
define token strings is for editorial clarity only. Implementations
MUST accept these strings in a case-insensitive fashion.
The "initial-greeting" rule below defines the initial ACAP greeting
from the server. The "command" rule below defines the syntax for
commands sent by the client. The "response" rule below defines the
syntax for responses sent by the server.
ATOM-CHAR = "!" / %x23-27 / %x2A-5B / %x5D-7A / %x7C-7E
;; Any CHAR except ATOM-SPECIALS
ATOM-SPECIALS = "(" / ")" / "{" / SP / CTL / QUOTED-SPECIALS
CHAR = %x01-7F
DIGIT-NZ = %x31-39
; non-zero digits ("1" - "9")
QUOTED-CHAR = SAFE-UTF8-CHAR / "\" QUOTED-SPECIALS
QUOTED-SPECIALS = <"> / "\"
SAFE-CHAR = %x01-09 / %x0B-0C / %x0E-21 /
%x23-5B / %x5D-7F
;; any TEXT-CHAR except QUOTED-SPECIALS
SAFE-UTF8-CHAR = SAFE-CHAR / UTF8-2 / UTF8-3 / UTF8-4 /
UTF8-5 / UTF8-6
TAG-CHAR = %x21 / %x23-27 / %x2C-5B / %x5D-7A / %x7C-7E
;; Any ATOM-CHAR except "*" or "+"
TEXT-CHAR = %x01-09 / %x0B-0C / %x0E-7F
;; any CHAR except CR and LF
TEXT-UTF8-CHAR = SAFE-UTF8-CHAR / QUOTED-SPECIALS
UTF8-1 = %x80-BF
UTF8-2 = %xC0-DF UTF8-1
UTF8-3 = %xE0-EF 2UTF8-1
UTF8-4 = %xF0-F7 3UTF8-1
UTF8-5 = %xF8-FB 4UTF8-1
UTF8-6 = %xFC-FD 5UTF8-1
UTF8-CHAR = TEXT-UTF8-CHAR / CR / LF
acl = "(" [acl-identrights *(SP acl-identrights)] ")"
*(SPACE acl-identrights)] ")"
acl-identifier = string-utf8
;; MUST NOT contain HTAB
acl-identrights = string-utf8
;; The identifier followed by a HTAB,
;; followed by the rights.
acl-delobject = "(" dataset SP attribute [SP entry-name] ")"
acl-object = "(" dataset [SP attribute [SP entry-name]] ")"
acl-rights = quoted
atom = ALPHA *1023ATOM-CHAR
attribute = string-utf8
;; dot-separated attribute name
;; MUST NOT contain "*" or "%"
attribute-store = attribute SP (value-nildef /
"(" 1*(metadata-write-q SP value-store) ")")
;; MUST NOT include the same metadata twice
auth-type = <"> auth-type-name <">
auth-type-name = iana-token
;; as defined in SASL [SASL]
command = tag SP (command-any / command-auth /
command-nonauth) CRLF
;; Modal based on state
command-authent = "AUTHENTICATE" SP auth-type
[SP string] *(CRLF string)
command-any = "NOOP" / command-lang / "LOGOUT" /
command-extend
command-auth = command-delacl / command-dsince /
command-freectx / command-getquota /
command-lrights / command-myrights /
command-search / command-setacl /
command-store
;; only valid in authenticated state
command-delacl = "DELETEACL" SP acl-delobject [SP acl-identifier]
command-dsince = "DELETEDSINCE" SP dataset SP time
command-extend = extend-token [SP extension-data]
command-freectx = "FREECONTEXT" SP context
command-getquota = "GETQUOTA" SP dataset
command-lang = "LANG" *(SP lang-tag)
command-lrights = "LISTRIGHTS" SP acl-object
command-myrights = "MYRIGHTS" SP acl-object
command-nonauth = command-authent
;; only valid in non-authenticated state
command-search = "SEARCH" SP (dataset / context)
*(SP search-modifier) SP search-criteria
;; MUST NOT include same search-modifier twice
command-setacl = "SETACL" SP acl-object SP acl-identifier
SP acl-rights
command-store = "STORE" SP store-entry-list
comparator = <"> comparator-name <">
comparator-name = ["+" / "-"] iana-token
context = string-utf8
;; MUST NOT begin with slash ("/")
dataset = string-utf8
;; slash-separated dataset name
;; begins with slash
entry = entry-name / entry-path
entry-name = string-utf8
;; entry name MUST NOT contain slash
;; MUST NOT begin with "."
entry-path = string-utf8
;; slash-separated path to entry
;; begins with slash
entry-relative = string-utf8
;; potentially relative path to entry
extend-token = atom
;; MUST be defined by a standards track or
;; IESG approved experimental protocol extension
extension-data = extension-item *(SP extension-item)
extension-item = extend-token / string / number /
"(" [extension-data] ")"
iana-token = atom
;; MUST be registered with IANA
initial-greeting = "*" SP "ACAP" *(SP "(" init-capability ")") CRLF
init-capability = init-cap-context / init-cap-extend /
init-cap-implem / init-cap-sasl
init-cap-context = "CONTEXTLIMIT" SP string
init-cap-extend = iana-token [SP string-list]
init-cap-implem = "IMPLEMENTATION" SP string
init-cap-sasl = "SASL" SP string-list
lang-tag = <"> Language-Tag <">
;; Language-Tag rule is defined in [LANG-TAGS]
literal = "{" number [ "+" ] "}" CRLF *OCTET
;; The number represents the number of octets
;; MUST be literal-utf8 except for values
literal-utf8 = "{" number [ "+" ] "}" CRLF *UTF8-CHAR
;; The number represents the number of octets
;; not the number of characters
metadata = attribute [ "(" metadata-type-list ")" ]
;; attribute MAY end in "*" as wildcard.
metadata-list = metadata *(SP metadata)
metadata-type = "attribute" / "myrights" / "size" /
"count" / metadata-write
metadata-type-q = <"> metadata-type <">
metadata-type-list = metadata-type-q *(SP metadata-type-q)
metadata-write = "value" / "acl"
metadata-write-q = <"> metadata-write <">
nil = "NIL"
number = *DIGIT
;; A 32-bit unsigned number.
;; (0 <= n < 4,294,967,296)
nz-number = DIGIT-NZ *DIGIT
;; A 32-bit unsigned non-zero number.
;; (0 < n < 4,294,967,296)
position = number
;; "0" if context is not enumerated
;; otherwise this is non-zero
quota-limit = number
quota-usage = number
quoted = <"> *QUOTED-CHAR <">
;; limited to 1024 octets between the <">s
response = response-addto / response-alert / response-bye /
response-change / response-cont /
response-deleted / response-done /
response-entry / response-extend /
response-listr / response-lang /
response-mtimei / response-mtimeu /
response-myright / response-quota /
response-refer / response-remove / response-stat
response-addto = "*" SP "ADDTO" SP context SP entry-name
SP position SP return-data-list
response-alert = "*" SP "ALERT" SP resp-body CRLF
;; Client MUST display alert text to user
response-bye = "*" SP "BYE" SP resp-body CRLF
;; Server will disconnect condition
response-change = "*" SP "CHANGE" SP context SP entry-name
SP position SP position SP return-data-list
response-cont = "+" SP string
response-deleted = tag SP "DELETED" SP entry-name
response-done = tag SP resp-cond-state CRLF
response-entry = tag SP "ENTRY" SP entry SP return-data-list
response-extend = (tag / "*") SP extend-token [SP extension-data]
response-lang = "*" SP "LANG" SP lang-tag 1*(SP comparator)
response-listr = tag SP "LISTRIGHTS" SP acl-rights
*(SP acl-rights)
response-mtimei = tag SP "MODTIME" SP time
response-mtimeu = "*" SP "MODTIME" SP context SP time
response-myright = tag SP "MYRIGHTS" SP acl-rights
response-quota = "*" SP "QUOTA" SP dataset SP quota-limit
SP quota-usage [SP extension-data]
response-refer = tag SP "REFER" SP dataset
1*(SP <"> url-relative <">)
response-remove = "*" SP "REMOVEFROM" SP context SP
entry-name SP position
response-stat = "*" SP resp-cond-state CRLF
resp-body = ["(" resp-code ")" SP] quoted
resp-code = "AUTH-TOO-WEAK" / "ENCRYPT-NEEDED" /
resp-code-inval / resp-code-mod /
resp-code-noexist / resp-code-perm / "QUOTA" /
resp-code-refer / resp-code-sasl /
resp-code-toomany / "TOOOLD" /
"TRANSITION-NEEDED" / "TRYFREECONTEXT" /
"TRYLATER" / "WAYTOOMANY" / resp-code-ext
resp-code-ext = iana-token [SP extension-data]
;; unknown codes MUST be tolerated by the client
resp-code-inval = "INVALID" 1*(SP entry-path SP attribute)
resp-code-mod = "MODIFIED" SP entry-path
resp-code-noexist = "NOEXIST" SP dataset
resp-code-perm = "PERMISSION" SP acl-object
resp-code-refer = "REFER" 1*(SP <"> url-relative <">)
resp-code-sasl = "SASL" SP string
resp-code-toomany = "TOOMANY" SP nz-number
resp-cond-state = ("OK" / "NO" / "BAD") SP resp-body
;; Status condition
return-attr-list = "(" return-metalist *(SP return-metalist) ")"
;; occurs when "*" in RETURN pattern on SEARCH
return-data = return-metadata / return-metalist /
return-attr-list
return-data-list = return-data *(SP return-data)
return-metalist = "(" return-metadata *(SP return-metadata) ")"
;; occurs when multiple metadata items requested
return-metadata = nil / string / value-list / acl
searchkey-equal = "EQUAL" SP attribute SP comparator SP value-nil
searchkey-comp = "COMPARE" SP attribute SP comparator SP value
searchkey-prefix = "PREFIX" SP attribute SP comparator SP value
searchkey-range = "RANGE" SP nz-number SP nz-number SP time
searchkey-strict = "COMPARESTRICT" SP attribute SP comparator
SP value
searchkey-substr = "SUBSTRING" SP attribute SP comparator SP value
searchmod-depth = "DEPTH" SP number
searchmod-hard = "HARDLIMIT" SP nz-number
searchmod-limit = "LIMIT" SP number SP number
searchmod-make = "MAKECONTEXT" [SP "ENUMERATE"]
[SP "NOTIFY"] SP context
searchmod-ninh = "NOINHERIT"
searchmod-return = "RETURN" SP "(" [metadata-list] ")"
searchmod-sort = "SORT" SP "(" sort-list ")"
search-criteria = "ALL" / searchkey-equal / searchkey-comp /
searchkey-strict / searchkey-range /
searchkey-prefix / searchkey-substr /
"NOT" SP search-criteria /
"OR" SP search-criteria SP search-criteria /
"AND" SP search-criteria SP search-criteria
search-modifier = searchmod-depth / searchmod-hard /
searchmod-limit / searchmod-make /
searchmod-ninh / searchmod-return /
searchmod-sort
sort-list = sort-item *(SP sort-item)
sort-item = attribute SP comparator
store-entry = "(" entry-path *(SP store-modifier)
*(SP attribute-store) ")"
;; MUST NOT include same store-modifier twice
;; MUST NOT include same attribute twice
store-entry-list = store-entry *(SP store-entry)
;; MUST NOT include same entry twice
store-modifier = store-mod-unchang / store-mod-nocreate
store-mod-nocreate = "NOCREATE"
store-mod-unchang = "UNCHANGEDSINCE" SP time
string = quoted / literal
string-list = string *(SP string)
string-utf8 = quoted / literal-utf8
tag = 1*32TAG-CHAR
time = <"> time-year time-month time-day time-hour
time-minute time-second time-subsecond <">
;; Timestamp in UTC
time-day = 2DIGIT ;; 01-31
time-hour = 2DIGIT ;; 00-23
time-minute = 2DIGIT ;; 00-59
time-month = 2DIGIT ;; 01-12
time-second = 2DIGIT ;; 00-60
time-subsecond = *DIGIT
time-year = 4DIGIT
value = string
value-list = "(" [value *(SP value)] ")"
value-nil = value / nil
value-nildef = value-nil / "DEFAULT"
value-store = value-nildef / value-list / acl
url-acap = "acap://" url-server "/" url-enc-entry
[url-filter] [url-extension]
;; url-enc-entry interpreted relative to "/"
url-attr-list = url-enc-attr *("&" url-enc-attr)
url-auth = ";AUTH=" ("*" / url-enc-auth)
url-achar = uchar / "&" / "=" / "~"
;; See RFC1738 for definition of "uchar"
url-char = uchar / "=" / "~" / ":" / "@" / "/"
;; See RFC1738 for definition of "uchar"
url-enc-attr = 1*url-char
;; encoded version of attribute name
url-enc-auth = 1*url-achar
;; encoded version of auth-type-name above
url-enc-entry = 1*url-char
;; encoded version of entry-relative above
url-enc-user = *url-achar
;; encoded version of login userid
url-extension = *("?" 1*url-char)
url-filter = "?" url-attr-list
url-relative = url-acap / [url-enc-entry] [url-filter]
;; url-enc-entry is relative to base URL
url-server = [url-enc-user [url-auth] "@"] hostport
;; See RFC1738 for definition of "hostport"
9. Multi-lingual Considerations
The IAB charset workshop [IAB-CHARSET] came to a number of
conclusions which influenced the design of ACAP. The decision to use
UTF-8 as the character encoding scheme was based on that work. The
LANG command to negotiate a language for error messages is also
included.
Section 3.4.5 of the IAB charset workshop report states that there
should be a way to identify the natural language for human readable
strings. Several promising proposals have been made for use within
ACAP, but no clear consensus on a single method is apparent at this
stage. The following rules are likely to permit the addition of
multi-lingual support in the future:
(1) A work in progress called Multi-Lingual String Format (MLSF)
proposes a layer on top of UTF-8 which uses otherwise illegal UTF-8
sequences to store language tags. In order to permit its addition to
a future version of this standard, client-side UTF-8 interpreters
MUST be able to silently ignore illegal multi-byte UTF-8 characters,
and treat illegal single-byte UTF-8 characters as end of string
markers. Servers, for the time being, MUST be able to silently
accept illegal UTF-8 characters, except in attribute names and entry
names. Clients MUST NOT send illegal UTF-8 characters to the server
unless a future standard changes this rule.
(2) There is a proposal to add language tags to Unicode. To support
this, servers MUST be able to store UTF-8 characters of up to 20 bits
of data.
(3) The metadata item "language" is reserved for future use.
10. Security Considerations
The AUTHENTICATE command uses SASL [SASL] to provide basic
authentication, authorization, integrity and privacy services. This
is described in section 6.3.1.
When the CRAM-MD5 mechanism is used, the security considerations for
the CRAM-MD5 SASL mechanism [CRAM-MD5] apply. The CRAM-MD5 mechanism
is also susceptible to passive dictionary attacks. This means that
if an authentication session is recorded by a passive observer, that
observer can try common passwords through the CRAM-MD5 mechanism and
see if the results match. This attack is reduced by using hard to
guess passwords. Sites are encouraged to educate users and have the
password change service test candidate passwords against a
dictionary. ACAP implementations of CRAM-MD5 SHOULD permit passwords
of at least 64 characters in length.
ACAP protocol transactions are susceptible to passive observers or
man in the middle attacks which alter the data, unless the optional
encryption and integrity services of the AUTHENTICATE command are
enabled, or an external security mechanism is used for protection.
It may be useful to allow configuration of both clients and servers
to refuse to transfer sensitive information in the absence of strong
encryption.
ACAP access control lists provide fine grained authorization for
access to attributes. A number of related security issues are
described in section 3.5.
ACAP URLs have the same security considerations as IMAP URLs
[IMAP-URL].
ACAP clients are encouraged to consider the security problems
involved with a lab computer situation. Specifically, a client cache
of ACAP configuration information MUST NOT allow access by an
unauthorized user. One way to assure this is for an ACAP client to
be able to completely flush any non-public cached configuration data
when a user leaves.
As laptop computers can be easily stolen and a cache of configuration
data may contain sensitive information, a disconnected mode ACAP
client may wish to encrypt and password protect cached configuration
information.
11. Acknowledgments
Many thanks to the follow people who have contributed to ACAP over
the past four years: Wallace Colyer, Mark Crispin, Jack DeWinter, Rob
Earhart, Ned Freed, Randy Gellens, Terry Gray, J. S. Greenfield,
Steve Dorner, Steve Hole, Steve Hubert, Dave Roberts, Bart Schaefer,
Matt Wall and other participants of the IETF ACAP working group.
12. Authors' Addresses
Chris Newman
Innosoft International, Inc.
1050 Lakes Drive
West Covina, CA 91790 USA
Email: chris.newman@innosoft.com
John Gardiner Myers
Netscape Communications
501 East Middlefield Road
Mail Stop MV-029
Mountain View, CA 94043
Email: jgmyers@netscape.com
Appendices
A. References
[ABNF] Crocker, Overell, "Augmented BNF for Syntax Specifications:
ABNF", RFC2234, Internet Mail Consortium, Demon Internet Ltd,
November 1997.
<ftp://ds.internic.net/rfc/rfc2234.txt>
[BASIC-URL] Berners-Lee, Masinter, McCahill, "Uniform Resource
Locators (URL)", RFC1738, CERN, Xerox Coproration, University of
Minnesota, December 1994.
<ftp://ds.internic.net/rfc/rfc1738.txt>
[CHARSET-LANG-POLICY] Alvestrand, "IETF Policy on Character Sets and
Languages", work in progress.
[CRAM-MD5] Klensin, Catoe, Krumviede, "IMAP/POP AUTHorize Extension
for Simple Challenge/Response", RFC2195, MCI, September 1997.
<ftp://ds.internic.net/rfc/rfc2195.txt>
[IAB-CHARSET] Weider, Preston, Simonsen, Alvestrand, Atkinson,
Crispin, Svanberg, "The Report of the IAB Character Set Workshop held
29 February - 1 March, 1996", RFC2130, April 1997.
<ftp://ds.internic.net/rfc/rfc2130.txt>
[IMAP4] Crispin, M., "Internet Message Access Protocol - Version
4rev1", RFC2060, University of Washington, December 1996.
<ftp://ds.internic.net/rfc/rfc2060.txt>
[IMAP-ACL] Myers, J., "IMAP4 ACL extension", RFC2086, Carnegie
Mellon, January 1997.
<ftp://ds.internic.net/rfc/rfc2086.txt>
[IMAP-URL] Newman, "IMAP URL Scheme", RFC2192, Innosoft, July 1997.
<ftp://ds.internic.net/rfc/rfc2192.txt>
[ISO-10646] ISO/IEC 10646-1:1993(E) "Information Technology--
Universal Multiple-octet Coded Character Set (UCS)." See also
amendments 1 through 7, plus editorial corrections.
[ISO-C] "Programming languages -- C", ISO/IEC 9899:1990,
International Organization for Standardization. This is effectively
the same as ANSI C standard X3.159-1989.
[KEYWORDS] Bradner, "Key words for use in RFCs to Indicate
Requirement Levels", RFC2119, Harvard University, March 1997.
<ftp://ds.internic.net/rfc/rfc2119.txt>
[LANG-TAGS] Alvestrand, H., "Tags for the Identification of
Languages", RFC1766.
<ftp://ds.internic.net/rfc/rfc1766.txt>
[REL-URL] Fielding, "Relative Uniform Resource Locators", RFC1808,
UC Irvine, June 1995.
<ftp://ds.internic.net/rfc/rfc1808.txt>
[SASL] Myers, J., "Simple Authentication and Security Layer (SASL)",
RFC2222, Netscape Communications, October 1997.
<ftp://ds.internic.net/rfc/rfc2222.txt>
[SASL-ANON] Newman, C., "Anonymous SASL Mechanism", RFC2245,
November 1997.
[UNICODE-2] The Unicode Consortium, "The Unicode Standard, Version
2.0", Addison-Wesley, 1996. ISBN 0-201-48345-9.
[US-ASCII] "USA Standard Code for Information Interchange," X3.4.
American National Standards Institute: New York (1968).
[UTF8] Yergeau, F. "UTF-8, a transformation format of Unicode and ISO
10646", RFC2044, Alis Technologies, October 1996.
<ftp://ds.internic.net/rfc/rfc2044.txt>
B. ACAP Keyword Index
ACAP (untagged response) ................................... 26
ADDTO (untagged response) .................................. 40
ALERT (untagged response) .................................. 31
ALL (search keyword) ....................................... 36
AND (search keyword) ....................................... 36
AUTH-TOO-WEAK (response code) .............................. 19
AUTHENTICATE (command) ..................................... 31
BAD (response) ............................................. 30
BYE (untagged response) .................................... 30
CHANGE (untagged response) ................................. 41
COMPARE (search keyword) ................................... 36
COMPARESTRICT (search keyword) ............................. 36
CONTEXTLIMIT (ACAP capability) ............................. 27
DELETEACL (command) ........................................ 46
DELETED (intermediate response) ............................ 45
DELETEDSINCE (command) ..................................... 45
DEPTH (search modifier) .................................... 34
ENCRYPT-NEEDED (response code) ............................. 19
ENTRY (intermediate response) .............................. 37
EQUAL (search keyword) ..................................... 37
FREECONTEXT (command) ...................................... 39
GETQUOTA (command) ......................................... 48
HARDLIMIT (search modifier) ................................ 34
IMPLEMENTATION (ACAP capability) ........................... 27
INVALID (response code) .................................... 19
LANG (command) ............................................. 28
LANG (intermediate response) ............................... 28
LIMIT (search modifier) .................................... 34
LISTRIGHTS (command) ....................................... 47
LISTRIGHTS (intermediate response) ......................... 48
LOGOUT (command) ........................................... 29
MAKECONTEXT (search modifier) .............................. 34
MODIFIED (response code) ................................... 19
MODTIME (intermediate response) ............................ 38
MODTIME (untagged response) ................................ 42
MYRIGHTS (command) ......................................... 47
MYRIGHTS (intermediate response) ........................... 47
NO (response) .............................................. 29
NOCREATE (store modifier) .................................. 44
NOEXIST (response code) .................................... 19
NOINHERIT (search modifier) ................................ 35
NOOP (command) ............................................. 27
NOT (search keyword) ....................................... 37
OK (response) .............................................. 29
OR (search keyword) ........................................ 37
PERMISSION (response code) ................................. 19
PREFIX (search keyword) .................................... 37
QUOTA (response code) ...................................... 19
QUOTA (untagged response) .................................. 49
RANGE (search keyword) ..................................... 37
REFER (intermediate response) .............................. 38
REFER (response code) ...................................... 19
REMOVEFROM (untagged response) ............................. 41
RETURN (search modifier) ................................... 35
SASL (ACAP capability) ..................................... 27
SASL (response code) ....................................... 20
SEARCH (command) ........................................... 33
SETACL (command) ........................................... 46
SORT (search modifier) ..................................... 36
STORE (command) ............................................ 42
SUBSTRING (search keyword) ................................. 37
TOOMANY (response code) .................................... 20
TOOOLD (response code) ..................................... 20
TRANSITION-NEEDED (response code) .......................... 20
TRYFREECONTEXT (response code) ............................. 20
TRYLATER (response code) ................................... 20
UNCHANGEDSINCE (store modifier) ............................ 44
UPDATECONTEXT (command) .................................... 40
WAYTOOMANY (response code) ................................. 20
acl (attribute metadata) ................................... 12
anyone (ACL identifier) .................................... 17
attribute (attribute metadata) ............................. 12
dataset.acl (dataset attribute) ............................ 24
dataset.acl.<attribute> (dataset attribute) ................ 24
dataset.inherit (dataset attribute) ........................ 24
entry (predefined attribute) ............................... 11
i;ascii-casemap (comparator) ............................... 16
i;ascii-numeric (comparator) ............................... 16
i;octet (comparator) ....................................... 16
modtime (predefined attribute) ............................. 11
myrights (attribute metadata) .............................. 12
size (attribute metadata) .................................. 13
subdataset (predefined attribute) .......................... 11
value (attribute metadata) ................................. 13
C. Full Copyright Statement
Copyright (C) The Internet Society 1997. All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implmentation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of developing
Internet standards in which case the procedures for copyrights defined
in the Internet Standards process must be followed, or as required to
translate it into languages other than English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN
WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.