<?xml version="1.0" encoding="US-ASCII"?>

<!--
  2a: Changes after Alexey's review (no significant ones yet)
  2b: Added Alfred as co-author, added data from his registry first
      cut.
  2c: editorials; align Registry Format with Table; swap columns;
      add much more description (from original table Legend)
  2d: corrected some not-quite-working XML and a spelling typo or two;
      clarification of "FEAT string"; fixup of mangled table entry
  -->
<!--
  3a: Minor fixes caught by Alfred after posting of -02 (2e):  Changed
     table to use "Authentication" and "Confidentiality", not
         abbreviations; fixed duplicated article.
  3b: Removed dangling 2119 reference (not cited in doc), added some
     vertical spacing
  3c: IESG-requested changes: Added all existing known commands, moved
     document references for commands to Informative, adjusted title
     and abstract to reflect more comprehensive listing.
  3d: Alfred's "beta" version: merge of his "alpha" version, the
     revised tables, and 3c.
  3e: JcK corrections and minor edits to 3d.  Posted 03 version
  3f: AH nits detected after posting 3e as -03; table format tweaking.
    (this version in Klensin's files as 04a)
  -->
<!-- 04a: AH nit corrections as noted above.
  04b: JcK cleanup of editing comments in file, prep for RFC Editor
     (we hope)
  04c: Incorporate IESG RFC Editor note -- new registration criteria,
     document no longer required for deployed feature.
  -->


<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY rfc0959 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.0959.xml">
<!ENTITY rfc1123 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1123.xml">
<!ENTITY rfc2640 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2640.xml">
<!ENTITY rfc2389 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2389.xml">
<!ENTITY rfc3659 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3659.xml">
<!ENTITY rfc5198 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5198.xml">
<!ENTITY rfc5226 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY rfc0775 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.0775.xml">
<!ENTITY rfc1545 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1545.xml">
<!ENTITY rfc1639 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1639.xml">
<!ENTITY rfc2228 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2228.xml">
<!ENTITY rfc2428 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2428.xml">
<!ENTITY rfc4217 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4217.xml">
<!ENTITY rfc2773 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2773.xml">
<!ENTITY rfc4844 PUBLIC ''
       "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4844.xml">
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<!-- Try to enforce the ID-nits conventions and DTD validity -->
<?rfc strict="no" ?>

<!-- Create Table of Contents (ToC) and set some options for it.
     Note the ToC may be omitted for very short documents,
     but idnits insists on a ToC if the document has more than 15 pages. -->
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<!-- If "yes" eliminates blank lines before main section entries. -->
<?rfc tocdepth="3"?>
<!-- Sets the number of levels of sections/subsections... in ToC -->

<!-- These two save paper: Just setting compact to "yes" makes
savings by not starting each main section on a new page but does not
omit the blank lines between list items. If subcompact is also "yes"
the blank lines between list items are also omitted. -->
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<!-- Expand crefs and put them inline -->
<?rfc comments='yes' ?>
<?rfc inline='yes' ?>

<!-- RFC references as names, not numbers -->
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>

<!-- When yes, insert editing marks: editing marks consist of a
     string such as <29> printed in the blank line at the
     beginning of each paragraph of text. -->
<?rfc editing="no" ?>

<!-- Information about the document.
     category values: std, bcp, info, exp, and historic
     For Internet-Drafts, specify attribute "ipr".
     (ipr values are: full3978, noModification3978, noDerivatives3978),
     Also for Internet-Drafts, you must specify a value for attributes "docName"
     which is typically the file name under which it is filed - but need not be -
     and,if relevant,"iprExtract". Note that the value for iprExtract is the
     anchor attribute value of a section (such as a MIB specification) that can
     be extracted for separate publication, and is only useful when the value of
     "ipr" is not "full3978". -->

<rfc ipr="trust200902" docName="draft-klensin-ftp-registry-04c"
	 category="std" updates="959">

  <!-- ***** FRONT MATTER ***** -->

  <front>
	<title abbrev="FTP Command and Extension Registry">
	   FTP Command and Extension Registry
        </title>

    <author fullname="John C Klensin" initials="J.C."
			 surname="Klensin" >
      <organization/>
      <address>
        <postal>
          <street>1770 Massachusetts Ave, Ste 322</street>
          <city>Cambridge</city> <region>MA</region>
          <code>02140</code>
          <country>USA</country>
        </postal>
        <phone>+1 617 245 1457</phone>
        <!-- facsimile phone number and URI if appropriate -->
        <email>john+ietf@jck.com</email>
      </address>
    </author>
    <author initials="A." surname="Hoenes" fullname="Alfred Hoenes">
      <organization>
        TR-Sys
      </organization>
      <address>
        <postal>
          <street>  Gerlinger Str. 12 </street>
          <city>    Ditzingen </city>
          <code>    D-71254   </code> <country> Germany </country>
        </postal>
		<!-- <phone>+49 7156 9635 0</phone><fax>+49 7156 9635 18</fax>
		-->
        <email> ah@TR-Sys.de </email>
      </address>
    </author>
    <date month="December" day="17" year="2009" />

    <abstract>
      <t>Every version of the FTP specification has added a few new
	 commands, with the early ones summarized in RFC 959.  RFC
	 2389 established a mechanism for specifying and
	 negotiating FTP extensions.  The number of extensions, both
	 supported by the mechanism and some that are not, continues to
	 increase.  An IANA 
	 registry of FTP Command and Feature names is established to reduce the
	 likelihood of conflict of names and the consequent ambiguity.
	 This specification establishes that registry.</t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction">
      <t>Every version of the FTP specification has added a few new
	 commands, with the early ones summarized in
	 RFC 959 <xref target="RFC0959"/>.
	 <xref target="RFC2389">RFC 2389</xref> established a
	 mechanism for specifying and negotiating extensions to the FTP
	 protocol specified in RFC 959,
	 by means of "FEAT Strings" identifying extensions supported
	 by the FTP server, and sent in response to a "FEAT" command.
	 The number of extensions continues to grow, not all of them
         supported by FEAT.  An IANA registry is established to
		 reduce the likelihood of conflict of names and 
	 the consequent ambiguity and to encourage the sharing of
         information.  This specification establishes that registry.</t>

	<section title="Discussion List">
	   <t>[[ RFC Editor: please remove this section before
		  publication. ]]</t>
	   <t> Until and unless a WG is created, this proposal will be
		  discussed on the list apps-discuss@ietf.org </t>
	</section>
    </section>  <!-- end of intro -->

    <section title="Registry Definition" anchor="RegDef">
        <section title="Registry Name">

	    <t>The recommended name of this registry is
	       "FTP Commands and Extensions". </t>
        </section>
        <section title="Registry Format">
 	    <t>IANA is requested to establish a registry for FTP commands
	       and extensions.  Registration requests and registry entries
	       should include the following:
 	    <list style="hanging">
		 <t hangText="Command Name -">
			The FTP command, either new or modified, used in the
			extension or with which the extension is used.
		    <vspace blankLines="1"/>
			Following the long-standing practice to capitalize
			command names in specification documents for FTP,
			the command names are entered in all uppercase.
			For extensions amending the operation of a command,
			a plus sign ("+") is appended to the command name.
			However, an extension might not be bound to
			one command (or a small number of commands),
			but affect the overall command parameter handling
			and/or transaction processing; in this case,
			the string "-N/A-" is entered.
		    <vspace blankLines="1"/>
			It is intended to have the registry entries
			ordered by ascending ASCII collation order
			of this column (including the "+" suffix if present).
		  </t>

		 <t hangText="Extension name -">
			The name of the extension.
			<vspace blankLines="1" />
			FTP extensions predating
			<xref target="RFC2389">RFC 2389</xref>,
			and some extensions
			published after it, did not specify a keyword
			to identify the extension in a FEAT response.
			Some later specifications established
			FEAT strings with the respective command names as
			their keywords.  In order to provide for keywords for
			future specifications in such cases, this document
			establishes 'placeholder' keywords to reserve
			reasonable feature names for future standardization.
			
			Similarly, placeholder keywords are used for the basic
			FTP commands specified in
			<xref target="RFC0959"> RFC 959 </xref>
			and those of its predecessors that are still in use.
			These placeholder keywords are placed in the registry for
			convenience; it is not intended that they be returned in
			FEAT responses. 
			<vspace />
			To compensate for this idiosyncrasy, the column
			in the registry is entitled "FEAT Code", and
			to clearly distinguish between the two cases,
			defined FEAT keywords codes are listed in all
			uppercase, whereas 'placeholder' keywords
			(henceforth called "pseudo FEAT codes")
			are listed in lowercase.  Future specifications
			are allowed to "upgrade" a placeholder to a true
			keyword
			unless it is specifically declared 'immutable' below,
			but otherwise IANA maintains uniqueness
			of feature names (FEAT codes) based on
			case-insensitive comparison.
		 </t>
		 <t hangText="Description -">
			A brief description of the extension and, where
			appropriate, the command.
		 </t>
<!-- [AH] Commented out: Parameters are not listed (yet?) in this revision
		 <t hangText="Parameters -">
			A listing and brief description of any parameters
			associated with the extension and the command(s) to
			which they apply.</t>
		 [JcK] at this stage (20091203), if anyone needs to add
		 parameters, they are going to need to revise/update the
		 published spec.  Let's leave this comment in the draft to
		 remember that we thought of it and where to put it.
-->
		 <t hangText="FEAT String -">
			(optional in registration requests to the IANA)
		    <vspace blankLines="1"/>
			The string expected to be included in the response to
			the FEAT command <xref target="RFC2389"/>
			if the extension is supported.
		    <vspace blankLines="1"/>

			In many cases, the FEAT string required to identify
			an extension only consists of the "FEAT Code",
			making this item redundant.  Therefore, this item
			should only be specified if it is intended to register
			a FEAT string that contains mandatory elements other than
			the "FEAT Code" itself.
		    <vspace blankLines="1"/>

			Due to space restrictions, and to allow registrants
			to provide additional information as well,
			IANA should present these registration items (if
			given) in numbered footnotes to the table, not in an
			additional table column.
		 </t>
		 <t hangText="Command Type -">
		    The type (or 'kind') of the command.
		    <vspace  blankLines="1"/>
	        Section 4.1 of <xref target="RFC0959">RFC 959</xref>
		    introduced a subdivision of FTP commands into
		    three types: Access control, transfer Parameter {setting},
		    and Service {execution}.
		    For clarity and as a service to the user of the
		    registry, this subdivision is extended to all
		    registered FTP commands, using the characteristic
		    initial of the type, 'a', 'p', or 's', respectively,
		    filed in the registry column entitled "type";
		    combinations are allowed, e.g. 'p/s'.
		 </t>
		 <t hangText="Conformance Requirements -">
		    The support expectation for the command.
		 <vspace blankLines="1"/>
	        RFC 959 specifies mandatory-to-implement
		    commands and optional commands.  This classification is
		    carried over to all registered commands, using a column
		    entitled "conf" carrying a single character -- either
		    'm' or 'o', for "mandatory" and "optional", respectively.
		    Similarly, obsoleted or historic entries are left in the
		    registry to avoid conflicts with deployed implementations,
		    and these entries are marked with 'h' (for "historic").
		  <vspace />
		    Beyond the initial registrations, Standards Action
		    <xref target="RFC5226"/> is needed to register new
		    "mandatory" entries or to move such entries to "historic".
		 </t>
		 <t hangText="Reference -">
		    A reference to an RFC or other definition of the
		    extension and/or to implementations supporting it
		    (see the next section).
		 </t>
	     </list>
	     </t>
	 </section>
	 <section title="Criteria for Registration"
		  anchor="RegistrationCriteria">
	     <t> This registry is primarily intended to avoid conflicting
		 uses of the same extension names and command keywords for
		 different purposes, not to demonstrate that an extension
		 is somehow "approved".   The "expert review" method will
		 be used, but the designated expert is expected to check
		 only that at least one of the two criteria that follow are met.
		 <list style="numbers">
		    <t>The extension is documented in a permanent and readily
			   available public specification (This is the same as
			   the "Specification Required" registration policy
			   defined in <xref target="RFC5226">RFC 5226</xref>.</t> 
		    <t>The extension is actually implemented in FTP client
			   and server systems that are generally available (not
			   necessarily either free or unencumbered, but
			   available).</t> 
		 </list>
	     </t>
	     <t> For an extension or command to be marked "mandatory"
		 ('m' in the "conf" column), an IETF Standards Track
		 Specification is required. An IESG Standards Action
		 is allowed to direct IANA to change the Conformance
		 Requirements listed for any entry.
	     </t>
	 </section>
	 <section title="Base FTP Commands"
		  anchor="BaseCmds">
	     <t>The following commands are part of the base FTP
		specification <xref target="RFC0959"/> and are listed in the
		registry with the immutable pseudo FEAT code "base".

	        <list style="empty">

		  <t>Mandatory commands:</t>
	          <t>ABOR, ACCT, ALLO, APPE, CWD,  DELE, HELP, LIST, MODE,
		     NLST, NOOP, PASS, PASV, PORT, QUIT, REIN, REST, RETR,
		     RNFR, RNTO, SITE, STAT, STOR, STRU, TYPE, USER</t>
		  <t>Optional commands:</t>
	          <t>CDUP, MKD,  PWD,  RMD,  SMNT, STOU, SYST</t>
	        </list>
	     </t>
	     <t>Note: <xref target="RFC1123">STD 3</xref>
                clarified and updated the status and implementation
                requirements of these standard FTP commands, and it
                contains important
		complementary information for the following commands:
	        <list style="empty">
	          <t>LIST, NLST, PASV, REST, SITE, STOU</t>
	        </list>
	     </t>
	 </section>
	 <section title="Obsolete Commands"
		  anchor="ObsCmds">
	     <t>The following commands were specified as experimental in
	        an extension to an early version of the FTP
			specification <xref target="RFC0775"/> but later
			deprecated by 
	        <xref target="RFC1123">RFC 1123</xref>,
	        because Standard FTP <xref target="RFC0959"/> specifies
			their standard 
		successors.  They are listed in the registry with the
		immutable pseudo FEAT code "hist".
	        <list style="empty">
		  <t>XCUP, XCWD, XMKD, XPWD, XRMD</t>
	        </list>
		<list style="hanging">
		  <t hangText="Implementation note:">
		     Deployed FTP clients still make use of the deprecated
		     commands and most FTP servers support them as aliases
		     for the standard commands.
		  </t>
	        </list>
	     </t>
	     <t>The following commands were specified as part of the
	        "FOOBAR" IPng effort in
	        <xref target="RFC1545">RFC 1545</xref> and, later,
			<xref target="RFC1639">RFC 1639</xref>
	        and are now obsolete.
			They are listed in the
			registry with the immutable pseudo FEAT code "hist".
	        <list style="empty">
		  <t>LPRT, LPSV</t>
	        </list>
	     </t>
	 </section>
     </section>
     <section title="Initial Contents of Registry"
	      anchor="InitContent">
	<t>
	   As a service to users of the registry and the authors
	   of existing specifications, all FTP commands and features
	   published in RFCs after <xref target="RFC1123">STD 3</xref>
	   and up to the time of this writing are to be included into the
	   registry upon creation.
	</t>
	<t>
	   The following pseudo FEAT codes have been assigned,
	   according to <xref target="RegDef"/>:
	</t>
<?rfc subcompact="yes" ?>
	<t>
	   <list style="empty">
               <t>base  -  FTP standard commands   <xref target="RFC0959"/></t>
               <t>hist  -  Historic experimental commands
			   <xref target="RFC0775"/>, <xref target="RFC1639"/> </t>
			   <t>secu  -  FTP Security Extensions <xref target="RFC2228"/></t>
	       <t>feat  -  FTP Feature Negotiation <xref target="RFC2389"/></t>
	       <t>nat6  -  FTP Extensions for NAT/IPv6 <xref target="RFC2428"/></t>
	   </list>
	</t>

<?rfc subcompact="no" ?>

<!-- [ JcK/AH Note to RFC Editor: The layout of this table is still
     not optimal in terms of column widths, wrapping, etc., and
     xml2rfc did not give us good enough control to make it better.
     We encourage you to modify it to match your aesthetic and graphic
     design sense. ] -->

  <texttable anchor="RegistryContents">
   <!-- ttcol width="percentValue" align="left/center/right" -->
   <ttcol>cmd</ttcol>
   <ttcol width="6%">FEAT Code</ttcol>
   <ttcol width="33%">description</ttcol>
   <ttcol>type</ttcol>
   <ttcol>conf</ttcol>
   <ttcol>RFC#s/References and Notes</ttcol>
	<c>ABOR</c> <c>base</c>
       <c>Abort</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>ACCT</c> <c>base</c>
       <c>Account</c>
       <c>a</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>ADAT</c> <c>secu</c>
       <c>Authentication/ Security Data</c>
       <c>a</c> <c>o</c>
       <c>2228, 2773, 4217</c> <!-- end row -->
	<c>ALLO</c> <c>base</c>
       <c>Allocate</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>APPE</c> <c>base</c>
       <c>Append (with create)</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>AUTH</c> <c>secu</c>
       <c>Authentication/ Security Mechanism</c>
       <c>a</c> <c>o</c>
       <c>2228</c> <!-- end row -->
	<c>AUTH+</c> <c>AUTH</c>
       <c>Authentication/ Security Mechanism</c>
       <c>a</c> <c>o</c>
       <c>2773, 4217 #2</c> <!-- end row -->
	<c>CCC</c> <c>secu</c>
       <c> Clear Command Channel</c>
       <c>a</c> <c>o</c>
       <c>2228</c> <!-- end row -->
	<c>CDUP</c> <c>base</c>
       <c>Change to Parent Directory</c>
       <c>a</c> <c>o</c>
       <c>959</c> <!-- end row -->
	<c>CONF</c> <c>secu</c>
       <c>Confidentiality Protected Command</c>
       <c>a</c> <c>o</c>
       <c>2228</c> <!-- end row -->
	<c>CWD</c> <c>base</c>
       <c>Change Working Directory</c>
       <c>a</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>DELE</c> <c>base</c>
       <c>Delete File</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>ENC</c> <c>secu</c>
       <c> Privacy Protected Command</c>
       <c>a</c> <c>o</c>
       <c>2228, 2773, 4217</c> <!-- end row -->
	<c>EPRT</c> <c>nat6</c>
       <c>Extended Port</c>
       <c>p</c> <c>o</c>
       <c>2428</c> <!-- end row -->
	<c>EPSV</c> <c>nat6</c>
       <c>Extended Passive Mode</c>
       <c> p</c><c>o</c>
       <c>2428</c> <!-- end row -->
	<c>FEAT</c> <c>feat</c>
       <c>Feature Negotiation</c>
       <c> a</c><c>m #1</c>
       <c> 2389</c> <!-- end row -->
	<c>HELP</c> <c>base</c>
       <c>Help</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>LANG</c> <c>UTF8</c>
       <c>Language (for Server Messages)</c>
       <c> p</c><c> o </c>
       <c> 2640</c> <!-- end row -->
	<c>LIST</c> <c>base</c>
       <c>List</c>
       <c>s</c> <c>m</c>
       <c>959, 1123</c> <!-- end row -->
	<c>LPRT</c> <c>hist</c>
       <c>Data Port {FOOBAR}</c>
       <c>p</c> <c>h</c>
       <c>1545, 1639</c> <!-- end row -->
	<c>LPSV</c> <c>hist</c>
       <c>Passive Mode {FOOBAR}</c>
       <c>p</c> <c>h</c>
       <c>1545, 1639</c> <!-- end row -->
	<c>MDTM</c> <c>MDTM</c>
       <c>File Modification Time</c>
       <c> s</c><c> o</c>
       <c>3659</c> <!-- end row -->
	<c>MIC</c> <c>secu</c>
       <c> Integrity Protected Command</c>
       <c> a</c><c> o</c>
       <c>2228, 2773, 4217</c> <!-- end row -->
	<c>MKD</c> <c>base</c>
       <c>Make Directory</c>
       <c>s</c> <c>o</c>
       <c>959</c> <!-- end row -->
	<c>MLSD</c> <c>MLST</c>
       <c>List Directory (for machine)</c>
       <c> s</c><c> o</c>
       <c>3659</c> <!-- end row -->
	<c>MLST</c> <c>MLST</c>
       <c>List Single Object</c>
       <c> s</c><c> o</c>
       <c>3659</c> <!-- end row -->
	<c>MODE</c> <c>base</c>
       <c>Transfer Mode</c>
       <c>p</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>NLST</c> <c>base</c>
       <c>Name List</c>
       <c>s</c> <c>m</c>
       <c>959, 1123</c> <!-- end row -->
	<c>NOOP</c> <c>base</c>
       <c>No-Op</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>OPTS</c> <c>feat</c>
       <c>Options</c>
       <c> p</c><c>m #1</c>
       <c>2389</c> <!-- end row -->
	<c>PASS</c> <c>base</c>
       <c>Password</c>
       <c>a</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>PASV</c> <c>base</c>
       <c>Passive Mode</c>
       <c>p</c> <c>m</c>
       <c>959, 1123</c> <!-- end row -->
	<c>PBSZ</c> <c>secu</c>
       <c>Protection Buffer Size</c>
       <c> p</c><c> o</c>
       <c> 2228</c> <!-- end row -->
	<c>PBSZ+</c> <c>PBSZ</c>
       <c>Protection Buffer Size</c>
       <c> p</c><c> o</c>
       <c> 4217</c> <!-- end row -->
	<c>PORT</c> <c>base</c>
       <c>Data Port</c>
       <c>p</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>PROT</c> <c>secu</c>
       <c>Data Channel Protection Level</c>
       <c> p</c><c> o</c>
       <c> 2228</c> <!-- end row -->
	<c>PROT+</c> <c>PROT</c>
       <c>Data Channel Protection Level</c>
       <c> p</c><c> o</c>
       <c> 4217</c> <!-- end row -->
	<c>PWD</c> <c>base</c>
       <c>Print Directory</c>
       <c>s</c> <c>o</c>
       <c>959</c> <!-- end row -->
	<c>QUIT</c> <c>base</c>
       <c>Logout</c>
       <c>a</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>REIN</c> <c>base</c>
       <c>Reinitialize</c>
       <c>a</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>REST</c> <c>base</c>
       <c>Restart</c>
       <c>s/p</c> <c>m</c>
       <c>959, 1123</c> <!-- end row -->
	<c>REST+</c> <c>REST</c>
       <c>Restart (for STREAM mode)</c>
       <c>s/p</c><c> m</c>
       <c>3659 #3</c> <!-- end row -->
	<c>RETR</c> <c>base</c>
       <c>Retrieve</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>RMD</c> <c>base</c>
       <c>Remove Directory</c>
       <c>s</c> <c>o</c>
       <c>959</c> <!-- end row -->
	<c>RNFR</c> <c>base</c>
       <c>Rename From</c>
       <c>s/p</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>RNTO</c> <c>base</c>
       <c>Rename From</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>SITE</c> <c>base</c>
       <c>Site Parameters</c>
       <c>s</c> <c>m</c>
       <c>959, 1123</c> <!-- end row -->
	<c>SIZE</c> <c>SIZE</c>
       <c>File Size</c>
       <c>s</c> <c>o</c>
       <c>3659</c> <!-- end row -->
	<c>SMNT</c> <c>base</c>
       <c>Structure Mount</c>
       <c>a</c> <c>o</c>
       <c>959</c> <!-- end row -->
	<c>STAT</c> <c>base</c>
       <c>Status</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>STOR</c> <c>base</c>
       <c>Store</c>
       <c>s</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>STOU</c> <c>base</c>
       <c>Store Unique</c>
       <c>a</c> <c>o</c>
       <c>959, 1123</c> <!-- end row -->
	<c>STRU</c> <c>base</c>
       <c>File Structure</c>
       <c>p</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>SYST</c> <c>base</c>
       <c>System</c>
       <c>s</c> <c>o</c>
       <c>959</c> <!-- end row -->
	<c>TYPE</c> <c>base</c>
       <c>Representation Type</c>
       <c>p</c> <c>m</c>
       <c>959 #4</c> <!-- end row -->
	<c>USER</c> <c>base</c>
       <c>User Name</c>
       <c>a</c> <c>m</c>
       <c>959</c> <!-- end row -->
	<c>XCUP</c> <c>hist</c>
       <c>{precursor for CDUP}</c>
       <c>s</c> <c>h</c>
       <c>775, 1123</c> <!-- end row -->
	<c>XCWD</c> <c>hist</c>
       <c>{precursor for CWD}</c>
       <c>s</c> <c>h</c>
       <c>775, 1123</c> <!-- end row -->
	<c>XMKD</c> <c>hist</c>
       <c>{precursor for MKD}</c>
       <c>s</c> <c>h</c>
       <c>775, 1123</c> <!-- end row -->
	<c>XPWD</c> <c>hist</c>
       <c>{precursor for PWD}</c>
       <c>s</c> <c>h</c>
       <c>775, 1123</c> <!-- end row -->
	<c>XRMD</c> <c>hist</c>
       <c>{precursor for RMD}</c>
       <c>s</c> <c>h</c>
       <c>775, 1123</c> <!-- end row -->
	<c>-N/A-</c> <c>TVFS</c>
       <c>Trivial Virtual File Store</c>
       <c>p</c> <c>o</c>
       <c>3659</c> <!-- end row -->
  </texttable>
       <t>
	   Notes:
	   <list style="hanging">
		  <t hangText="#1">
			 While an IETF Standards Action would be required to make
			 the FEAT mechanism <xref target="RFC2389"/> mandatory,
			 implementation of that extension mechanism is clearly
			 required in conjunction with any extension or feature
			 that depends on it.</t>
	       <t hangText="#2">
		  FEAT String for RFC 4217: AUTH TLS
		  <vspace/>
		  FEAT String for RFC 2773: AUTH KEA-SKIPJACK
	       </t>
	       <t hangText="#3">
		  FEAT String: REST STREAM
	       </t>
	       <t hangText="#4">
		  FEAT String: TYPE {semicolon-separated list of supported types}
	       </t>
	   </list>
       </t>
    </section>

    <section anchor="Acknowledgments" title="Acknowledgments">
	   <t> Any work to update or extend FTP depends on the base
		  specification in RFC 959.  The contributions of its editors,
		  Jon Postel and Joyce Reynolds, are gratefully acknowledged.
		  The option negotiation mechanism specified in RFC 2389 and
		  the accumulation of features that has followed it made this
		  registry relevant; the authors of those documents are
		  acknowledged as well.</t>
	   <t>Barry Leiba and Alexey Melnikov made several suggestions
		  about earlier drafts of this document, most of which have
		  been incorporated.</t>
       <t>Anthony Bryan <!-- anthonybryan@gmail.com 20091020-->
          spotted a few typographical errors. </t>
	   <t>Scott Bradner suggested a clarification to the "expert
		  review" text that has been incorporated.</t>
	   <t>The authors appreciate the comments and support for this work
	      received from FTP implementers and many IETF participants.
	      Comments from the IESG helped to shape this document and
	      registry to improve its utility.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
	   <t>IANA is requested to establish the registry described in
		  <xref target="RegDef"/> using the initial content
		  specified in <xref target="InitContent"/> and including
		  the body of <xref target="BaseCmds" format="counter" />
		  and <xref target="ObsCmds" format="counter" />
		  as explanatory text in the preface of the registry.
	   </t>
	   <t> New entries should be added to this registry when
		  extensions to FTP are approved or defined in published RFCs
		  or when extensions that are already in use and
		  well-documented are identified.
		  In other words, the requirement for registration is a
		  slightly relaxed version of 
		  "Specification Required" <xref target="RFC5226"/> with
		  Expert Review.  See <xref target="RegistrationCriteria"/>
		  for specifics and exceptions.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
	   <t> The creation of this registry provides improved
		  documentation and protection against interoperability
		  problems.  It introduces no new security issues. </t>
    </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>

    <references title="Normative References">

	   &rfc0959;   <!-- FTP base spec -->
	   &rfc5226;   <!-- IANA Considerations rules -->
	   &rfc2389;   <!-- FTP feature negotiation (FEAT) -->

    </references>

    <references title="Informative References">
	   &rfc0775;   <!-- Original FTP directory commands spec -->
	   &rfc1123;   <!-- Host requirements, applications -->
	   &rfc1545;   <!-- FOOBAR: FTP over large address records, -->
	   &rfc1639;   <!-- ... and newer versions -->

	   &rfc2228;   <!-- FTP Security Extensions -->
	   &rfc2428;   <!-- FTP extensions for NAT and IPv6 -->
	   &rfc4217;   <!-- FTP over TLS -->
	   &rfc2773;   <!-- KEA and SKIPJACK -->

	   &rfc4844;   <!-- RFC Series / stream identification -->
	   
    </references>    <!-- end of all references -->

	<section title="Change Log">

	   <t> [[ RFC Editor: Please remove this Appendix before
		  publication. ]] </t>

	   <section title="Changes in Version -01">
		  <t> Updated document to reflect new date and IPR
		      statement.</t>
	   </section>
	   <section title="Changes in Version -02">
		  <t><list style="symbols"> 
		  <t> Several small changes in response to initial AD
		      review.</t>
		  <t> Changed registry model from "extension" to
		      "command" + "extension".</t>
		  <t> Corrections from Alfred Hoenes, followed by adding his
		      initial registry list and adding him as co-author.</t>
		  <t> Added description of the derivation of
		      <xref target="RegistryContents"/> to
		      <xref target="InitContent"/>. </t>
		  <t> Swapped columns 2 and 3 in
		      <xref target="RegistryContents"/>. </t>
		  <t> Consolidated "cmd" column content format
		      to tag command amendments and FTP features
		      without a particular command, and
		      renamed space eating column 5 to "conf". </t>
		  <t> Added missing footnotes to
		      <xref target="RegistryContents"/>. </t>
		  <t> Aligned <xref target="RegDef"/> with
		      <xref target="RegistryContents"/>,
		      adding much information on column format;
		      removed orphan; specified collation of entries
		      by "cmd". </t>
                  <t> Introduced Standards Track requirement for commands
		      in the registry to be designated as mandatory
		      in <xref target="RegistrationCriteria"/>
		      and <xref target="RegDef"/>;
		      specified particular IESG change control
		      for the "conf" column in the registry. </t>
		  <t> Split list in <xref target="BaseCmds"/> into
		      Mandatory and Optional, added pointer to RFC 1123. </t>
		  <t> Mention std. replacements per RFC 959
		      in <xref target="ObsCmds"/>. </t>
		  <t> Numerous editorial fixes. </t>
		  </list></t>
	   </section>

	   <section title="Changes in Version -03">
		  <t> Version -03 was produced in response to IETF Last Call
			 and subsequent IESG comments: </t>
		  <t><list style="symbols"> 		  
          <t>Removed References section entry for RFC 2119 -- not
		      used.</t>
          <t>Added all "base" (RFC 959/ 1123) commands and
             obsolete commands (RFCs 0775, 1545/1639) to registry
		     after discussion during Last Call and with IESG.
		     Tentatively recast title and several bits of the
		     document to refer to "FTP Commands and Extensions",
             not just extensions and made related text changes. </t>
		  <t> Clarified instructions to IANA including the "peer
			 reviewed publication" requirement in 
			 <xref target="RegistrationCriteria"/>.</t>
          <t>Adjusted references so that those which support commands
		      in the registry are all informative.</t>
		  <t>Removed language more appropriate to a proposal than to a
			 finished spec (e.g., a few uses of "it appears
			 useful").</t>
		  <t>Clarified the IANA Considerations text about
			 "specification required" to make it consistent with
			 <xref target="RegistrationCriteria"/>.  Specifically,
			 specifications of a quality needed to permit
			 interoperable implementations are not required although
			 they are certainly desirable.</t>
		  <t>After an extended discussion about the possible role of
			 this document in making some extensions mandatory to
			 implement, returned it to its status as a registry
			 specification only.  The former text that made the RFC
			 2389 and 2428 extensions mandatory has been removed.  RFC
			 2389 (the FEAT mechanism itself) is now identified as
			 mandatory for the extensions that depend on it (with a
			 new Note); RFC 2389 (the nat6 extensions) are now simply
			 optional as far as FTP is concerned as they should
			 probably remain unless the IETF concludes that nat6 is
			 either required or very broadly deployed.</t>
		  <t> More editorial fixes. </t>
		  </list></t>
	   </section>

	   <section title="Changes in Version -04">
		  <t> Final editing patches -- probably will not be posted
			 until after IESG signoff. </t>
		  <t><list style="symbols">
			 <t>Correction of small typos spotted after -03 was
				posted.</t>
			 <t>Another attempt at reformatting the table for better
				readability.</t>
			 <t>Cleanup of comments used in the XML to keep the
				editors synchronized.  These changes do not affect the
				text (or other) output forms of the document.</t>
			 <t>Changed the registration criteria
				(See <xref target="RegistrationCriteria"/>) at IESG
				request.</t>
		  </list></t>
	   </section>

	</section>

  </back>
</rfc>
