1.\" Copyright (c) 1985, 1991, 1993, 1994 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. All advertising materials mentioning features or use of this software 13.\" must display the following acknowledgement: 14.\" This product includes software developed by the University of 15.\" California, Berkeley and its contributors. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" from: @(#)inetd.8 8.3 (Berkeley) 4/13/94 33.\" $FreeBSD$ 34.\" 35.Dd February 7, 1996 36.Dt INETD 8 37.Os BSD 4.4 38.Sh NAME 39.Nm inetd 40.Nd internet 41.Dq super-server 42.Sh SYNOPSIS 43.Nm 44.Op Fl d 45.Op Fl l 46.Op Fl w 47.Op Fl W 48.Op Fl c Ar maximum 49.Op Fl C Ar rate 50.Op Fl a Ar address | hostname 51.Op Fl p Ar filename 52.Op Fl R Ar rate 53.Op Ar configuration file 54.Sh DESCRIPTION 55The 56.Nm 57program 58should be run at boot time by 59.Pa /etc/rc 60(see 61.Xr rc 8 ) . 62It then listens for connections on certain 63internet sockets. When a connection is found on one 64of its sockets, it decides what service the socket 65corresponds to, and invokes a program to service the request. 66The server program is invoked with the service socket 67as its standard input, output and error descriptors. 68After the program is 69finished, 70.Nm 71continues to listen on the socket (except in some cases which 72will be described below). Essentially, 73.Nm 74allows running one daemon to invoke several others, 75reducing load on the system. 76.Pp 77The following options are available: 78.Bl -tag -width indent 79.It Fl d 80Turn on debugging. 81.It Fl l 82Turn on logging of successful connections. 83.It Fl w 84Turn on TCP Wrapping for external services. 85See the 86.Sx "IMPLEMENTATION NOTES" 87section for more information on TCP Wrappers support. 88.It Fl W 89Turn on TCP Wrapping for internal services which are built in to 90.Nm . 91.It Fl c Ar maximum 92Specify the default maximum number of 93simultaneous invocations of each service; 94the default is unlimited. 95May be overridden on a per-service basis with the "max-child" 96parameter. 97.It Fl C Ar rate 98Specify the default maximum number of times a service can be invoked 99from a single IP address in one minute; the default is unlimited. 100May be overridden on a per-service basis with the 101"max-connections-per-ip-per-minute" parameter. 102.It Fl R Ar rate 103Specify the maximum number of times a service can be invoked 104in one minute; the default is 256. 105A rate of 0 allows an unlimited number of invocations. 106.It Fl a 107Specify one specific IP address to bind to. 108Alternatively, a hostname can be specified, 109in which case the IPv4 or IPv6 address 110which corresponds to that hostname is used. 111Usually a hostname is specified when 112.Nm 113is run inside a 114.Xr jail 8 , 115in which case the hostname corresponds to the 116.Xr jail 8 117environment. 118.Pp 119When hostname specification is used 120and both IPv4 and IPv6 bindings are desired, 121one entry with the appropriate 122.Em protocol 123type for each binding 124is required for each service in 125.Pa /etc/inetd.conf . 126For example, 127a TCP-based service would need two entries, 128one using 129.Dq tcp4 130for the 131.Em protocol 132and the other using 133.Dq tcp6 . 134See the explanation of the 135.Pa /etc/inetd.conf 136.Em protocol 137field below. 138.It Fl p 139Specify an alternate file in which to store the process ID. 140.El 141.Pp 142Upon execution, 143.Nm 144reads its configuration information from a configuration 145file which, by default, is 146.Pa /etc/inetd.conf . 147There must be an entry for each field of the configuration 148file, with entries for each field separated by a tab or 149a space. Comments are denoted by a 150.Dq # 151at the beginning 152of a line. There must be an entry for each field. The 153fields of the configuration file are as follows: 154.Pp 155.Bd -unfilled -offset indent -compact 156service name 157socket type 158protocol 159{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]] 160user[:group][/login-class] 161server program 162server program arguments 163.Ed 164.Pp 165To specify an 166.Tn "ONC RPC" Ns -based 167service, the entry would contain these fields: 168.Pp 169.Bd -unfilled -offset indent -compact 170service name/version 171socket type 172rpc/protocol 173user[:group][/login-class] 174server program 175server program arguments 176.Ed 177.Pp 178There are two types of services that 179.Nm 180can start: standard and TCPMUX. 181A standard service has a well-known port assigned to it; 182it may be a service that implements an official Internet standard or is a 183BSD-specific service. 184As described in 185.Tn RFC 1078 , 186TCPMUX services are nonstandard services that do not have a 187well-known port assigned to them. 188They are invoked from 189.Nm 190when a program connects to the 191.Dq tcpmux 192well-known port and specifies 193the service name. 194This feature is useful for adding locally-developed servers. 195TCPMUX requests are only accepted when the multiplexor service itself 196is enabled, above and beyond and specific TCPMUX-based servers; see the 197discussion of internal services below. 198.Pp 199The 200.Em service-name 201entry is the name of a valid service in 202the file 203.Pa /etc/services , 204or the specification of a 205.Ux 206domain socket (see below). 207For 208.Dq internal 209services (discussed below), the service 210name 211should 212be the official name of the service (that is, the first entry in 213.Pa /etc/services ) . 214When used to specify an 215.Tn "ONC RPC" Ns -based 216service, this field is a valid RPC service name in 217the file 218.Pa /etc/rpc . 219The part on the right of the 220.Dq / 221is the RPC version number. 222This 223can simply be a single numeric argument or a range of versions. 224A range is bounded by the low version to the high version - 225.Dq rusers/1-3 . 226For TCPMUX services, the value of the 227.Em service-name 228field consists of the string 229.Dq tcpmux 230followed by a slash and the 231locally-chosen service name. 232The service names listed in 233.Pa /etc/services 234and the name 235.Dq help 236are reserved. 237Try to choose unique names for your TCPMUX services by prefixing them with 238your organization's name and suffixing them with a version number. 239.Pp 240The 241.Em socket-type 242should be one of 243.Dq stream , 244.Dq dgram , 245.Dq raw , 246.Dq rdm , 247or 248.Dq seqpacket , 249depending on whether the socket is a stream, datagram, raw, 250reliably delivered message, or sequenced packet socket. 251TCPMUX services must use 252.Dq stream . 253.Pp 254The 255.Em protocol 256must be a valid protocol or 257.Dq unix . 258Examples are 259.Dq tcp 260or 261.Dq udp , 262both of which imply IPv4 for backward compatibility. 263The names 264.Dq tcp4 265and 266.Dq udp4 267specify IPv4 only. 268The names 269.Dq tcp6 270and 271.Dq udp6 272specify IPv6 only. 273The names 274.Dq tcp46 275and 276.Dq udp46 277specify that the entry accepts both IPv6 and IPv6 connections 278via a wildcard 279.Dv AF_INET6 280socket. 281If it is desired that the service is reachable via T/TCP, one should 282specify 283.Dq tcp/ttcp , 284which implies IPv4 for backward compatibility. 285The name 286.Dq tcp4/ttcp 287specifies IPv4 only, while 288.Dq tcp6/ttcp 289specifies IPv6 only. 290The name 291.Dq tcp46/ttcp 292specify that the entry accepts both IPv6 and IPv6 connections 293via a wildcard 294.Dv AF_INET6 295socket. 296Rpc based services 297(for which only IPv4 is supported at this time) 298are specified with the 299.Dq rpc/tcp 300or 301.Dq rpc/udp 302service type. 303TCPMUX services must use 304.Dq tcp , 305.Dq tcp4 , 306.Dq tcp6 307or 308.Dq tcp46 . 309.Pp 310The 311.Em wait/nowait 312entry specifies whether the server that is invoked by 313.Nm 314will take over 315the socket associated with the service access point, and thus whether 316.Nm 317should wait for the server to exit before listening for new service 318requests. 319Datagram servers must use 320.Dq wait , 321as they are always invoked with the original datagram socket bound 322to the specified service address. 323These servers must read at least one datagram from the socket 324before exiting. 325If a datagram server connects 326to its peer, freeing the socket so 327.Nm 328can receive further messages on the socket, it is said to be 329a 330.Dq multi-threaded 331server; 332it should read one datagram from the socket and create a new socket 333connected to the peer. 334It should fork, and the parent should then exit 335to allow 336.Nm 337to check for new service requests to spawn new servers. 338Datagram servers which process all incoming datagrams 339on a socket and eventually time out are said to be 340.Dq single-threaded . 341.Xr Comsat 8 , 342.Pq Xr biff 1 343and 344.Xr talkd 8 345are both examples of the latter type of 346datagram server. 347.Xr Tftpd 8 348is an example of a multi-threaded datagram server. 349.Pp 350Servers using stream sockets generally are multi-threaded and 351use the 352.Dq nowait 353entry. 354Connection requests for these services are accepted by 355.Nm , 356and the server is given only the newly-accepted socket connected 357to a client of the service. 358Most stream-based services operate in this manner. 359Stream-based servers that use 360.Dq wait 361are started with the listening service socket, and must accept 362at least one connection request before exiting. 363Such a server would normally accept and process incoming connection 364requests until a timeout. 365TCPMUX services must use 366.Dq nowait . 367.Pp 368The maximum number of outstanding child processes (or 369.Dq threads ) 370for a 371.Dq nowait 372service may be explicitly specified by appending a 373.Dq / 374followed by the number to the 375.Dq nowait 376keyword. 377Normally 378(or if a value of zero is specified) there is no maximum. 379Otherwise, 380once the maximum is reached, further connection attempts will be 381queued up until an existing child process exits. 382This also works 383in the case of 384.Dq wait 385mode, although a value other than one (the 386default) might not make sense in some cases. 387You can also specify the maximum number of connections per minute 388for a given IP address by appending 389a 390.Dq / 391followed by the number to the maximum number of 392outstanding child processes. 393Once the maximum is reached, further 394connections from this IP address will be dropped until the end of the 395minute. 396.Pp 397The 398.Em user 399entry should contain the user name of the user as whom the server 400should run. This allows for servers to be given less permission 401than root. 402Optional 403.Em group 404part separated by 405.Dq \&: 406allows to specify group name different 407than default group for this user. 408Optional 409.Em login-class 410part separated by 411.Dq / 412allows to specify login class different 413than default 414.Dq daemon 415login class. 416.Pp 417The 418.Em server-program 419entry should contain the pathname of the program which is to be 420executed by 421.Nm 422when a request is found on its socket. If 423.Nm 424provides this service internally, this entry should 425be 426.Dq internal . 427.Pp 428The 429.Em server program arguments 430should be just as arguments 431normally are, starting with argv[0], which is the name of 432the program. If the service is provided internally, the 433.Em service-name 434of the service (and any arguments to it) or the word 435.Dq internal 436should take the place of this entry. 437.Pp 438Currently, the only internal service to take arguments is 439.Dq auth . 440Without options, the service will always return 441.Dq ERROR\ : HIDDEN-USER . 442The available arguments to this service that alter its behavior are: 443.Bl -tag -width indent 444.It Fl d Ar fallback 445Provide a 446.Ar fallback 447username. 448If the real 449.Dq auth 450service is enabled 451(with the 452.Fl r 453option discussed below), 454return this username instead of an error 455when look ups fail 456for either socket credentials or the username. 457If the real 458.Dq auth 459service is disabled, 460return this username for every request. 461This is primarily useful when running this service on a NAT machine. 462.It Fl g 463Instead of returning 464the user's name to the ident requester, 465report a 466username made up of random alphanumeric characters, 467e.g. 468.Dq c0c993 . 469The 470.Fl g 471flag overrides not only the user names, 472but also any fallback name, 473.Pa .fakeid 474or 475.Pa .noident 476files. 477.It Fl t Xo 478.Ar sec Ns Op . Ns Ar usec 479.Xc 480Specify a timeout for the service. 481The default timeout is 10.0 seconds. 482.It Fl r 483Offer a real 484.Dq auth 485service, as per RFC 1413. 486All the remaining flags apply only in this case. 487.It Fl i 488Return numeric user IDs instead of usernames. 489.It Fl f 490If the file 491.Pa .fakeid 492exists in the home directory of the identified user, report the username 493found in that file instead of the real username. 494If the username found in 495.Pa .fakeid 496is that of an existing user, 497then the real username is reported. 498If the 499.Fl i 500flag is also given then the username in 501.Pa .fakeid 502is checked against existing user IDs instead. 503.It Fl F 504same as 505.Fl f 506but without the restriction that the username in 507.Pa .fakeid 508must not match an existing user. 509.It Fl n 510If the file 511.Pa .noident 512exists in the home directory of the identified user, return 513.Dq ERROR\ : HIDDEN-USER . 514This overrides any 515.Pa fakeid 516file which might exist. 517.It Fl o Ar osname 518Use 519.Ar osname 520instead of the name of the system as reported by 521.Xr uname 3 . 522.El 523.Pp 524The 525.Nm 526program 527also provides several other 528.Dq trivial 529services internally by use of 530routines within itself. These services are 531.Dq echo , 532.Dq discard , 533.Dq chargen 534(character generator), 535.Dq daytime 536(human readable time), and 537.Dq time 538(machine readable time, in the form of the number of seconds since 539midnight, January 1, 1900). All of these services are available in 540both TCP and UDP versions; the UDP versions will refuse service if the 541request specifies a reply port corresponding to any internal service. 542(This is done as a defense against looping attacks; the remote IP address 543is logged.) 544For details of these services, consult the 545appropriate 546.Tn RFC 547document. 548.Pp 549The TCPMUX-demultiplexing service is also implemented as an internal service. 550For any TCPMUX-based service to function, the following line must be included 551in 552.Pa inetd.conf : 553.Bd -literal -offset indent 554tcpmux stream tcp nowait root internal 555.Ed 556.Pp 557When given the 558.Fl l 559option 560.Nm 561will log an entry to syslog each time a connection is accepted, noting the 562service selected and the IP-number of the remote requester if available. 563Unless otherwise specified in the configuration file, 564and in the absence of the 565.Fl W 566and 567.Fl w 568options, 569.Nm 570will log to the 571.Dq daemon 572facility. 573.Pp 574The 575.Nm 576program 577rereads its configuration file when it receives a hangup signal, 578.Dv SIGHUP . 579Services may be added, deleted or modified when the configuration file 580is reread. 581Except when started in debugging mode, 582.Nm 583records its process ID in the file 584.Pa /var/run/inetd.pid 585to assist in reconfiguration. 586.Sh IMPLEMENTATION NOTES 587.Ss TCP Wrappers 588When given the 589.Fl w 590option, 591.Nm 592will wrap all services specified as 593.Dq stream nowait 594or 595.Dq dgram 596except for 597.Dq internal 598services. 599If the 600.Fl W 601option is given, such 602.Dq internal 603services will be wrapped. 604If both options are given, wrapping for both 605internal and external services will be enabled. 606Either wrapping option 607will cause failed connections to be logged to the 608.Dq auth 609syslog facility. 610Adding the 611.Fl l 612flag to the wrapping options will include successful connections in the 613logging to the 614.Dq auth 615facility. 616.Pp 617Note that 618.Nm 619only wraps requests for a 620.Dq wait 621service while no servers are available to service requests. 622Once a 623connection to such a service has been allowed, inetd has no control 624over subsequent connections to the service until no more servers 625are left listening for connection requests. 626.Pp 627When wrapping is enabled, the 628.Pa tcpd 629daemon is not required, as that functionality is builtin. 630For more information on TCP Wrappers; see the relevant documentation ( 631.Xr hosts_access 5 632). 633When reading that document, keep in mind that 634.Dq internal 635services have no associated daemon name. 636Therefore, the service name 637as specified in 638.Pa inetd.conf 639should be used as the daemon name for 640.Dq internal 641services. 642.Ss TCPMUX 643.Tn RFC 1078 644describes the TCPMUX protocol: 645``A TCP client connects to a foreign host on TCP port 1. It sends the 646service name followed by a carriage-return line-feed <CRLF>. The 647service name is never case sensitive. The server replies with a 648single character indicating positive (+) or negative (\-) 649acknowledgment, immediately followed by an optional message of 650explanation, terminated with a <CRLF>. If the reply was positive, 651the selected protocol begins; otherwise the connection is closed.'' 652The program is passed the TCP connection as file descriptors 0 and 1. 653.Pp 654If the TCPMUX service name begins with a 655.Dq + , 656.Nm 657returns the positive reply for the program. 658This allows you to invoke programs that use stdin/stdout 659without putting any special server code in them. 660.Pp 661The special service name 662.Dq help 663causes 664.Nm 665to list TCPMUX services in 666.Pa inetd.conf . 667.Ss IPsec 668The implementation includes a tiny hack 669to support IPsec policy settings for each socket. 670A special form of comment line, starting with 671.Dq Li #@ , 672is interpreted as a policy specifier. 673Everything after the 674.Dq Li #@ 675will be used as an IPsec policy string, 676as described in 677.Xr ipsec_set_policy 3 . 678Each 679policy specifier is applied to all the following lines in 680.Pa inetd.conf 681until the next policy specifier. 682An empty policy specifier resets the IPsec policy. 683.Pp 684If an invalid IPsec policy specifier appears in 685.Pa inetd.conf , 686.Nm 687will provide an error message via the 688.Xr syslog 3 689interface and abort execution. 690.Ss Ux Domain Sockets 691In addition to running services on IP sockets, 692.Nm 693can also manage 694.Ux 695domain sockets. 696To do this you specify a 697.Em protocol 698of 699.Dq unix 700and specify the unix domain socket as the 701.Em service-name . 702The 703.Em service-type 704may be 705.Dq stream 706or 707.Dq dgram . 708The specification of the socket must be 709an absolute path name, 710optionally prefixed by an owner and mode 711of the form 712.Em :user:group:mode: . 713The specification: 714.Bd -literal -offset indent -compact 715:news:daemon:220:/var/run/sock 716.Ed 717creates a socket owned 718by user news in group daemon 719with permissions allowing only that user and group to connect. 720The default owner is the user that inetd is running as. 721The default mode only allows the socket's owner to connect. 722.Pp 723.Sy WARNING: 724while creating 725.Ux 726domain socket 727.Nm 728must change the ownership and permissions on the socket. 729This can only be done securely if 730the directory in which the socket is created 731is writable only by root. 732Do 733.Sy NOT 734use 735.Nm 736to create sockets in world writable directories, 737such as 738.Pa /tmp , 739instead use 740.Pa /var/run 741or a similar directory. 742.Pp 743Internal services may be run on 744.Ux 745domain sockets, in the usual way. 746In this case 747the name of the internal service 748is determined using 749the last component of the socket's pathname. 750.Sh "FILES" 751.Bl -tag -width /var/run/inetd.pid -compact 752.It Pa /etc/inetd.conf 753configuration file 754.It Pa /etc/rpc 755translation of service names to RPC program numbers 756.It Pa /etc/services 757translation of service names to port numbers 758.It Pa /var/run/inetd.pid 759the pid of the currently running 760.Nm 761.El 762.Sh "EXAMPLES" 763.Pp 764Here are several example service entries for the various types of services: 765.Bd -literal 766ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l 767ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd 768telnet stream tcp6 nowait root /usr/libexec/telnetd telnetd 769shell stream tcp46 nowait root /usr/libexec/rshd rshd 770tcpmux/+date stream tcp nowait guest /bin/date date 771tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook 772rstatd/1-3 dgram rpc/udp wait root /usr/libexec/rpc.rstatd rpc.rstatd 773/var/run/echo stream unix nowait root internal 774#@ ipsec ah/require 775chargen stream tcp nowait root internal 776#@ 777.Ed 778.Sh "ERROR MESSAGES" 779The 780.Nm 781server 782logs error messages using 783.Xr syslog 3 . 784Important error messages and their explanations are: 785.Pp 786.Bl -ohang -compact 787.It Xo 788.Ar service Ns / Ns Ar protocol 789.No "server failing (looping), service terminated." 790.Xc 791The number of requests for the specified service in the past minute 792exceeded the limit. 793The limit exists to prevent a broken program 794or a malicious user from swamping the system. 795This message may occur for several reasons: 796.Bl -enum -offset indent 797.It 798There are many hosts requesting the service within a short time period. 799.It 800A broken client program is requesting the service too frequently. 801.It 802A malicious user is running a program to invoke the service in 803a denial-of-service attack. 804.It 805The invoked service program has an error that causes clients 806to retry quickly. 807.El 808.Pp 809Use the 810.Fl R Ar rate 811option, 812as described above, to change the rate limit. 813Once the limit is reached, the service will be 814reenabled automatically in 10 minutes. 815.Pp 816.It Xo 817.Ar service Ns / Ns Ar protocol : 818.No \&No such user 819.Ar user , 820.No service ignored 821.Xc 822.It Xo 823.Ar service Ns / Ns Ar protocol : 824.No getpwnam : 825.Ar user : 826.No \&No such user 827.Xc 828No entry for 829.Ar user 830exists in the 831.Xr passwd 5 832database. 833The first message 834occurs when 835.Nm 836(re)reads the configuration file. 837The second message occurs when the 838service is invoked. 839.Pp 840.It Xo 841.Ar service : 842.No can't set uid 843.Ar uid 844.Xc 845.It Xo 846.Ar service : 847.No can't set gid 848.Ar gid 849.Xc 850The user or group ID for the entry's 851.Ar user 852field is invalid. 853.Pp 854.It "setsockopt(SO_PRIVSTATE): Operation not supported" 855The 856.Nm 857program attempted to renounce the privileged state associated with a 858socket but was unable to. 859.El 860.Sh SEE ALSO 861.Xr hosts_access 5 , 862.Xr hosts_options 5 , 863.Xr ipsec_set_policy 3 , 864.Xr login.conf 5 , 865.Xr passwd 5 , 866.Xr rpc 5 , 867.Xr services 5 , 868.Xr comsat 8 , 869.Xr fingerd 8 , 870.Xr ftpd 8 , 871.Xr rpcbind 8 , 872.Xr rexecd 8 , 873.Xr rlogind 8 , 874.Xr rshd 8 , 875.Xr telnetd 8 , 876.Xr tftpd 8 877.Rs 878.%A Michael C. St. Johns 879.%T Identification Protocol 880.%O RFC1413 881.Re 882.Sh HISTORY 883The 884.Nm 885command appeared in 886.Bx 4.3 . 887TCPMUX is based on code and documentation by Mark Lottor. 888Support for 889.Tn "ONC RPC" 890based services is modeled after that 891provided by 892.Tn SunOS 8934.1. 894The IPsec hack was contributed by the KAME project in 1999. 895The 896.Fx 897TCP Wrappers support first appeared in 898.Fx 3.2 . 899