diff options
Diffstat (limited to 'contrib/bind/doc/notes/irp.txt')
-rw-r--r-- | contrib/bind/doc/notes/irp.txt | 521 |
1 files changed, 0 insertions, 521 deletions
diff --git a/contrib/bind/doc/notes/irp.txt b/contrib/bind/doc/notes/irp.txt deleted file mode 100644 index f2b59e2..0000000 --- a/contrib/bind/doc/notes/irp.txt +++ /dev/null @@ -1,521 +0,0 @@ -IRP Commands - -This document describes version 1 of IRP. - -IRP is a text-based command/response protocol like NNTP or SMTP. - -1.0 Response types: textual and status. - -1.1 Textual responses - -Textual responses are sent after a status response which indicates the text -will follow. The text is a series of CR-LF terminated lines. On the last line a -single period ``.'' will appear. If a normal text line starts with a period -then this will be doubled before sending. - -There is no maximum line length for responses. Commands have a maximum line -length of 1024 characters. - -The lines that make up the transmitted data are divided into fields. The fields -are spearated by the colon character ``:'', except in one case (for host data) -where the at-sign ``@'' is used instead. Some fields, such as alias names for -hosts, can have multiple values, and these values are separated by commas. - -Most transmission of data requires no special character changes. The field -separators and subfield separators don't normally appear in the data. However -in one case they can (network names). So to avoid trouble, all ``special'' -characters found in any data fields are encoded in URL-encoding form. That is -they are replaced with the 3-character sequence ``%xx'', where xx is the -hexidecimal value of the ascii-code for the chatacter. i,e, ``:'' becomes -``%58'', ``,'' becomes ``%44'' and ``%'' becomes ``%37''. - -For version 1 of IRP the set of special characters for purposes of encoding, -is: - - `,', '%', ':', '@' - -In a couple cases (password structure and group structure), there may be -encrypted passwords as part of the data. If the client is a privileged user -that the server can verify (e.g. through the use of SunOS doors(2)), then the -encrypted password will be sent back to the client. If the client is not -privileged the password will be replaced with the string ``*''. - - -1.2 Status responses. - -Status responses follow a numbering pattern similar to NNTP. - - 1xx - Informative message - 2xx - Command ok - 3xx - Command ok so far, send the rest of it. - 4xx - Command was correct, but couldn't be performed for - some reason. - 5xx - Command unimplemented, or incorrect, or a serious - program error occurred. - - The next digit in the code indicates the function response category. - - x0x - Connection, setup, and miscellaneous messages - x1x - Host lookup - x2x - Network lookup - x3x - User lookup - x4x - Group lookup - x5x - Service lookup - x6x - Protocol lookup - x7x - Netgroup lookup - x8x - Misc. Information Lookup - x9x - Debugging output - - The final digit in the code indicates whether textual data follows - - xx0 - No textual data follows. - xx1 - Textual data follows. - -2.0 Connection Establishment - - When the client connects to the server, the server will issue a welcome - banner. If the server will accetp commands, then the banner will start with - a status code indicating this, followed by a version number of the protocol - it accepts. Other words may come on the line afterwards to indicate to - humans the state of the server, - - If the server wont accept commands then it will issue a banner indicating - that and will then drop the connection. - -2.1 Responses - - 200 1 Ready to go. ; note: The server handles version 1 of the protocol - 200 2 Ready ; note: The server handles version 2 of the protocol - 400 Sorry. Down to due to nightly backups. - -3.0 Commands - -3.1 The HOST commands - -3.1.1 GETHOSTBYNAME hostname -3.1.2 GETHOSTBYNAME2 hostname address-family -3.1.2 GETHOSTBYADDR address address-family -3.1.3 GETHOSTENT - - Returns a textual response containing the information for the given host(s) - (a struct hostent) encoded in an ascii format. gethostbyaddr and - gethostbyname look up a specific host. GETHOSTENT returns the contents - of the /etc/hosts file. The GETHOSTENT command is optional may not be - supported by the server. The address-family paramater is the value - "AF_INET" or "AF_INET6" - -{ XXX GETHOSTENT is optional as the gethostent(3) call isn't always available } - -3.1.4 Responses - - 210 No such host - 211 Host found - - If the hostname given as the command argument doesn't exist, then the 210 - response will be returned. If the host is successfully looked up, then the - 211 response is sent and a textual message is sent after. The textual - message contains the host information encoded in an ascii form. The fields - of the host data are separated by at-signs. Fields that have multiple values - (like the aliases field) have their sub values separated by commas. - - hostname@aliases@address-type@address-length@address-list@ - - - hostname is the FQDN of the host. - - - aliases is a comma separated list of FQDNs for the host aliases. - - - address-type is either the strings "AF_INET" or "AF_INET6" - - - address-length is the length of each address in bytes (after conversion - back to binary form). - - - address-list is a comma separated list of dotted IPv4 if IPv6 addresses. - -{ XXX if we're going to include TTLs where should they go? Perhaps the -address-list field should be "addr/ttl,addr/ttl,..." } - - For example: - - C: GETHOSTBYNAME gw.downtown.vix.com - - S: 210 No such host. - - C: GETHOSTBYNAME gw.home.vix.com - - S: 211 OK - gw.home.vix.com@ftp.vix.com,www.vix.com@AF_INET@4@192.5.5.1,192.5.5.1@ - . - - C: GETHOSTBYNAME2 gw.home.vix.com AF_INET6 - gw.home.vix.com@@AF_INET6@ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255@ - . - - C: GETHOSTBYADDR 192.5.5.1 - - S: 211 OK - gw.home.vix.com@ftp.vix.com,www.vix.com@AF_INET@4@192.5.5.1,192.5.5.1@ - . - - C: GETHOSTENT - - S: 211 OK - gw.home.vix.com@ftp.vix.com,www.vix.com@AF_INET@4@192.5.5.1,192.5.5.1@ - data.pa.vix.com@@AF_INET@4@204.152.184.37@ - . - - -3.2 The USER commands. - -3.2.1 GETPWNAM username -3.2.2 GETPWUID uid -3.2.3 GETPWENT - - Returns a textual response with the user information (a struct passwd) - enocoded in an ascii format. The optional GETPWENT command transmits the - entire /etc/password file - -{ XXX It's optional only cause it doesn't seem right to spit the password out -to whoever wants it, even with encrypted passwords not being sent } - -3.2.4 Reponses - - 230 No such user - 231 User found - - If the username or uid given as the command argument doesn't exist, then - the 230 response will be returned. If the user is successfully looked up, - then the 231 response is sent and a textual message is sent after. The - textual message contains the user information encoded in an ascii form. The - fields of the user data are separated by colons. The format is very similar - to the /etc/password format (see passwd(5)) - - username:password:uid:gid:class:change:expire:gecos:home_dir:shell: - - - username is the user's login name - - - password User's encrypted password (or the string "*" if the client is - unprivileged) - - - uid User's numeric id. - - - gid User's numeric login group id. - - - class User's general classification (a string) - - - change Password change time (integer seconds from epoch) - - - expire Account expiration time (integer seconds from epoch) - - - gecos General information about the user. - - - home_dir User's home directory. - - - shell User's login shell. - - For example. Client being a non-privileged user: - - C: GETPWNAM brister - - S: 231 User found - brister:*:1364:100:James Brister:/udir/brister:/bin/csh: - . - - C: GETPWUID 6 - games:*:7:13:Games Pseudo-user:/usr/games:nologin - . - - S: GETPWENT - root:*:0:0:System Administrator:/root:/bin/csh - postmast:*:4:4:Postmaster:/:/nologin - daemon:*:1:1:System Daemon:/:nologin - sys:*:2:2:Operating System:/tmp:nologin - bin:*:3:7:BSDI Software:/usr/bsdi:nologin - operator:*:5:5:System Operator:/usr/opr:/bin/csh - uucp:*:6:6:UNIX-to-UNIX Copy:/var/spool/uucppublic:/usr/libexec/uucico - . - - If a priviled user looks up a username: - - C: GETPWNAM www - - S: 231 User found - www:WZajcgFCaAd8s:51:84::0:0:WWW-server:/var/www:/bin/sh - . - -3.3 The NETWORK commands - -3.3.1 GETNETBYNAME network -3.3.2 GETNETBYADDR dotted-ip-address address-family -3.3.4 GETNETENT - - Returns a textual response with the network information (an IRS struct - nwent, *not* a struct netent) enocoded in an ascii format. The optionally - supported GETNETENT command transmits the entire /etc/networks file - -{ XXX should it be optional? } - -3.2.4 Reponses - - 220 No such network - 221 Netork found - - If the network given as the command argument doesn't exist, then the 220 - response will be returned. If the network is successfully looked up, then - the 221 response is sent and a textual message is sent after. The textual - message contains the network information encoded in an ascii form. The fields - of the network data are separated by colons. - - network-name:aliases:address-type:address-length:network-address: - - - network-name is the name of the network - - - aliases is a comma separated list of aliases for the network - - - address-type is ``AF_INET'' or ``AF_INET6''. - - - address-length is the number of bits the following network address uses. - - - address is the network address in a dotted ascii format. AF_INET address - are padded with 0 bits to the full 32 bits before conversion to ascii for - transmission. AF_INET6 addresses are padded to the full 128 bits with 0 - bits before conversion. - - For example: - - C: GETNETBYNAME vixie-net - - S: 221 Network found - vixie-net::AF_INET:24:192.5.5.0: - . - - C: GETNETBYADDR 10.0.0.1 - - S: 221 Network found - private-net:home-net,upstairs-net:AF_INET:8:10.0.0.0: - . - - C: GETNETENT - - S: 221 OK - vixie-net::AF_INET:24:192.5.5.0: - private-net:home-net,upstairs-net:AF_INET:8:10.0.0.0: - lookback-net::AF_INET:8:127.0.0.0 - . - -3.4 The GROUP commands - -3.4.1 GETGRNAM group -3.4.2 GETGRGID gid -3.4.3 GETGRENT - - Returns a textual response with the group information (a struct group) - enocoded in an ascii format. The optionally supported GETGRENT command - transmits the entire /etc/group file. - -3.4.4 Reponses - - 240 No such group - 241 Group found - - If the group given as the command argument doesn't exist, then the 240 - response will be returned. If the group is successfully looked up, then - the 241 response is sent and a textual message is sent after. The textual - message contains the group information encoded in an ascii form. The fields - of the group data are separated by colons. - - group-name:group-password:group-gid:group-members: - - - group-name is the name of the group. - - - group-password is the group's password. This will be correct if the - client has appropriate privileges (see discussion above on the USER - commands). Otherwise it will be the string ``*'' - - - group-gid is the numeric id for the group - - - group-members is a comma separated list of usernames for all the members - of the group. - - For example: - - C: GETGRNAM wheel - - S: 241 Group found - wheel:*:0:root,brister,nathalie,tester: - - C: GETGRGID 20 - - S: 241 Group found - staff:*:20:root,brister: - - C: GETGRENT - - S: 241 OK - wheel:*:0:root,brister,nathalie,tester: - daemon:*:1:daemon: - kmem:*:2:root: - sys:*:3:root: - tty:*:4:root: - operator:*:5:root: - uucp:*:6:brister: - bin:*:7:: - news:*:8:brister: - utmp:*:12:: - games:*:13:: - mail:*:14:: - staff:*:20:root,brister: - . - -3.5 The SERVICE commands - -3.5.1 GETSERVBYNAME name protocol -3.5.2 GETSERVBYPORT port protocol -3.5.3 GETSERVENT - - Returns a textual response with the service information (a struct servent) - enocoded in an ascii format. The optionally supported GETSERVENT command - transmits the entire /etc/services file. - -3.5.4 Reponses - - 250 No such service - 251 Group found - - If the group given as the command argument doesn't exist, then the 250 - response will be returned. If the service is successfully looked up, then - the 251 response is sent and a textual message is sent after. The textual - message contains the service information encoded in an ascii form. The fields - of the service data are separated by colons. - - service-name:aliases:port-number:protocol: - - - The service name is the offical name of the services. - - - aliases is a comma separated list of aliases for the service. - - - port-number is the decimal number of the port used for the service. - - - protocol is the name of the protocol the service operates under. Usually - either ``TCP'' or ``UCP'' - - For example: - - C: GETSERVBYNAME nntp tcp - - S: 251 Service found - nntp:readnews,untp:119:tcp: - . - - C: GETSERVBYPORT 514 udp - syslog::514:ucp: - . - - C: GETSERVENT - 251 OK - tcpmux::1:tcp: - echo::7:tcp: - echo::7:udp: - discard:sink,null:9:tcp: - discard:sink,null:9:udp: - systat:users:11:tcp: - systat:users:11:udp: - daytime::13:tcp: - daytime::13:udp: - netstat::15:tcp: - qotd:quote:17:tcp: - qotd:quote:17:udp: - . - -3.6 The PROTOCOL commands - -3.6.1 GETPROTOBYNAME protocol-name -3.6.2 GETPROTOBYNUMBER protocol-number -3.6.3 GETPROTOENT - - Returns a textual response with the protocol information (a struct protoent) - enocoded in an ascii format. The optionally supported GETPROTOENT command - transmits the entire /etc/protocols file. - -3.6.4 Reponses - - 260 No such protocol - 261 Protocol found - - If the protocol given as the command argument doesn't exist, then the 260 - response will be returned. If the service is successfully looked up, then - the 261 response is sent and a textual message is sent after. The textual - message contains the protocol information encoded in an ascii form. The fields - of the protocol data are separated by colons. - - protocol-name:aliases:protocol-number: - - - protocol-name is the offical name of the protocol - - - aliases is a comma separated list of aliases for the protocol - - - protocol-nunber is the number of the protocol in decimal. - - - For example: - - C: GETPROTOBYNAME ip - - S: 261 Protocol found - ip:IP:0: - . - - C: GETPROTOBYNUMBER 17 - - S: 261 Protocol found - udp:UDP:17: - . - - C: GETPROTOENT - - S: 261 OK - ip:IP:0: - icmp:ICMP:1: - igmp:IGMP:2: - ggp:GGP:3: - tcp:TCP:6: - egp:EGP:8: - pup:PUP:12: - udp:UDP:17: - hmp:HMP:20: - xns-idp:XNS-IDP:22: - rdp:RDP:27: - iso-tp4:ISO-TP4:29: - iso-ip:ISO-IP:80: - encap:ENCAP:98: - . - -3.7 The NETGROUP commands - -3.7.1 GETNETGRENT netgrouup - - Returns a textual response with the netgroup information enocoded in an - ascii format. - -3.6.4 Reponses - - 270 No such netgroup - 271 Netgroups found - - For the given netgroup a list of the netgroup entries will be - returned. Each netgroup entry is three fields separated by colons. A field - may be empty to indicate wildcarding. - - :hostname:username:domainname: - - For example: - - C: GETNETGRENT devlopers - - S: 271 OK - :gw.home.vix.com:brister:vix.com: - :bb.rc.vix.com:vixie:: - . - - - - |