Internet-Draft                                        Leslie L. Daigle
Expires: December 8, 2000                     Thinking Cat Enterprises
draft-daigle-wppresp-01.txt                           Patrik Faltstrom
                                                         Tele2/Swipnet
                                                          June 8, 2000

               The application/whoispp-response Content-type

Status of this Memo

     This document is an Internet-Draft and is in full conformance
     with all provisions of Section 10 of RFC2026.

     Internet-Drafts are working documents of the Internet Engineering
     Task Force (IETF), its areas, and its working groups.  Note that
     other groups may also distribute working documents as
     Internet-Drafts.

     Internet-Drafts are draft documents valid for a maximum of six
     months and may be updated, replaced, or obsoleted by other
     documents at any time.  It is inappropriate to use Internet-
     Drafts as reference material or to cite them other than as
     "work in progress."

     The list of current Internet-Drafts can be accessed at
     http://www.ietf.org/ietf/1id-abstracts.txt

     The list of Internet-Draft Shadow Directories can be accessed at
     http://www.ietf.org/shadow.html.



Abstract

   This document defines the expression of Whois++ protocol (originally
   defined in [RFC1835], updated in [draft-daigle-whoispp-00.txt])
   responses within MIME [RFC2046] media types.  The intention of this
   document, in conjunction with [draft-daigle-wppquery-01.txt] is
   to enable MIME-enabled mail software, and other systems using
   Internet media types, to carry out Whois++ transactions.




1.  MIME Registration Information

To: iana@isi.edu
Subject:  Registration of MIME media type application/whoispp-response

MIME Type name:         Application

MIME subtype name:      whoispp-response

Required parameters:    none

Optional parameters:    none

Encoding considerations: Any valid MIME encodings may be used

Security considerations: This content-type contains purely descriptive
information (i.e., no directives).  There are security considerations
with regards to the appropriateness (privacy) of information provided
through the use of this content-type, and the authenticity of the
information so-provided.  This content-type provides no native
mechanisms for authentication.

Published specification:  this document

Person & email address to contact for further information:

                        Leslie L. Daigle
                        leslie@thinkingcat.com

Intended usage:         common



2.  whoispp-response Syntax

The following grammar, which uses ABNF-like notation as defined in
[RFC2234], defines a subset of responses expected from a Whois++ server
upon receipt of a valid Whois++ query.  As such, it describes the
expected structure of a whoispp-response media type object.

N.B.:  As outlined in the ABNF definition, rule names and string
literals are in the US-ASCII character set, and are case-insensitive.


   server          =   goodmessage mnl output mnl endmessage nl
                     / badmessage nl endmessage nl

   output          =   full / abridged / summary / handle

   full            =   0*(full-record / server-to-ask)

   abridged        =   0*(abridged-record / server-to-ask)

   summary         =   summary-record

   handle          =   0*(handle-record / server-to-ask)

   full-record     =   "# FULL " template serverhandle localhandle
                              system-nl
                       1*(fulldata system-nl)
                       "# END" system-nl

   abridged-record =   "# ABRIDGED " template serverhandle localhandle
                          system-nl
                       abridgeddata
                       "# END" system-nl

   summary-record   =  "# SUMMARY " serverhandle system-nl
                       summarydata
                       "# END" system-nl

   handle-record    =  "# HANDLE " template serverhandle localhandle
                              system-nl

   server-to-ask   =   "# SERVER-TO-ASK " serverhandle system-nl
                       server-to-askdata
                       "# END" system-nl

   fulldata        =   " " attributename ": " attributevalue

   abridgeddata    =   " " 0*( attributevalue / tab )

   summarydata     =   " Matches: " number system-nl
                       [" Referrals: " number system-nl]
                       " Templates: " template 0*( system-nl "-"
                                                   template)

   server-to-ask-data = " Server-Handle:" serverhandle system-nl
                        " Host-Name: " hostname system-nl
                        " Host-Port: " number system-nl
                        [" Protocol: " prot system-nl]
                        0*(" " labelstring ": " labelstring system-nl)


   attributename   =   1*attrbyte

   attrbyte        =   <%d33-127 except specialbyte>

   attributevalue  =   longstring

   template        =   labelstring

   serverhandle    =   labelstring

   localhandle     =   labelstring

   hostname        =   labelstring

   prot            =   labelstring

   longstring      =   bytestring 0*( nl ( "+" / "-" ) bytestring )

   bytestring      =   0*charbyte

   labelstring     =   0*restrictedbyte

   restrictedbyte  =   <%d32-%d255 except specialbyte>

   charbyte        =   <%d32-%d255 except nl>

   specialbyte     =   ":" / " " / tab / nl

   tab             =   %d09

   mnl             =   1*system-nl

   system-nl       =   nl [ 1*(message nl) ]

   nl              =   %d13 %d10

   message         =   [1*( messagestart "-" bytestring nl)]
                       messagestart " " bytestring nl

   messagestart    =   "% " digit digit digit

   goodmessage     =   [1*( goodmessagestart "-" bytestring nl)]
                       goodmessagestart " " bytestring nl

   goodmessagestart=   "% 200"

   messagestart    =   "% " digit digit digit

   badmessage      =   [1*( badmessagestart "-" bytestring nl)]
                       badmessagestart " " bytestring nl

   badmessagestart =   "% 5" digit digit

   endmessage      =   endmessageclose

   endmessageclose =   [endmessagestart " " bytestring nl]
                       byemessage

   endmessagestart =   "% 226"

   byemessage      =   byemessagestart " " bytestring nl

   endmessagestart =   "% 203"

   number          =   1*( digit )

   digit           =   "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7"
                       / "8" / "9"







3.  References

   [ALVE95]        Alvestrand H., "Tags for the Identification of
                   Languages", RFC 1766, UNINETT, March 1995.

   [RFC2234]       Crocker, D., and P. Overell,  "Augmented BNF for
                   Syntax Specifications: ABNF", RFC 2234, November 1997.
   [RFC1835]       Deutsch, P., R. Schoultz, P. Faltstrom and C.
                   Weider.  "Architecture of the WHOIS++ service",
                   RFC 1835. August 1995.

   [HARR85]        Harrenstein K., Stahl M., and E. Feinler,
                   "NICNAME/WHOIS", RFC 954, SRI, October 1985.

   [POST82]        Postel J., "Simple Mail Transfer Protocol", STD 10,
                   RFC 821, USC/Information Sciences Institute,
                   August 1982.

   [IIIR]          Weider C., and P. Deutsch, "A Vision of an
                   Integrated Internet Information Service", RFC 1727
                   Bunyip Information Systems, Inc., December 1994.

   [WINDX]         Weider, C., J. Fullton, and S. Spero, "Architecture
                   of the Whois++ Index Service", RFC 1913, February
                   1996.


4.  Authors' Addresses

   Leslie L. Daigle
   Thinking Cat Enterprises

   Email:  leslie@thinkingcat.com


   Patrik Faltstrom
   Tele2
   Borgarfjordsgatan 16
   BOX 62
   194 64 Kista
   SWEDEN

   Email: paf@swip.net