home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 53 75 62 6a 65 63 74 3a | 20 20 76 30 36 69 30 39 |Subject:| v06i09|
|00000010| 30 3a 20 20 53 75 6e 20 | 52 50 43 20 53 6f 75 72 |0: Sun |RPC Sour|
|00000020| 63 65 20 28 72 70 63 32 | 29 2c 20 50 61 72 74 30 |ce (rpc2|), Part0|
|00000030| 32 2f 31 31 0a 4e 65 77 | 73 67 72 6f 75 70 73 3a |2/11.New|sgroups:|
|00000040| 20 6d 6f 64 2e 73 6f 75 | 72 63 65 73 0a 41 70 70 | mod.sou|rces.App|
|00000050| 72 6f 76 65 64 3a 20 72 | 73 40 6d 69 72 72 6f 72 |roved: r|s@mirror|
|00000060| 2e 55 55 43 50 0a 0a 53 | 75 62 6d 69 74 74 65 64 |.UUCP..S|ubmitted|
|00000070| 20 62 79 3a 20 73 75 6e | 21 66 65 72 6e 65 21 6d | by: sun|!ferne!m|
|00000080| 61 72 6b 73 20 28 4d 61 | 72 6b 20 53 74 65 69 6e |arks (Ma|rk Stein|
|00000090| 29 0a 4d 6f 64 2e 73 6f | 75 72 63 65 73 3a 20 56 |).Mod.so|urces: V|
|000000a0| 6f 6c 75 6d 65 20 36 2c | 20 49 73 73 75 65 20 39 |olume 6,| Issue 9|
|000000b0| 30 0a 41 72 63 68 69 76 | 65 2d 6e 61 6d 65 3a 20 |0.Archiv|e-name: |
|000000c0| 72 70 63 32 2f 50 61 72 | 74 30 32 0a 0a 5b 20 20 |rpc2/Par|t02..[ |
|000000d0| 41 6c 6c 20 49 20 68 61 | 76 65 20 64 6f 6e 65 20 |All I ha|ve done |
|000000e0| 69 73 20 76 65 72 69 66 | 79 20 74 68 61 74 20 74 |is verif|y that t|
|000000f0| 68 65 20 73 68 61 72 20 | 66 69 6c 65 73 20 75 6e |he shar |files un|
|00000100| 70 61 63 6b 20 63 6f 72 | 72 65 63 74 6c 79 2e 20 |pack cor|rectly. |
|00000110| 20 2d 72 24 20 5d 0a 0a | 53 75 6e 20 52 50 43 20 | -r$ ]..|Sun RPC |
|00000120| 73 6f 75 72 63 65 20 28 | 70 61 72 74 20 32 20 6f |source (|part 2 o|
|00000130| 66 20 31 31 29 2e 20 20 | 54 68 69 73 20 73 6f 66 |f 11). |This sof|
|00000140| 74 77 61 72 65 20 70 61 | 63 6b 61 67 65 20 63 6f |tware pa|ckage co|
|00000150| 6e 74 61 69 6e 73 20 63 | 6f 64 65 0a 61 6e 64 20 |ntains c|ode.and |
|00000160| 64 6f 63 75 6d 65 6e 74 | 61 74 69 6f 6e 20 66 6f |document|ation fo|
|00000170| 72 20 52 65 76 69 73 69 | 6f 6e 20 33 2e 30 20 6f |r Revisi|on 3.0 o|
|00000180| 66 20 74 68 65 20 53 75 | 6e 20 52 65 6d 6f 74 65 |f the Su|n Remote|
|00000190| 20 50 72 6f 63 65 64 75 | 72 65 20 43 61 6c 6c 0a | Procedu|re Call.|
|000001a0| 6c 69 62 72 61 72 79 2e | 20 20 49 6e 20 61 64 64 |library.| In add|
|000001b0| 69 74 69 6f 6e 2c 20 61 | 20 62 65 74 61 20 76 65 |ition, a| beta ve|
|000001c0| 72 73 69 6f 6e 20 6f 66 | 20 74 68 65 20 58 44 52 |rsion of| the XDR|
|000001d0| 2f 52 50 43 20 70 72 6f | 74 6f 63 6f 6c 20 63 6f |/RPC pro|tocol co|
|000001e0| 6d 70 69 6c 65 72 0a 69 | 73 20 69 6e 63 6c 75 64 |mpiler.i|s includ|
|000001f0| 65 64 2e 20 20 43 6f 6d | 6d 65 6e 74 73 20 61 62 |ed. Com|ments ab|
|00000200| 6f 75 74 20 74 68 69 73 | 20 6c 61 74 65 73 74 20 |out this| latest |
|00000210| 72 65 6c 65 61 73 65 20 | 6d 61 79 20 62 65 20 6d |release |may be m|
|00000220| 61 69 6c 65 64 20 74 6f | 0a 73 75 6e 21 72 70 63 |ailed to|.sun!rpc|
|00000230| 20 6f 72 20 72 70 63 40 | 73 75 6e 2e 63 6f 6d 2e | or rpc@|sun.com.|
|00000240| 0a 0a 53 75 6e 20 52 50 | 43 20 69 73 20 61 20 70 |..Sun RP|C is a p|
|00000250| 72 6f 64 75 63 74 20 6f | 66 20 53 75 6e 20 4d 69 |roduct o|f Sun Mi|
|00000260| 63 72 6f 73 79 73 74 65 | 6d 73 2c 20 49 6e 63 2e |crosyste|ms, Inc.|
|00000270| 20 61 6e 64 20 69 73 20 | 70 72 6f 76 69 64 65 64 | and is |provided|
|00000280| 20 66 6f 72 0a 75 6e 72 | 65 73 74 72 69 63 74 65 | for.unr|estricte|
|00000290| 64 20 75 73 65 20 70 72 | 6f 76 69 64 65 64 20 74 |d use pr|ovided t|
|000002a0| 68 61 74 20 74 68 69 73 | 20 6c 65 67 65 6e 64 20 |hat this| legend |
|000002b0| 69 73 20 69 6e 63 6c 75 | 64 65 64 20 6f 6e 20 61 |is inclu|ded on a|
|000002c0| 6c 6c 20 74 61 70 65 0a | 6d 65 64 69 61 20 61 6e |ll tape.|media an|
|000002d0| 64 20 61 73 20 61 20 70 | 61 72 74 20 6f 66 20 74 |d as a p|art of t|
|000002e0| 68 65 20 73 6f 66 74 77 | 61 72 65 20 70 72 6f 67 |he softw|are prog|
|000002f0| 72 61 6d 20 69 6e 20 77 | 68 6f 6c 65 20 6f 72 20 |ram in w|hole or |
|00000300| 70 61 72 74 2e 20 20 55 | 73 65 72 73 0a 6d 61 79 |part. U|sers.may|
|00000310| 20 63 6f 70 79 20 6f 72 | 20 6d 6f 64 69 66 79 20 | copy or| modify |
|00000320| 53 75 6e 20 52 50 43 20 | 77 69 74 68 6f 75 74 20 |Sun RPC |without |
|00000330| 63 68 61 72 67 65 2c 20 | 62 75 74 20 61 72 65 20 |charge, |but are |
|00000340| 6e 6f 74 20 61 75 74 68 | 6f 72 69 7a 65 64 20 74 |not auth|orized t|
|00000350| 6f 0a 6c 69 63 65 6e 73 | 65 20 6f 72 20 64 69 73 |o.licens|e or dis|
|00000360| 74 72 69 62 75 74 65 20 | 69 74 20 74 6f 20 61 6e |tribute |it to an|
|00000370| 79 6f 6e 65 20 65 6c 73 | 65 20 65 78 63 65 70 74 |yone els|e except|
|00000380| 20 61 73 20 70 61 72 74 | 20 6f 66 20 61 20 70 72 | as part| of a pr|
|00000390| 6f 64 75 63 74 20 6f 72 | 0a 70 72 6f 67 72 61 6d |oduct or|.program|
|000003a0| 20 64 65 76 65 6c 6f 70 | 65 64 20 62 79 20 74 68 | develop|ed by th|
|000003b0| 65 20 75 73 65 72 2e 0a | 0a 2d 20 2d 20 2d 20 2d |e user..|.- - - -|
|000003c0| 20 2d 20 2d 20 2d 20 2d | 20 2d 20 43 20 55 20 54 | - - - -| - C U T|
|000003d0| 20 2d 20 48 20 45 20 52 | 20 45 20 2d 20 2d 20 2d | - H E R| E - - -|
|000003e0| 20 2d 20 2d 20 2d 20 2d | 20 2d 20 2d 20 2d 20 2d | - - - -| - - - -|
|000003f0| 20 2d 20 2d 20 2d 20 2d | 20 2d 20 2d 20 2d 0a 23 | - - - -| - - -.#|
|00000400| 21 20 2f 62 69 6e 2f 73 | 68 0a 23 20 54 68 69 73 |! /bin/s|h.# This|
|00000410| 20 69 73 20 61 20 73 68 | 65 6c 6c 20 61 72 63 68 | is a sh|ell arch|
|00000420| 69 76 65 2c 20 6d 65 61 | 6e 69 6e 67 3a 0a 23 20 |ive, mea|ning:.# |
|00000430| 31 2e 20 52 65 6d 6f 76 | 65 20 65 76 65 72 79 74 |1. Remov|e everyt|
|00000440| 68 69 6e 67 20 61 62 6f | 76 65 20 74 68 65 20 23 |hing abo|ve the #|
|00000450| 21 20 2f 62 69 6e 2f 73 | 68 20 6c 69 6e 65 2e 0a |! /bin/s|h line..|
|00000460| 23 20 32 2e 20 53 61 76 | 65 20 74 68 65 20 72 65 |# 2. Sav|e the re|
|00000470| 73 75 6c 74 69 6e 67 20 | 74 65 78 74 20 69 6e 20 |sulting |text in |
|00000480| 61 20 66 69 6c 65 2e 0a | 23 20 33 2e 20 45 78 65 |a file..|# 3. Exe|
|00000490| 63 75 74 65 20 74 68 65 | 20 66 69 6c 65 20 77 69 |cute the| file wi|
|000004a0| 74 68 20 2f 62 69 6e 2f | 73 68 20 28 6e 6f 74 20 |th /bin/|sh (not |
|000004b0| 63 73 68 29 20 74 6f 20 | 63 72 65 61 74 65 3a 0a |csh) to |create:.|
|000004c0| 23 09 72 70 63 2f 64 6f | 63 2f 72 70 63 2e 70 72 |#.rpc/do|c/rpc.pr|
|000004d0| 6f 67 2e 70 31 0a 23 20 | 54 68 69 73 20 61 72 63 |og.p1.# |This arc|
|000004e0| 68 69 76 65 20 63 72 65 | 61 74 65 64 3a 20 4d 6f |hive cre|ated: Mo|
|000004f0| 6e 20 4a 75 6c 20 31 34 | 20 31 36 3a 35 34 3a 35 |n Jul 14| 16:54:5|
|00000500| 38 20 31 39 38 36 0a 65 | 78 70 6f 72 74 20 50 41 |8 1986.e|xport PA|
|00000510| 54 48 3b 20 50 41 54 48 | 3d 2f 62 69 6e 3a 2f 75 |TH; PATH|=/bin:/u|
|00000520| 73 72 2f 62 69 6e 3a 24 | 50 41 54 48 0a 66 6f 72 |sr/bin:$|PATH.for|
|00000530| 20 64 20 69 6e 20 72 70 | 63 20 72 70 63 2f 64 6f | d in rp|c rpc/do|
|00000540| 63 20 72 70 63 2f 72 70 | 63 6c 69 62 20 72 70 63 |c rpc/rp|clib rpc|
|00000550| 2f 74 6f 6f 6c 73 20 72 | 70 63 2f 74 6f 79 73 20 |/tools r|pc/toys |
|00000560| 72 70 63 2f 72 70 63 6c | 69 62 2f 70 72 6f 66 69 |rpc/rpcl|ib/profi|
|00000570| 6c 65 64 20 72 70 63 2f | 72 70 63 67 65 6e 20 72 |led rpc/|rpcgen r|
|00000580| 70 63 2f 72 70 63 67 65 | 6e 2f 74 65 73 74 0a 64 |pc/rpcge|n/test.d|
|00000590| 6f 0a 09 69 66 20 74 65 | 73 74 20 21 20 2d 64 20 |o..if te|st ! -d |
|000005a0| 24 64 0a 09 74 68 65 6e | 0a 09 09 65 63 68 6f 20 |$d..then|...echo |
|000005b0| 22 73 68 61 72 3a 20 4d | 61 6b 69 6e 67 20 64 69 |"shar: M|aking di|
|000005c0| 72 65 63 74 6f 72 79 20 | 24 64 22 0a 09 09 6d 6b |rectory |$d"...mk|
|000005d0| 64 69 72 20 24 64 0a 09 | 09 63 68 6d 6f 64 20 37 |dir $d..|.chmod 7|
|000005e0| 35 35 20 24 64 0a 09 66 | 69 0a 64 6f 6e 65 0a 65 |55 $d..f|i.done.e|
|000005f0| 63 68 6f 20 73 68 61 72 | 3a 20 22 65 78 74 72 61 |cho shar|: "extra|
|00000600| 63 74 69 6e 67 20 27 72 | 70 63 2f 64 6f 63 2f 72 |cting 'r|pc/doc/r|
|00000610| 70 63 2e 70 72 6f 67 2e | 70 31 27 22 20 27 28 34 |pc.prog.|p1'" '(4|
|00000620| 39 33 36 35 20 63 68 61 | 72 61 63 74 65 72 73 29 |9365 cha|racters)|
|00000630| 27 0a 69 66 20 74 65 73 | 74 20 2d 66 20 27 72 70 |'.if tes|t -f 'rp|
|00000640| 63 2f 64 6f 63 2f 72 70 | 63 2e 70 72 6f 67 2e 70 |c/doc/rp|c.prog.p|
|00000650| 31 27 0a 74 68 65 6e 0a | 09 65 63 68 6f 20 73 68 |1'.then.|.echo sh|
|00000660| 61 72 3a 20 22 77 69 6c | 6c 20 6e 6f 74 20 6f 76 |ar: "wil|l not ov|
|00000670| 65 72 2d 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |er-write| existin|
|00000680| 67 20 66 69 6c 65 20 27 | 72 70 63 2f 64 6f 63 2f |g file '|rpc/doc/|
|00000690| 72 70 63 2e 70 72 6f 67 | 2e 70 31 27 22 0a 65 6c |rpc.prog|.p1'".el|
|000006a0| 73 65 0a 73 65 64 20 27 | 73 2f 5e 58 2f 2f 27 20 |se.sed '|s/^X//' |
|000006b0| 3c 3c 20 5c 53 48 41 52 | 5f 45 4f 46 20 3e 20 27 |<< \SHAR|_EOF > '|
|000006c0| 72 70 63 2f 64 6f 63 2f | 72 70 63 2e 70 72 6f 67 |rpc/doc/|rpc.prog|
|000006d0| 2e 70 31 27 0a 58 2e 50 | 4c 20 52 49 47 48 54 0a |.p1'.X.P|L RIGHT.|
|000006e0| 58 2e 54 4c 0a 58 52 65 | 6d 6f 74 65 20 50 72 6f |X.TL.XRe|mote Pro|
|000006f0| 63 65 64 75 72 65 20 43 | 61 6c 6c 0a 58 2e 62 72 |cedure C|all.X.br|
|00000700| 0a 58 50 72 6f 67 72 61 | 6d 6d 69 6e 67 20 47 75 |.XProgra|mming Gu|
|00000710| 69 64 65 0a 58 2e 62 70 | 0a 58 2e 4e 48 0a 58 49 |ide.X.bp|.X.NH.XI|
|00000720| 6e 74 72 6f 64 75 63 74 | 69 6f 6e 0a 58 2e 4c 50 |ntroduct|ion.X.LP|
|00000730| 0a 58 54 68 69 73 20 64 | 6f 63 75 6d 65 6e 74 20 |.XThis d|ocument |
|00000740| 69 73 20 69 6e 74 65 6e | 64 65 64 20 66 6f 72 20 |is inten|ded for |
|00000750| 70 72 6f 67 72 61 6d 6d | 65 72 73 0a 58 77 68 6f |programm|ers.Xwho|
|00000760| 20 77 69 73 68 20 74 6f | 20 77 72 69 74 65 20 6e | wish to| write n|
|00000770| 65 74 77 6f 72 6b 20 61 | 70 70 6c 69 63 61 74 69 |etwork a|pplicati|
|00000780| 6f 6e 73 0a 58 75 73 69 | 6e 67 20 72 65 6d 6f 74 |ons.Xusi|ng remot|
|00000790| 65 20 70 72 6f 63 65 64 | 75 72 65 20 63 61 6c 6c |e proced|ure call|
|000007a0| 73 20 28 65 78 70 6c 61 | 69 6e 65 64 20 62 65 6c |s (expla|ined bel|
|000007b0| 6f 77 29 2c 0a 58 74 68 | 75 73 20 61 76 6f 69 64 |ow),.Xth|us avoid|
|000007c0| 69 6e 67 20 6c 6f 77 2d | 6c 65 76 65 6c 20 73 79 |ing low-|level sy|
|000007d0| 73 74 65 6d 20 70 72 69 | 6d 69 74 69 76 65 73 20 |stem pri|mitives |
|000007e0| 62 61 73 65 64 20 6f 6e | 20 73 6f 63 6b 65 74 73 |based on| sockets|
|000007f0| 2e 0a 58 54 68 65 20 72 | 65 61 64 65 72 20 6d 75 |..XThe r|eader mu|
|00000800| 73 74 20 62 65 20 66 61 | 6d 69 6c 69 61 72 20 77 |st be fa|miliar w|
|00000810| 69 74 68 20 74 68 65 20 | 43 20 70 72 6f 67 72 61 |ith the |C progra|
|00000820| 6d 6d 69 6e 67 20 6c 61 | 6e 67 75 61 67 65 2c 0a |mming la|nguage,.|
|00000830| 58 61 6e 64 20 73 68 6f | 75 6c 64 20 68 61 76 65 |Xand sho|uld have|
|00000840| 20 61 20 77 6f 72 6b 69 | 6e 67 20 6b 6e 6f 77 6c | a worki|ng knowl|
|00000850| 65 64 67 65 20 6f 66 20 | 6e 65 74 77 6f 72 6b 20 |edge of |network |
|00000860| 74 68 65 6f 72 79 2e 0a | 58 2e 4c 50 0a 58 50 72 |theory..|X.LP.XPr|
|00000870| 6f 67 72 61 6d 73 20 74 | 68 61 74 20 63 6f 6d 6d |ograms t|hat comm|
|00000880| 75 6e 69 63 61 74 65 20 | 6f 76 65 72 20 61 20 6e |unicate |over a n|
|00000890| 65 74 77 6f 72 6b 0a 58 | 6e 65 65 64 20 61 20 70 |etwork.X|need a p|
|000008a0| 61 72 61 64 69 67 6d 20 | 66 6f 72 20 63 6f 6d 6d |aradigm |for comm|
|000008b0| 75 6e 69 63 61 74 69 6f | 6e 2e 0a 58 41 20 6c 6f |unicatio|n..XA lo|
|000008c0| 77 2d 6c 65 76 65 6c 20 | 6d 65 63 68 61 6e 69 73 |w-level |mechanis|
|000008d0| 6d 20 6d 69 67 68 74 0a | 58 73 65 6e 64 20 61 20 |m might.|Xsend a |
|000008e0| 73 69 67 6e 61 6c 20 6f | 6e 20 74 68 65 20 61 72 |signal o|n the ar|
|000008f0| 72 69 76 61 6c 20 6f 66 | 20 69 6e 63 6f 6d 69 6e |rival of| incomin|
|00000900| 67 20 70 61 63 6b 65 74 | 73 2c 0a 58 63 61 75 73 |g packet|s,.Xcaus|
|00000910| 69 6e 67 20 61 20 6e 65 | 74 77 6f 72 6b 20 73 69 |ing a ne|twork si|
|00000920| 67 6e 61 6c 20 68 61 6e | 64 6c 65 72 20 74 6f 20 |gnal han|dler to |
|00000930| 65 78 65 63 75 74 65 2e | 0a 58 41 20 68 69 67 68 |execute.|.XA high|
|00000940| 2d 6c 65 76 65 6c 20 6d | 65 63 68 61 6e 69 73 6d |-level m|echanism|
|00000950| 20 77 6f 75 6c 64 20 62 | 65 20 74 68 65 20 41 64 | would b|e the Ad|
|00000960| 61 0a 58 2e 4c 57 20 72 | 65 6e 64 65 7a 76 6f 75 |a.X.LW r|endezvou|
|00000970| 73 20 2e 0a 58 54 68 65 | 20 6d 65 74 68 6f 64 20 |s ..XThe| method |
|00000980| 75 73 65 64 20 61 74 20 | 53 75 6e 20 69 73 20 74 |used at |Sun is t|
|00000990| 68 65 0a 58 52 65 6d 6f | 74 65 20 50 72 6f 63 65 |he.XRemo|te Proce|
|000009a0| 64 75 72 65 20 43 61 6c | 6c 20 28 52 50 43 29 20 |dure Cal|l (RPC) |
|000009b0| 70 61 72 61 64 69 67 6d | 2c 0a 58 69 6e 20 77 68 |paradigm|,.Xin wh|
|000009c0| 69 63 68 20 61 20 63 6c | 69 65 6e 74 20 63 6f 6d |ich a cl|ient com|
|000009d0| 6d 75 6e 69 63 61 74 65 | 73 20 77 69 74 68 20 61 |municate|s with a|
|000009e0| 20 73 65 72 76 65 72 2e | 0a 58 49 6e 20 74 68 69 | server.|.XIn thi|
|000009f0| 73 20 70 72 6f 63 65 73 | 73 2c 0a 58 74 68 65 20 |s proces|s,.Xthe |
|00000a00| 63 6c 69 65 6e 74 20 66 | 69 72 73 74 20 63 61 6c |client f|irst cal|
|00000a10| 6c 73 20 61 20 70 72 6f | 63 65 64 75 72 65 20 74 |ls a pro|cedure t|
|00000a20| 6f 20 73 65 6e 64 20 61 | 20 64 61 74 61 20 70 61 |o send a| data pa|
|00000a30| 63 6b 65 74 20 74 6f 20 | 74 68 65 20 73 65 72 76 |cket to |the serv|
|00000a40| 65 72 2e 0a 58 57 68 65 | 6e 20 74 68 65 20 70 61 |er..XWhe|n the pa|
|00000a50| 63 6b 65 74 20 61 72 72 | 69 76 65 73 2c 20 74 68 |cket arr|ives, th|
|00000a60| 65 20 73 65 72 76 65 72 | 20 63 61 6c 6c 73 20 61 |e server| calls a|
|00000a70| 20 64 69 73 70 61 74 63 | 68 20 72 6f 75 74 69 6e | dispatc|h routin|
|00000a80| 65 2c 0a 58 70 65 72 66 | 6f 72 6d 73 20 77 68 61 |e,.Xperf|orms wha|
|00000a90| 74 65 76 65 72 20 73 65 | 72 76 69 63 65 20 69 73 |tever se|rvice is|
|00000aa0| 20 72 65 71 75 65 73 74 | 65 64 2c 20 73 65 6e 64 | request|ed, send|
|00000ab0| 73 20 62 61 63 6b 20 74 | 68 65 20 72 65 70 6c 79 |s back t|he reply|
|00000ac0| 2c 0a 58 61 6e 64 20 74 | 68 65 20 70 72 6f 63 65 |,.Xand t|he proce|
|00000ad0| 64 75 72 65 20 63 61 6c | 6c 20 72 65 74 75 72 6e |dure cal|l return|
|00000ae0| 73 20 74 6f 20 74 68 65 | 20 63 6c 69 65 6e 74 2e |s to the| client.|
|00000af0| 0a 58 2e 4e 48 20 32 0a | 58 4c 61 79 65 72 73 20 |.X.NH 2.|XLayers |
|00000b00| 6f 66 20 52 50 43 0a 58 | 2e 4c 50 0a 58 54 68 65 |of RPC.X|.LP.XThe|
|00000b10| 20 52 50 43 20 69 6e 74 | 65 72 66 61 63 65 20 69 | RPC int|erface i|
|00000b20| 73 20 64 69 76 69 64 65 | 64 20 69 6e 74 6f 20 74 |s divide|d into t|
|00000b30| 68 72 65 65 20 6c 61 79 | 65 72 73 2e 0a 58 54 68 |hree lay|ers..XTh|
|00000b40| 65 20 68 69 67 68 65 73 | 74 20 6c 61 79 65 72 20 |e highes|t layer |
|00000b50| 69 73 20 74 6f 74 61 6c | 6c 79 20 74 72 61 6e 73 |is total|ly trans|
|00000b60| 70 61 72 65 6e 74 20 74 | 6f 20 74 68 65 20 70 72 |parent t|o the pr|
|00000b70| 6f 67 72 61 6d 6d 65 72 | 2e 0a 58 54 6f 20 69 6c |ogrammer|..XTo il|
|00000b80| 6c 75 73 74 72 61 74 65 | 2c 0a 58 61 74 20 74 68 |lustrate|,.Xat th|
|00000b90| 69 73 20 6c 65 76 65 6c | 20 61 20 70 72 6f 67 72 |is level| a progr|
|00000ba0| 61 6d 20 63 61 6e 20 63 | 6f 6e 74 61 69 6e 20 61 |am can c|ontain a|
|00000bb0| 20 63 61 6c 6c 20 74 6f | 0a 58 2e 4c 57 20 72 6e | call to|.X.LW rn|
|00000bc0| 75 73 65 72 73 28 29 20 | 2c 0a 58 77 68 69 63 68 |users() |,.Xwhich|
|00000bd0| 20 72 65 74 75 72 6e 73 | 20 74 68 65 20 6e 75 6d | returns| the num|
|00000be0| 62 65 72 20 6f 66 20 75 | 73 65 72 73 20 6f 6e 20 |ber of u|sers on |
|00000bf0| 61 20 72 65 6d 6f 74 65 | 20 6d 61 63 68 69 6e 65 |a remote| machine|
|00000c00| 2e 0a 58 59 6f 75 20 64 | 6f 6e 27 74 20 68 61 76 |..XYou d|on't hav|
|00000c10| 65 20 74 6f 20 62 65 20 | 61 77 61 72 65 20 74 68 |e to be |aware th|
|00000c20| 61 74 20 52 50 43 20 69 | 73 20 62 65 69 6e 67 20 |at RPC i|s being |
|00000c30| 75 73 65 64 2c 0a 58 73 | 69 6e 63 65 20 79 6f 75 |used,.Xs|ince you|
|00000c40| 20 73 69 6d 70 6c 79 20 | 6d 61 6b 65 20 74 68 65 | simply |make the|
|00000c50| 20 63 61 6c 6c 20 69 6e | 20 61 20 70 72 6f 67 72 | call in| a progr|
|00000c60| 61 6d 2c 0a 58 6a 75 73 | 74 20 61 73 20 79 6f 75 |am,.Xjus|t as you|
|00000c70| 20 77 6f 75 6c 64 20 63 | 61 6c 6c 0a 58 2e 4c 57 | would c|all.X.LW|
|00000c80| 20 6d 61 6c 6c 6f 63 28 | 29 20 2e 0a 58 2e 4c 50 | malloc(|) ..X.LP|
|00000c90| 0a 58 41 74 20 74 68 65 | 20 6d 69 64 64 6c 65 20 |.XAt the| middle |
|00000ca0| 6c 61 79 65 72 2c 20 74 | 68 65 20 72 6f 75 74 69 |layer, t|he routi|
|00000cb0| 6e 65 73 0a 58 2e 4c 57 | 20 72 65 67 69 73 74 65 |nes.X.LW| registe|
|00000cc0| 72 72 70 63 28 29 0a 58 | 61 6e 64 0a 58 2e 4c 57 |rrpc().X|and.X.LW|
|00000cd0| 20 63 61 6c 6c 72 70 63 | 28 29 0a 58 61 72 65 20 | callrpc|().Xare |
|00000ce0| 75 73 65 64 20 74 6f 20 | 6d 61 6b 65 20 52 50 43 |used to |make RPC|
|00000cf0| 20 63 61 6c 6c 73 3a 0a | 58 2e 4c 57 20 72 65 67 | calls:.|X.LW reg|
|00000d00| 69 73 74 65 72 72 70 63 | 28 29 0a 58 6f 62 74 61 |isterrpc|().Xobta|
|00000d10| 69 6e 73 20 61 20 75 6e | 69 71 75 65 20 73 79 73 |ins a un|ique sys|
|00000d20| 74 65 6d 2d 77 69 64 65 | 20 6e 75 6d 62 65 72 2c |tem-wide| number,|
|00000d30| 20 77 68 69 6c 65 0a 58 | 2e 4c 57 20 63 61 6c 6c | while.X|.LW call|
|00000d40| 72 70 63 28 29 0a 58 65 | 78 65 63 75 74 65 73 20 |rpc().Xe|xecutes |
|00000d50| 61 20 72 65 6d 6f 74 65 | 20 70 72 6f 63 65 64 75 |a remote| procedu|
|00000d60| 72 65 20 63 61 6c 6c 2e | 0a 58 54 68 65 0a 58 2e |re call.|.XThe.X.|
|00000d70| 4c 57 20 72 6e 75 73 65 | 72 73 28 29 0a 58 63 61 |LW rnuse|rs().Xca|
|00000d80| 6c 6c 20 69 73 20 69 6d | 70 6c 65 6d 65 6e 74 65 |ll is im|plemente|
|00000d90| 64 20 75 73 69 6e 67 20 | 74 68 65 73 65 20 74 77 |d using |these tw|
|00000da0| 6f 20 72 6f 75 74 69 6e | 65 73 2e 0a 58 54 68 65 |o routin|es..XThe|
|00000db0| 20 6d 69 64 64 6c 65 2d | 6c 61 79 65 72 20 72 6f | middle-|layer ro|
|00000dc0| 75 74 69 6e 65 73 20 61 | 72 65 20 64 65 73 69 67 |utines a|re desig|
|00000dd0| 6e 65 64 20 66 6f 72 20 | 6d 6f 73 74 20 63 6f 6d |ned for |most com|
|00000de0| 6d 6f 6e 20 61 70 70 6c | 69 63 61 74 69 6f 6e 73 |mon appl|ications|
|00000df0| 2c 0a 58 61 6e 64 20 73 | 68 69 65 6c 64 20 74 68 |,.Xand s|hield th|
|00000e00| 65 20 75 73 65 72 20 66 | 72 6f 6d 20 6b 6e 6f 77 |e user f|rom know|
|00000e10| 69 6e 67 20 61 62 6f 75 | 74 20 73 6f 63 6b 65 74 |ing abou|t socket|
|00000e20| 73 2e 0a 58 2e 4c 50 0a | 58 54 68 65 20 6c 6f 77 |s..X.LP.|XThe low|
|00000e30| 65 73 74 20 6c 61 79 65 | 72 20 69 73 20 66 6f 72 |est laye|r is for|
|00000e40| 20 6d 6f 72 65 20 73 6f | 70 68 69 73 74 69 63 61 | more so|phistica|
|00000e50| 74 65 64 20 61 70 70 6c | 69 63 61 74 69 6f 6e 73 |ted appl|ications|
|00000e60| 2c 0a 58 73 75 63 68 20 | 61 73 20 61 6c 74 65 72 |,.Xsuch |as alter|
|00000e70| 69 6e 67 20 74 68 65 20 | 64 65 66 61 75 6c 74 73 |ing the |defaults|
|00000e80| 20 6f 66 20 74 68 65 20 | 72 6f 75 74 69 6e 65 73 | of the |routines|
|00000e90| 2e 0a 58 41 74 20 74 68 | 69 73 20 6c 61 79 65 72 |..XAt th|is layer|
|00000ea0| 2c 20 79 6f 75 20 63 61 | 6e 20 65 78 70 6c 69 63 |, you ca|n explic|
|00000eb0| 69 74 6c 79 20 6d 61 6e | 69 70 75 6c 61 74 65 0a |itly man|ipulate.|
|00000ec0| 58 73 6f 63 6b 65 74 73 | 20 74 68 61 74 20 74 72 |Xsockets| that tr|
|00000ed0| 61 6e 73 6d 69 74 20 52 | 50 43 20 6d 65 73 73 61 |ansmit R|PC messa|
|00000ee0| 67 65 73 2e 0a 58 54 68 | 69 73 20 6c 65 76 65 6c |ges..XTh|is level|
|00000ef0| 20 73 68 6f 75 6c 64 20 | 62 65 20 61 76 6f 69 64 | should |be avoid|
|00000f00| 65 64 20 69 66 20 70 6f | 73 73 69 62 6c 65 2e 0a |ed if po|ssible..|
|00000f10| 58 2e 4c 50 0a 58 53 65 | 63 74 69 6f 6e 20 32 20 |X.LP.XSe|ction 2 |
|00000f20| 6f 66 20 74 68 69 73 20 | 6d 61 6e 75 61 6c 20 69 |of this |manual i|
|00000f30| 6c 6c 75 73 74 72 61 74 | 65 73 20 75 73 65 20 6f |llustrat|es use o|
|00000f40| 66 20 74 68 65 20 68 69 | 67 68 65 73 74 20 74 77 |f the hi|ghest tw|
|00000f50| 6f 20 6c 61 79 65 72 73 | 0a 58 77 68 69 6c 65 20 |o layers|.Xwhile |
|00000f60| 53 65 63 74 69 6f 6e 20 | 33 20 70 72 65 73 65 6e |Section |3 presen|
|00000f70| 74 73 20 74 68 65 20 6c | 6f 77 2d 6c 65 76 65 6c |ts the l|ow-level|
|00000f80| 20 69 6e 74 65 72 66 61 | 63 65 2e 0a 58 53 65 63 | interfa|ce..XSec|
|00000f90| 74 69 6f 6e 20 34 20 6f | 66 20 74 68 65 20 6d 61 |tion 4 o|f the ma|
|00000fa0| 6e 75 61 6c 20 64 69 73 | 63 75 73 73 65 73 20 6d |nual dis|cusses m|
|00000fb0| 69 73 63 65 6c 6c 61 6e | 65 6f 75 73 20 74 6f 70 |iscellan|eous top|
|00000fc0| 69 63 73 2e 0a 58 54 68 | 65 20 66 69 6e 61 6c 20 |ics..XTh|e final |
|00000fd0| 73 65 63 74 69 6f 6e 20 | 73 75 6d 6d 61 72 69 7a |section |summariz|
|00000fe0| 65 73 0a 58 61 6c 6c 20 | 74 68 65 20 65 6e 74 72 |es.Xall |the entr|
|00000ff0| 79 20 70 6f 69 6e 74 73 | 20 69 6e 74 6f 20 74 68 |y points| into th|
|00001000| 65 20 52 50 43 20 73 79 | 73 74 65 6d 2e 0a 58 2e |e RPC sy|stem..X.|
|00001010| 4c 50 0a 58 41 6c 74 68 | 6f 75 67 68 20 74 68 69 |LP.XAlth|ough thi|
|00001020| 73 20 64 6f 63 75 6d 65 | 6e 74 20 6f 6e 6c 79 20 |s docume|nt only |
|00001030| 64 69 73 63 75 73 73 65 | 73 20 74 68 65 20 69 6e |discusse|s the in|
|00001040| 74 65 72 66 61 63 65 20 | 74 6f 20 43 2c 0a 58 72 |terface |to C,.Xr|
|00001050| 65 6d 6f 74 65 20 70 72 | 6f 63 65 64 75 72 65 20 |emote pr|ocedure |
|00001060| 63 61 6c 6c 73 20 63 61 | 6e 20 62 65 20 6d 61 64 |calls ca|n be mad|
|00001070| 65 20 66 72 6f 6d 20 61 | 6e 79 20 6c 61 6e 67 75 |e from a|ny langu|
|00001080| 61 67 65 2e 0a 58 45 76 | 65 6e 20 74 68 6f 75 67 |age..XEv|en thoug|
|00001090| 68 20 74 68 69 73 20 64 | 6f 63 75 6d 65 6e 74 20 |h this d|ocument |
|000010a0| 64 69 73 63 75 73 73 65 | 73 20 52 50 43 0a 58 77 |discusse|s RPC.Xw|
|000010b0| 68 65 6e 20 69 74 20 69 | 73 20 75 73 65 64 20 74 |hen it i|s used t|
|000010c0| 6f 20 63 6f 6d 6d 75 6e | 69 63 61 74 65 0a 58 62 |o commun|icate.Xb|
|000010d0| 65 74 77 65 65 6e 20 70 | 72 6f 63 65 73 73 65 73 |etween p|rocesses|
|000010e0| 20 6f 6e 20 64 69 66 66 | 65 72 65 6e 74 20 6d 61 | on diff|erent ma|
|000010f0| 63 68 69 6e 65 73 2c 0a | 58 69 74 20 77 6f 72 6b |chines,.|Xit work|
|00001100| 73 20 6a 75 73 74 20 61 | 73 20 77 65 6c 6c 20 66 |s just a|s well f|
|00001110| 6f 72 20 63 6f 6d 6d 75 | 6e 69 63 61 74 69 6f 6e |or commu|nication|
|00001120| 0a 58 62 65 74 77 65 65 | 6e 20 64 69 66 66 65 72 |.Xbetwee|n differ|
|00001130| 65 6e 74 20 70 72 6f 63 | 65 73 73 65 73 20 6f 6e |ent proc|esses on|
|00001140| 20 74 68 65 20 73 61 6d | 65 20 6d 61 63 68 69 6e | the sam|e machin|
|00001150| 65 2e 0a 58 2e 4e 48 20 | 32 0a 58 54 68 65 20 52 |e..X.NH |2.XThe R|
|00001160| 50 43 20 50 61 72 61 64 | 69 67 6d 0a 58 2e 4c 50 |PC Parad|igm.X.LP|
|00001170| 0a 58 48 65 72 65 20 69 | 73 20 61 20 64 69 61 67 |.XHere i|s a diag|
|00001180| 72 61 6d 20 6f 66 20 74 | 68 65 20 52 50 43 20 70 |ram of t|he RPC p|
|00001190| 61 72 61 64 69 67 6d 3a | 0a 58 2e 4c 50 0a 58 2e |aradigm:|.X.LP.X.|
|000011a0| 50 4c 20 46 55 4c 4c 0a | 58 2e 50 53 0a 58 4c 31 |PL FULL.|X.PS.XL1|
|000011b0| 3a 20 61 72 72 6f 77 20 | 64 6f 77 6e 20 31 69 20 |: arrow |down 1i |
|000011c0| 22 63 6c 69 65 6e 74 20 | 22 20 72 6a 75 73 74 20 |"client |" rjust |
|000011d0| 22 70 72 6f 67 72 61 6d | 20 22 20 72 6a 75 73 74 |"program| " rjust|
|000011e0| 0a 58 4c 32 3a 20 6c 69 | 6e 65 20 72 69 67 68 74 |.XL2: li|ne right|
|000011f0| 20 31 2e 35 69 20 22 5c | 66 4c 63 61 6c 6c 72 70 | 1.5i "\|fLcallrp|
|00001200| 63 28 29 5c 66 50 22 20 | 22 66 75 6e 63 74 69 6f |c()\fP" |"functio|
|00001210| 6e 22 0a 58 6d 6f 76 65 | 20 75 70 20 31 2e 35 69 |n".Xmove| up 1.5i|
|00001220| 3b 20 6c 69 6e 65 20 64 | 6f 74 74 65 64 20 64 6f |; line d|otted do|
|00001230| 77 6e 20 36 69 3b 20 6d | 6f 76 65 20 75 70 20 34 |wn 6i; m|ove up 4|
|00001240| 2e 35 69 0a 58 61 72 72 | 6f 77 20 72 69 67 68 74 |.5i.Xarr|ow right|
|00001250| 20 31 69 0a 58 4c 33 3a | 20 61 72 72 6f 77 20 64 | 1i.XL3:| arrow d|
|00001260| 6f 77 6e 20 31 69 20 22 | 65 78 65 63 75 74 65 20 |own 1i "|execute |
|00001270| 22 20 72 6a 75 73 74 20 | 22 72 65 71 75 65 73 74 |" rjust |"request|
|00001280| 20 22 20 72 6a 75 73 74 | 0a 58 4c 34 3a 20 61 72 | " rjust|.XL4: ar|
|00001290| 72 6f 77 20 72 69 67 68 | 74 20 31 2e 35 69 20 22 |row righ|t 1.5i "|
|000012a0| 63 61 6c 6c 22 20 22 73 | 65 72 76 69 63 65 22 0a |call" "s|ervice".|
|000012b0| 58 4c 35 3a 20 61 72 72 | 6f 77 20 64 6f 77 6e 20 |XL5: arr|ow down |
|000012c0| 31 69 20 22 20 73 65 72 | 76 69 63 65 22 20 6c 6a |1i " ser|vice" lj|
|000012d0| 75 73 74 20 22 20 65 78 | 65 63 75 74 65 73 22 20 |ust " ex|ecutes" |
|000012e0| 6c 6a 75 73 74 0a 58 4c | 36 3a 20 61 72 72 6f 77 |ljust.XL|6: arrow|
|000012f0| 20 6c 65 66 74 20 31 2e | 35 69 20 22 5c 66 4c 72 | left 1.|5i "\fLr|
|00001300| 65 74 75 72 6e 5c 66 50 | 22 20 22 61 6e 73 77 65 |eturn\fP|" "answe|
|00001310| 72 22 0a 58 4c 37 3a 20 | 61 72 72 6f 77 20 64 6f |r".XL7: |arrow do|
|00001320| 77 6e 20 31 69 20 22 72 | 65 71 75 65 73 74 20 22 |wn 1i "r|equest "|
|00001330| 20 72 6a 75 73 74 20 22 | 63 6f 6d 70 6c 65 74 65 | rjust "|complete|
|00001340| 64 20 22 20 72 6a 75 73 | 74 0a 58 4c 38 3a 20 6c |d " rjus|t.XL8: l|
|00001350| 69 6e 65 20 6c 65 66 74 | 20 31 69 0a 58 61 72 72 |ine left| 1i.Xarr|
|00001360| 6f 77 20 6c 65 66 74 20 | 31 2e 35 69 20 22 5c 66 |ow left |1.5i "\f|
|00001370| 4c 72 65 74 75 72 6e 5c | 66 50 22 20 22 72 65 70 |Lreturn\|fP" "rep|
|00001380| 6c 79 22 0a 58 4c 39 3a | 20 61 72 72 6f 77 20 64 |ly".XL9:| arrow d|
|00001390| 6f 77 6e 20 31 69 20 22 | 70 72 6f 67 72 61 6d 20 |own 1i "|program |
|000013a0| 22 20 72 6a 75 73 74 20 | 22 63 6f 6e 74 69 6e 75 |" rjust |"continu|
|000013b0| 65 73 20 22 20 72 6a 75 | 73 74 0a 58 6c 69 6e 65 |es " rju|st.Xline|
|000013c0| 20 64 61 73 68 65 64 20 | 64 6f 77 6e 20 66 72 6f | dashed |down fro|
|000013d0| 6d 20 4c 32 20 74 6f 20 | 4c 39 0a 58 6c 69 6e 65 |m L2 to |L9.Xline|
|000013e0| 20 64 61 73 68 65 64 20 | 64 6f 77 6e 20 66 72 6f | dashed |down fro|
|000013f0| 6d 20 4c 34 20 74 6f 20 | 4c 37 0a 58 6c 69 6e 65 |m L4 to |L7.Xline|
|00001400| 20 64 61 73 68 65 64 20 | 75 70 20 31 69 20 66 72 | dashed |up 1i fr|
|00001410| 6f 6d 20 4c 33 20 22 73 | 65 72 76 69 63 65 20 22 |om L3 "s|ervice "|
|00001420| 20 72 6a 75 73 74 20 22 | 64 61 65 6d 6f 6e 20 22 | rjust "|daemon "|
|00001430| 20 72 6a 75 73 74 0a 58 | 61 72 72 6f 77 20 64 61 | rjust.X|arrow da|
|00001440| 73 68 65 64 20 64 6f 77 | 6e 20 31 69 20 66 72 6f |shed dow|n 1i fro|
|00001450| 6d 20 4c 38 0a 58 6d 6f | 76 65 20 72 69 67 68 74 |m L8.Xmo|ve right|
|00001460| 20 31 69 20 66 72 6f 6d | 20 4c 33 0a 58 62 6f 78 | 1i from| L3.Xbox|
|00001470| 20 69 6e 76 69 73 20 22 | 4d 61 63 68 69 6e 65 20 | invis "|Machine |
|00001480| 42 22 0a 58 6d 6f 76 65 | 20 6c 65 66 74 20 31 2e |B".Xmove| left 1.|
|00001490| 32 69 20 66 72 6f 6d 20 | 4c 32 3b 20 6d 6f 76 65 |2i from |L2; move|
|000014a0| 20 64 6f 77 6e 0a 58 62 | 6f 78 20 69 6e 76 69 73 | down.Xb|ox invis|
|000014b0| 20 22 4d 61 63 68 69 6e | 65 20 41 22 0a 58 2e 50 | "Machin|e A".X.P|
|000014c0| 45 0a 58 2e 46 4e 20 22 | 4e 65 74 77 6f 72 6b 20 |E.X.FN "|Network |
|000014d0| 43 6f 6d 6d 75 6e 69 63 | 61 74 69 6f 6e 20 77 69 |Communic|ation wi|
|000014e0| 74 68 20 74 68 65 20 52 | 65 6d 6f 74 65 20 50 72 |th the R|emote Pr|
|000014f0| 6f 63 65 64 75 72 65 20 | 43 61 6c 6c 22 0a 58 2e |ocedure |Call".X.|
|00001500| 50 4c 20 52 49 47 48 54 | 0a 58 2e 62 70 0a 58 2e |PL RIGHT|.X.bp.X.|
|00001510| 4e 48 0a 58 48 69 67 68 | 65 72 20 4c 61 79 65 72 |NH.XHigh|er Layer|
|00001520| 73 20 6f 66 20 52 50 43 | 0a 58 2e 4e 48 20 32 0a |s of RPC|.X.NH 2.|
|00001530| 58 48 69 67 68 65 73 74 | 20 4c 61 79 65 72 0a 58 |XHighest| Layer.X|
|00001540| 2e 4c 50 0a 58 49 6d 61 | 67 69 6e 65 20 79 6f 75 |.LP.XIma|gine you|
|00001550| 27 72 65 20 77 72 69 74 | 69 6e 67 20 61 20 70 72 |'re writ|ing a pr|
|00001560| 6f 67 72 61 6d 20 74 68 | 61 74 20 6e 65 65 64 73 |ogram th|at needs|
|00001570| 20 74 6f 20 6b 6e 6f 77 | 0a 58 68 6f 77 20 6d 61 | to know|.Xhow ma|
|00001580| 6e 79 20 75 73 65 72 73 | 20 61 72 65 20 6c 6f 67 |ny users| are log|
|00001590| 67 65 64 20 69 6e 74 6f | 20 61 20 72 65 6d 6f 74 |ged into| a remot|
|000015a0| 65 20 6d 61 63 68 69 6e | 65 2e 0a 58 59 6f 75 20 |e machin|e..XYou |
|000015b0| 63 61 6e 20 64 6f 20 74 | 68 69 73 20 62 79 20 63 |can do t|his by c|
|000015c0| 61 6c 6c 69 6e 67 20 74 | 68 65 20 6c 69 62 72 61 |alling t|he libra|
|000015d0| 72 79 20 72 6f 75 74 69 | 6e 65 0a 58 2e 4c 57 20 |ry routi|ne.X.LW |
|000015e0| 72 6e 75 73 65 72 73 28 | 29 20 2c 0a 58 61 73 20 |rnusers(|) ,.Xas |
|000015f0| 69 6c 6c 75 73 74 72 61 | 74 65 64 20 62 65 6c 6f |illustra|ted belo|
|00001600| 77 3a 0a 58 2e 42 53 0a | 58 2e 4c 53 0a 58 23 69 |w:.X.BS.|X.LS.X#i|
|00001610| 6e 63 6c 75 64 65 20 3c | 73 74 64 69 6f 2e 68 3e |nclude <|stdio.h>|
|00001620| 0a 58 2e 73 70 2e 35 0a | 58 6d 61 69 6e 28 61 72 |.X.sp.5.|Xmain(ar|
|00001630| 67 63 2c 20 61 72 67 76 | 29 0a 58 09 69 6e 74 20 |gc, argv|).X.int |
|00001640| 61 72 67 63 3b 0a 58 09 | 63 68 61 72 20 2a 2a 61 |argc;.X.|char **a|
|00001650| 72 67 76 3b 0a 58 7b 0a | 58 09 75 6e 73 69 67 6e |rgv;.X{.|X.unsign|
|00001660| 65 64 20 6e 75 6d 3b 0a | 58 2e 73 70 2e 35 0a 58 |ed num;.|X.sp.5.X|
|00001670| 09 69 66 20 28 61 72 67 | 63 20 3c 20 32 29 20 7b |.if (arg|c < 2) {|
|00001680| 0a 58 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |.X..fpri|ntf(stde|
|00001690| 72 72 2c 20 22 75 73 61 | 67 65 3a 20 72 6e 75 73 |rr, "usa|ge: rnus|
|000016a0| 65 72 73 20 68 6f 73 74 | 6e 61 6d 65 5c 65 6e 22 |ers host|name\en"|
|000016b0| 29 3b 0a 58 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |);.X..ex|it(1);.X|
|000016c0| 09 7d 0a 58 09 69 66 20 | 28 28 6e 75 6d 20 3d 20 |.}.X.if |((num = |
|000016d0| 72 6e 75 73 65 72 73 28 | 61 72 67 76 5b 31 5d 29 |rnusers(|argv[1])|
|000016e0| 29 20 3c 20 30 29 20 7b | 0a 58 09 09 66 70 72 69 |) < 0) {|.X..fpri|
|000016f0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 65 72 72 |ntf(stde|rr, "err|
|00001700| 6f 72 3a 20 72 6e 75 73 | 65 72 73 5c 65 6e 22 29 |or: rnus|ers\en")|
|00001710| 3b 0a 58 09 09 65 78 69 | 74 28 2d 31 29 3b 0a 58 |;.X..exi|t(-1);.X|
|00001720| 09 7d 0a 58 09 70 72 69 | 6e 74 66 28 22 25 64 20 |.}.X.pri|ntf("%d |
|00001730| 75 73 65 72 73 20 6f 6e | 20 25 73 5c 65 6e 22 2c |users on| %s\en",|
|00001740| 20 6e 75 6d 2c 20 61 72 | 67 76 5b 31 5d 29 3b 0a | num, ar|gv[1]);.|
|00001750| 58 09 65 78 69 74 28 30 | 29 3b 0a 58 7d 0a 58 2e |X.exit(0|);.X}.X.|
|00001760| 4c 66 0a 58 2e 42 45 0a | 58 52 50 43 20 6c 69 62 |Lf.X.BE.|XRPC lib|
|00001770| 72 61 72 79 20 72 6f 75 | 74 69 6e 65 73 20 73 75 |rary rou|tines su|
|00001780| 63 68 20 61 73 0a 58 2e | 4c 57 20 72 6e 75 73 65 |ch as.X.|LW rnuse|
|00001790| 72 73 28 29 0a 58 61 72 | 65 20 69 6e 20 74 68 65 |rs().Xar|e in the|
|000017a0| 20 52 50 43 20 73 65 72 | 76 69 63 65 73 20 6c 69 | RPC ser|vices li|
|000017b0| 62 72 61 72 79 0a 58 2e | 4c 57 20 6c 69 62 72 70 |brary.X.|LW librp|
|000017c0| 63 73 76 63 2e 61 20 2e | 0a 58 54 68 75 73 2c 20 |csvc.a .|.XThus, |
|000017d0| 74 68 65 20 70 72 6f 67 | 72 61 6d 20 61 62 6f 76 |the prog|ram abov|
|000017e0| 65 20 73 68 6f 75 6c 64 | 20 62 65 20 63 6f 6d 70 |e should| be comp|
|000017f0| 69 6c 65 64 20 77 69 74 | 68 0a 58 2e 42 53 0a 58 |iled wit|h.X.BS.X|
|00001800| 2e 4c 53 0a 58 25 20 63 | 63 20 5c 66 49 70 72 6f |.LS.X% c|c \fIpro|
|00001810| 67 72 61 6d 5c 66 50 2e | 63 20 2d 6c 72 70 63 73 |gram\fP.|c -lrpcs|
|00001820| 76 63 0a 58 2e 4c 66 0a | 58 2e 42 45 0a 58 54 68 |vc.X.Lf.|X.BE.XTh|
|00001830| 69 73 20 72 6f 75 74 69 | 6e 65 2c 20 61 6e 64 20 |is routi|ne, and |
|00001840| 6f 74 68 65 72 20 52 50 | 43 20 6c 69 62 72 61 72 |other RP|C librar|
|00001850| 79 20 72 6f 75 74 69 6e | 65 73 2c 0a 58 61 72 65 |y routin|es,.Xare|
|00001860| 20 64 6f 63 75 6d 65 6e | 74 65 64 20 69 6e 20 73 | documen|ted in s|
|00001870| 65 63 74 69 6f 6e 20 33 | 52 20 6f 66 20 74 68 65 |ection 3|R of the|
|00001880| 0a 58 2e 49 20 22 53 79 | 73 74 65 6d 20 49 6e 74 |.X.I "Sy|stem Int|
|00001890| 65 72 66 61 63 65 20 4d | 61 6e 75 61 6c 20 66 6f |erface M|anual fo|
|000018a0| 72 20 74 68 65 20 53 75 | 6e 20 57 6f 72 6b 73 74 |r the Su|n Workst|
|000018b0| 61 74 69 6f 6e 22 20 2e | 0a 58 48 65 72 65 20 69 |ation" .|.XHere i|
|000018c0| 73 20 61 20 74 61 62 6c | 65 20 6f 66 20 52 50 43 |s a tabl|e of RPC|
|000018d0| 20 73 65 72 76 69 63 65 | 20 6c 69 62 72 61 72 79 | service| library|
|000018e0| 20 72 6f 75 74 69 6e 65 | 73 0a 58 61 76 61 69 6c | routine|s.Xavail|
|000018f0| 61 62 6c 65 20 74 6f 20 | 74 68 65 20 43 20 70 72 |able to |the C pr|
|00001900| 6f 67 72 61 6d 6d 65 72 | 3a 0a 58 2e 54 4e 20 22 |ogrammer|:.X.TN "|
|00001910| 52 50 43 20 53 65 72 76 | 69 63 65 20 4c 69 62 72 |RPC Serv|ice Libr|
|00001920| 61 72 79 20 52 6f 75 74 | 69 6e 65 73 22 0a 58 2e |ary Rout|ines".X.|
|00001930| 54 53 0a 58 62 6f 78 3b | 0a 58 63 66 42 49 20 73 |TS.Xbox;|.XcfBI s|
|00001940| 0a 58 63 20 63 0a 58 6c | 66 4c 20 6c 2e 0a 58 2e |.Xc c.Xl|fL l..X.|
|00001950| 73 70 2e 35 0a 58 5c 73 | 2b 32 52 50 43 20 53 65 |sp.5.X\s|+2RPC Se|
|00001960| 72 76 69 63 65 20 4c 69 | 62 72 61 72 79 20 52 6f |rvice Li|brary Ro|
|00001970| 75 74 69 6e 65 73 5c 73 | 2d 32 0a 58 2e 73 70 2e |utines\s|-2.X.sp.|
|00001980| 35 0a 58 5f 0a 58 5c 66 | 49 72 6f 75 74 69 6e 65 |5.X_.X\f|Iroutine|
|00001990| 09 64 65 73 63 72 69 70 | 74 69 6f 6e 5c 66 50 0a |.descrip|tion\fP.|
|000019a0| 58 5f 0a 58 72 6e 75 73 | 65 72 73 28 29 09 72 65 |X_.Xrnus|ers().re|
|000019b0| 74 75 72 6e 20 6e 75 6d | 62 65 72 20 6f 66 20 75 |turn num|ber of u|
|000019c0| 73 65 72 73 20 6f 6e 20 | 72 65 6d 6f 74 65 20 6d |sers on |remote m|
|000019d0| 61 63 68 69 6e 65 0a 58 | 72 75 73 65 72 73 28 29 |achine.X|rusers()|
|000019e0| 09 72 65 74 75 72 6e 20 | 69 6e 66 6f 72 6d 61 74 |.return |informat|
|000019f0| 69 6f 6e 20 61 62 6f 75 | 74 20 75 73 65 72 73 20 |ion abou|t users |
|00001a00| 6f 6e 20 72 65 6d 6f 74 | 65 20 6d 61 63 68 69 6e |on remot|e machin|
|00001a10| 65 0a 58 68 61 76 65 64 | 69 73 6b 28 29 09 64 65 |e.Xhaved|isk().de|
|00001a20| 74 65 72 6d 69 6e 65 20 | 69 66 20 72 65 6d 6f 74 |termine |if remot|
|00001a30| 65 20 6d 61 63 68 69 6e | 65 20 68 61 73 20 64 69 |e machin|e has di|
|00001a40| 73 6b 0a 58 72 73 74 61 | 74 28 29 20 09 67 65 74 |sk.Xrsta|t() .get|
|00001a50| 20 70 65 72 66 6f 72 6d | 61 6e 63 65 20 64 61 74 | perform|ance dat|
|00001a60| 61 20 66 72 6f 6d 20 72 | 65 6d 6f 74 65 20 6b 65 |a from r|emote ke|
|00001a70| 72 6e 65 6c 0a 58 72 77 | 61 6c 6c 28 29 20 09 77 |rnel.Xrw|all() .w|
|00001a80| 72 69 74 65 20 74 6f 20 | 73 70 65 63 69 66 69 65 |rite to |specifie|
|00001a90| 64 20 72 65 6d 6f 74 65 | 20 6d 61 63 68 69 6e 65 |d remote| machine|
|00001aa0| 73 0a 58 67 65 74 6d 61 | 73 74 65 72 28 29 09 67 |s.Xgetma|ster().g|
|00001ab0| 65 74 20 6e 61 6d 65 20 | 6f 66 20 59 50 20 6d 61 |et name |of YP ma|
|00001ac0| 73 74 65 72 0a 58 67 65 | 74 72 70 63 70 6f 72 74 |ster.Xge|trpcport|
|00001ad0| 28 29 09 67 65 74 20 52 | 50 43 20 70 6f 72 74 20 |().get R|PC port |
|00001ae0| 6e 75 6d 62 65 72 0a 58 | 79 70 70 61 73 73 77 64 |number.X|yppasswd|
|00001af0| 28 29 09 75 70 64 61 74 | 65 20 75 73 65 72 20 70 |().updat|e user p|
|00001b00| 61 73 73 77 6f 72 64 20 | 69 6e 20 79 65 6c 6c 6f |assword |in yello|
|00001b10| 77 20 70 61 67 65 73 0a | 58 2e 54 45 0a 58 2e 4c |w pages.|X.TE.X.L|
|00001b20| 50 0a 58 54 68 65 20 6f | 74 68 65 72 20 52 50 43 |P.XThe o|ther RPC|
|00001b30| 20 73 65 72 76 69 63 65 | 73 20 5c 28 65 6d 0a 58 | service|s \(em.X|
|00001b40| 2e 4c 57 20 65 74 68 65 | 72 20 2c 0a 58 2e 4c 57 |.LW ethe|r ,.X.LW|
|00001b50| 20 6d 6f 75 6e 74 20 2c | 0a 58 2e 4c 57 20 72 71 | mount ,|.X.LW rq|
|00001b60| 75 6f 74 61 20 2c 0a 58 | 61 6e 64 0a 58 2e 4c 57 |uota ,.X|and.X.LW|
|00001b70| 20 73 70 72 61 79 0a 58 | 5c 28 65 6d 20 61 72 65 | spray.X|\(em are|
|00001b80| 20 6e 6f 74 20 61 76 61 | 69 6c 61 62 6c 65 20 74 | not ava|ilable t|
|00001b90| 6f 20 74 68 65 20 43 20 | 70 72 6f 67 72 61 6d 6d |o the C |programm|
|00001ba0| 65 72 20 61 73 20 6c 69 | 62 72 61 72 79 20 72 6f |er as li|brary ro|
|00001bb0| 75 74 69 6e 65 73 2e 0a | 58 54 68 65 79 20 64 6f |utines..|XThey do|
|00001bc0| 2c 20 68 6f 77 65 76 65 | 72 2c 0a 58 68 61 76 65 |, howeve|r,.Xhave|
|00001bd0| 20 52 50 43 20 70 72 6f | 67 72 61 6d 20 6e 75 6d | RPC pro|gram num|
|00001be0| 62 65 72 73 20 73 6f 20 | 74 68 65 79 20 63 61 6e |bers so |they can|
|00001bf0| 20 62 65 20 69 6e 76 6f | 6b 65 64 20 77 69 74 68 | be invo|ked with|
|00001c00| 0a 58 2e 4c 57 20 63 61 | 6c 6c 72 70 63 28 29 20 |.X.LW ca|llrpc() |
|00001c10| 2c 0a 58 77 68 69 63 68 | 20 77 69 6c 6c 20 62 65 |,.Xwhich| will be|
|00001c20| 20 64 69 73 63 75 73 73 | 65 64 20 69 6e 20 74 68 | discuss|ed in th|
|00001c30| 65 20 6e 65 78 74 20 73 | 65 63 74 69 6f 6e 2e 0a |e next s|ection..|
|00001c40| 58 2e 62 70 0a 58 2e 4e | 48 20 32 0a 58 49 6e 74 |X.bp.X.N|H 2.XInt|
|00001c50| 65 72 6d 65 64 69 61 74 | 65 20 4c 61 79 65 72 0a |ermediat|e Layer.|
|00001c60| 58 2e 4c 50 0a 58 54 68 | 65 20 73 69 6d 70 6c 65 |X.LP.XTh|e simple|
|00001c70| 73 74 20 69 6e 74 65 72 | 66 61 63 65 2c 20 77 68 |st inter|face, wh|
|00001c80| 69 63 68 20 65 78 70 6c | 69 63 69 74 6c 79 20 6d |ich expl|icitly m|
|00001c90| 61 6b 65 73 20 52 50 43 | 0a 58 63 61 6c 6c 73 2c |akes RPC|.Xcalls,|
|00001ca0| 20 75 73 65 73 20 74 68 | 65 20 66 75 6e 63 74 69 | uses th|e functi|
|00001cb0| 6f 6e 73 0a 58 2e 4c 57 | 20 63 61 6c 6c 72 70 63 |ons.X.LW| callrpc|
|00001cc0| 28 29 0a 58 61 6e 64 0a | 58 2e 4c 57 20 72 65 67 |().Xand.|X.LW reg|
|00001cd0| 69 73 74 65 72 72 70 63 | 28 29 20 2e 0a 58 55 73 |isterrpc|() ..XUs|
|00001ce0| 69 6e 67 20 74 68 69 73 | 20 6d 65 74 68 6f 64 2c |ing this| method,|
|00001cf0| 20 61 6e 6f 74 68 65 72 | 20 77 61 79 20 74 6f 20 | another| way to |
|00001d00| 67 65 74 20 74 68 65 20 | 6e 75 6d 62 65 72 20 6f |get the |number o|
|00001d10| 66 20 72 65 6d 6f 74 65 | 20 75 73 65 72 73 20 69 |f remote| users i|
|00001d20| 73 3a 0a 58 2e 42 53 0a | 58 2e 4c 53 0a 58 23 69 |s:.X.BS.|X.LS.X#i|
|00001d30| 6e 63 6c 75 64 65 20 3c | 73 74 64 69 6f 2e 68 3e |nclude <|stdio.h>|
|00001d40| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 72 70 63 73 |.X#inclu|de <rpcs|
|00001d50| 76 63 2f 72 75 73 65 72 | 73 2e 68 3e 0a 58 2e 73 |vc/ruser|s.h>.X.s|
|00001d60| 70 2e 35 0a 58 6d 61 69 | 6e 28 61 72 67 63 2c 20 |p.5.Xmai|n(argc, |
|00001d70| 61 72 67 76 29 0a 58 09 | 69 6e 74 20 61 72 67 63 |argv).X.|int argc|
|00001d80| 3b 0a 58 09 63 68 61 72 | 20 2a 2a 61 72 67 76 3b |;.X.char| **argv;|
|00001d90| 0a 58 7b 0a 58 09 75 6e | 73 69 67 6e 65 64 20 6c |.X{.X.un|signed l|
|00001da0| 6f 6e 67 20 6e 75 73 65 | 72 73 3b 0a 58 2e 73 70 |ong nuse|rs;.X.sp|
|00001db0| 2e 35 0a 58 09 69 66 20 | 28 61 72 67 63 20 3c 20 |.5.X.if |(argc < |
|00001dc0| 32 29 20 7b 0a 58 09 09 | 66 70 72 69 6e 74 66 28 |2) {.X..|fprintf(|
|00001dd0| 73 74 64 65 72 72 2c 20 | 22 75 73 61 67 65 3a 20 |stderr, |"usage: |
|00001de0| 6e 75 73 65 72 73 20 68 | 6f 73 74 6e 61 6d 65 5c |nusers h|ostname\|
|00001df0| 65 6e 22 29 3b 0a 58 09 | 09 65 78 69 74 28 2d 31 |en");.X.|.exit(-1|
|00001e00| 29 3b 0a 58 09 7d 0a 58 | 09 69 66 20 28 63 61 6c |);.X.}.X|.if (cal|
|00001e10| 6c 72 70 63 28 61 72 67 | 76 5b 31 5d 2c 0a 58 09 |lrpc(arg|v[1],.X.|
|00001e20| 20 20 52 55 53 45 52 53 | 50 52 4f 47 2c 20 52 55 | RUSERS|PROG, RU|
|00001e30| 53 45 52 53 56 45 52 53 | 2c 20 52 55 53 45 52 53 |SERSVERS|, RUSERS|
|00001e40| 50 52 4f 43 5f 4e 55 4d | 2c 0a 58 09 20 20 78 64 |PROC_NUM|,.X. xd|
|00001e50| 72 5f 76 6f 69 64 2c 20 | 30 2c 20 78 64 72 5f 75 |r_void, |0, xdr_u|
|00001e60| 5f 6c 6f 6e 67 2c 20 26 | 6e 75 73 65 72 73 29 20 |_long, &|nusers) |
|00001e70| 21 3d 20 30 29 20 7b 0a | 58 09 09 66 70 72 69 6e |!= 0) {.|X..fprin|
|00001e80| 74 66 28 73 74 64 65 72 | 72 2c 20 22 65 72 72 6f |tf(stder|r, "erro|
|00001e90| 72 3a 20 63 61 6c 6c 72 | 70 63 5c 65 6e 22 29 3b |r: callr|pc\en");|
|00001ea0| 0a 58 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 7d |.X..exit|(1);.X.}|
|00001eb0| 0a 58 09 70 72 69 6e 74 | 66 28 22 25 64 20 75 73 |.X.print|f("%d us|
|00001ec0| 65 72 73 20 6f 6e 20 25 | 73 5c 65 6e 22 2c 20 6e |ers on %|s\en", n|
|00001ed0| 75 73 65 72 73 2c 20 61 | 72 67 76 5b 31 5d 29 3b |users, a|rgv[1]);|
|00001ee0| 0a 58 09 65 78 69 74 28 | 30 29 3b 0a 58 7d 0a 58 |.X.exit(|0);.X}.X|
|00001ef0| 2e 4c 66 0a 58 2e 42 45 | 0a 58 41 20 70 72 6f 67 |.Lf.X.BE|.XA prog|
|00001f00| 72 61 6d 20 6e 75 6d 62 | 65 72 2c 20 76 65 72 73 |ram numb|er, vers|
|00001f10| 69 6f 6e 20 6e 75 6d 62 | 65 72 2c 20 61 6e 64 20 |ion numb|er, and |
|00001f20| 70 72 6f 63 65 64 75 72 | 65 20 6e 75 6d 62 65 72 |procedur|e number|
|00001f30| 0a 58 64 65 66 69 6e 65 | 73 20 65 61 63 68 20 52 |.Xdefine|s each R|
|00001f40| 50 43 20 70 72 6f 63 65 | 64 75 72 65 2e 0a 58 54 |PC proce|dure..XT|
|00001f50| 68 65 20 70 72 6f 67 72 | 61 6d 20 6e 75 6d 62 65 |he progr|am numbe|
|00001f60| 72 20 64 65 66 69 6e 65 | 73 20 61 20 67 72 6f 75 |r define|s a grou|
|00001f70| 70 0a 58 6f 66 20 72 65 | 6c 61 74 65 64 20 72 65 |p.Xof re|lated re|
|00001f80| 6d 6f 74 65 20 70 72 6f | 63 65 64 75 72 65 73 2c |mote pro|cedures,|
|00001f90| 20 65 61 63 68 20 6f 66 | 20 77 68 69 63 68 20 68 | each of| which h|
|00001fa0| 61 73 20 61 20 64 69 66 | 66 65 72 65 6e 74 0a 58 |as a dif|ferent.X|
|00001fb0| 70 72 6f 63 65 64 75 72 | 65 20 6e 75 6d 62 65 72 |procedur|e number|
|00001fc0| 2e 0a 58 45 61 63 68 20 | 70 72 6f 67 72 61 6d 20 |..XEach |program |
|00001fd0| 61 6c 73 6f 20 68 61 73 | 20 61 20 76 65 72 73 69 |also has| a versi|
|00001fe0| 6f 6e 20 6e 75 6d 62 65 | 72 2c 0a 58 73 6f 20 77 |on numbe|r,.Xso w|
|00001ff0| 68 65 6e 20 61 20 6d 69 | 6e 6f 72 20 63 68 61 6e |hen a mi|nor chan|
|00002000| 67 65 20 69 73 20 6d 61 | 64 65 20 74 6f 20 61 20 |ge is ma|de to a |
|00002010| 72 65 6d 6f 74 65 20 73 | 65 72 76 69 63 65 0a 58 |remote s|ervice.X|
|00002020| 28 61 64 64 69 6e 67 20 | 61 20 6e 65 77 20 70 72 |(adding |a new pr|
|00002030| 6f 63 65 64 75 72 65 2c | 20 66 6f 72 20 65 78 61 |ocedure,| for exa|
|00002040| 6d 70 6c 65 29 2c 0a 58 | 61 20 6e 65 77 20 70 72 |mple),.X|a new pr|
|00002050| 6f 67 72 61 6d 20 6e 75 | 6d 62 65 72 20 64 6f 65 |ogram nu|mber doe|
|00002060| 73 6e 27 74 20 68 61 76 | 65 20 74 6f 20 62 65 20 |sn't hav|e to be |
|00002070| 61 73 73 69 67 6e 65 64 | 2e 0a 58 57 68 65 6e 20 |assigned|..XWhen |
|00002080| 79 6f 75 20 77 61 6e 74 | 20 74 6f 20 63 61 6c 6c |you want| to call|
|00002090| 20 61 20 70 72 6f 63 65 | 64 75 72 65 20 74 6f 0a | a proce|dure to.|
|000020a0| 58 66 69 6e 64 20 74 68 | 65 20 6e 75 6d 62 65 72 |Xfind th|e number|
|000020b0| 20 6f 66 20 72 65 6d 6f | 74 65 20 75 73 65 72 73 | of remo|te users|
|000020c0| 2c 20 79 6f 75 20 6c 6f | 6f 6b 20 75 70 20 74 68 |, you lo|ok up th|
|000020d0| 65 20 61 70 70 72 6f 70 | 72 69 61 74 65 0a 58 70 |e approp|riate.Xp|
|000020e0| 72 6f 67 72 61 6d 2c 20 | 76 65 72 73 69 6f 6e 20 |rogram, |version |
|000020f0| 61 6e 64 20 70 72 6f 63 | 65 64 75 72 65 20 6e 75 |and proc|edure nu|
|00002100| 6d 62 65 72 73 0a 58 69 | 6e 20 61 20 6d 61 6e 75 |mbers.Xi|n a manu|
|00002110| 61 6c 2c 20 73 69 6d 69 | 6c 61 72 20 74 6f 20 77 |al, simi|lar to w|
|00002120| 68 65 6e 20 79 6f 75 20 | 6c 6f 6f 6b 20 75 70 20 |hen you |look up |
|00002130| 74 68 65 20 6e 61 6d 65 | 20 6f 66 20 6d 65 6d 6f |the name| of memo|
|00002140| 72 79 0a 58 61 6c 6c 6f | 63 61 74 6f 72 20 77 68 |ry.Xallo|cator wh|
|00002150| 65 6e 20 79 6f 75 20 77 | 61 6e 74 20 74 6f 20 61 |en you w|ant to a|
|00002160| 6c 6c 6f 63 61 74 65 20 | 6d 65 6d 6f 72 79 2e 0a |llocate |memory..|
|00002170| 58 2e 4c 50 0a 58 54 68 | 65 20 73 69 6d 70 6c 65 |X.LP.XTh|e simple|
|00002180| 73 74 20 72 6f 75 74 69 | 6e 65 20 69 6e 20 74 68 |st routi|ne in th|
|00002190| 65 20 52 50 43 20 6c 69 | 62 72 61 72 79 0a 58 75 |e RPC li|brary.Xu|
|000021a0| 73 65 64 20 74 6f 20 6d | 61 6b 65 20 72 65 6d 6f |sed to m|ake remo|
|000021b0| 74 65 20 70 72 6f 63 65 | 64 75 72 65 20 63 61 6c |te proce|dure cal|
|000021c0| 6c 73 20 69 73 0a 58 2e | 4c 57 20 63 61 6c 6c 72 |ls is.X.|LW callr|
|000021d0| 70 63 28 29 20 2e 0a 58 | 49 74 20 68 61 73 20 65 |pc() ..X|It has e|
|000021e0| 69 67 68 74 20 70 61 72 | 61 6d 65 74 65 72 73 2e |ight par|ameters.|
|000021f0| 0a 58 54 68 65 20 66 69 | 72 73 74 20 69 73 20 74 |.XThe fi|rst is t|
|00002200| 68 65 20 6e 61 6d 65 20 | 6f 66 20 74 68 65 20 72 |he name |of the r|
|00002210| 65 6d 6f 74 65 20 6d 61 | 63 68 69 6e 65 2e 0a 58 |emote ma|chine..X|
|00002220| 54 68 65 20 6e 65 78 74 | 20 74 68 72 65 65 20 70 |The next| three p|
|00002230| 61 72 61 6d 65 74 65 72 | 73 0a 58 61 72 65 20 74 |arameter|s.Xare t|
|00002240| 68 65 20 70 72 6f 67 72 | 61 6d 2c 20 76 65 72 73 |he progr|am, vers|
|00002250| 69 6f 6e 2c 20 61 6e 64 | 20 70 72 6f 63 65 64 75 |ion, and| procedu|
|00002260| 72 65 20 6e 75 6d 62 65 | 72 73 2e 0a 58 54 68 65 |re numbe|rs..XThe|
|00002270| 20 66 6f 6c 6c 6f 77 69 | 6e 67 20 74 77 6f 20 70 | followi|ng two p|
|00002280| 61 72 61 6d 65 74 65 72 | 73 0a 58 64 65 66 69 6e |arameter|s.Xdefin|
|00002290| 65 20 74 68 65 20 61 72 | 67 75 6d 65 6e 74 20 6f |e the ar|gument o|
|000022a0| 66 20 74 68 65 20 52 50 | 43 20 63 61 6c 6c 2c 20 |f the RP|C call, |
|000022b0| 61 6e 64 20 74 68 65 20 | 66 69 6e 61 6c 20 74 77 |and the |final tw|
|000022c0| 6f 20 70 61 72 61 6d 65 | 74 65 72 73 0a 58 61 72 |o parame|ters.Xar|
|000022d0| 65 20 66 6f 72 20 74 68 | 65 20 72 65 74 75 72 6e |e for th|e return|
|000022e0| 20 76 61 6c 75 65 20 6f | 66 20 74 68 65 20 63 61 | value o|f the ca|
|000022f0| 6c 6c 2e 0a 58 49 66 20 | 69 74 20 63 6f 6d 70 6c |ll..XIf |it compl|
|00002300| 65 74 65 73 20 73 75 63 | 63 65 73 73 66 75 6c 6c |etes suc|cessfull|
|00002310| 79 2c 0a 58 2e 4c 57 20 | 63 61 6c 6c 72 70 63 28 |y,.X.LW |callrpc(|
|00002320| 29 0a 58 72 65 74 75 72 | 6e 73 20 7a 65 72 6f 2c |).Xretur|ns zero,|
|00002330| 20 62 75 74 20 6e 6f 6e | 7a 65 72 6f 20 6f 74 68 | but non|zero oth|
|00002340| 65 72 77 69 73 65 2e 0a | 58 54 68 65 20 65 78 61 |erwise..|XThe exa|
|00002350| 63 74 20 6d 65 61 6e 69 | 6e 67 20 6f 66 20 74 68 |ct meani|ng of th|
|00002360| 65 20 72 65 74 75 72 6e | 20 63 6f 64 65 73 20 69 |e return| codes i|
|00002370| 73 20 66 6f 75 6e 64 20 | 69 6e 0a 58 2e 4c 57 20 |s found |in.X.LW |
|00002380| 3c 72 70 63 2f 63 6c 6e | 74 2e 68 3e 20 2c 0a 58 |<rpc/cln|t.h> ,.X|
|00002390| 61 6e 64 20 69 73 20 69 | 6e 20 66 61 63 74 20 61 |and is i|n fact a|
|000023a0| 6e 0a 58 2e 4c 57 20 22 | 65 6e 75 6d 20 63 6c 6e |n.X.LW "|enum cln|
|000023b0| 74 5f 73 74 61 74 22 0a | 58 63 61 73 74 20 69 6e |t_stat".|Xcast in|
|000023c0| 74 6f 20 61 6e 20 69 6e | 74 65 67 65 72 2e 0a 58 |to an in|teger..X|
|000023d0| 2e 4c 50 0a 58 53 69 6e | 63 65 20 64 61 74 61 20 |.LP.XSin|ce data |
|000023e0| 74 79 70 65 73 20 6d 61 | 79 20 62 65 20 72 65 70 |types ma|y be rep|
|000023f0| 72 65 73 65 6e 74 65 64 | 20 64 69 66 66 65 72 65 |resented| differe|
|00002400| 6e 74 6c 79 20 6f 6e 20 | 64 69 66 66 65 72 65 6e |ntly on |differen|
|00002410| 74 20 6d 61 63 68 69 6e | 65 73 2c 0a 58 2e 4c 57 |t machin|es,.X.LW|
|00002420| 20 63 61 6c 6c 72 70 63 | 28 29 0a 58 6e 65 65 64 | callrpc|().Xneed|
|00002430| 73 20 62 6f 74 68 20 74 | 68 65 20 74 79 70 65 20 |s both t|he type |
|00002440| 6f 66 20 74 68 65 20 52 | 50 43 20 61 72 67 75 6d |of the R|PC argum|
|00002450| 65 6e 74 2c 20 61 73 20 | 77 65 6c 6c 20 61 73 0a |ent, as |well as.|
|00002460| 58 61 20 70 6f 69 6e 74 | 65 72 20 74 6f 20 74 68 |Xa point|er to th|
|00002470| 65 20 61 72 67 75 6d 65 | 6e 74 20 69 74 73 65 6c |e argume|nt itsel|
|00002480| 66 20 28 61 6e 64 20 73 | 69 6d 69 6c 61 72 6c 79 |f (and s|imilarly|
|00002490| 20 66 6f 72 20 74 68 65 | 20 72 65 73 75 6c 74 29 | for the| result)|
|000024a0| 2e 20 20 46 6f 72 0a 58 | 2e 4c 57 20 52 55 53 45 |. For.X|.LW RUSE|
|000024b0| 52 53 50 52 4f 43 5f 4e | 55 4d 20 2c 0a 58 74 68 |RSPROC_N|UM ,.Xth|
|000024c0| 65 20 72 65 74 75 72 6e | 20 76 61 6c 75 65 20 69 |e return| value i|
|000024d0| 73 20 61 6e 0a 58 2e 4c | 57 20 22 75 6e 73 69 67 |s an.X.L|W "unsig|
|000024e0| 6e 65 64 20 6c 6f 6e 67 | 22 20 2c 0a 58 73 6f 0a |ned long|" ,.Xso.|
|000024f0| 58 2e 4c 57 20 63 61 6c | 6c 72 70 63 28 29 0a 58 |X.LW cal|lrpc().X|
|00002500| 68 61 73 0a 58 2e 4c 57 | 20 78 64 72 5f 75 5f 6c |has.X.LW| xdr_u_l|
|00002510| 6f 6e 67 0a 58 61 73 20 | 69 74 73 20 66 69 72 73 |ong.Xas |its firs|
|00002520| 74 20 72 65 74 75 72 6e | 20 70 61 72 61 6d 65 74 |t return| paramet|
|00002530| 65 72 2c 20 77 68 69 63 | 68 20 73 61 79 73 0a 58 |er, whic|h says.X|
|00002540| 74 68 61 74 20 74 68 65 | 20 72 65 73 75 6c 74 20 |that the| result |
|00002550| 69 73 20 6f 66 20 74 79 | 70 65 0a 58 2e 4c 57 20 |is of ty|pe.X.LW |
|00002560| 22 75 6e 73 69 67 6e 65 | 64 20 6c 6f 6e 67 22 20 |"unsigne|d long" |
|00002570| 2c 0a 58 61 6e 64 0a 58 | 2e 4c 57 20 26 6e 75 73 |,.Xand.X|.LW &nus|
|00002580| 65 72 73 0a 58 61 73 20 | 69 74 73 20 73 65 63 6f |ers.Xas |its seco|
|00002590| 6e 64 20 72 65 74 75 72 | 6e 20 70 61 72 61 6d 65 |nd retur|n parame|
|000025a0| 74 65 72 2c 0a 58 77 68 | 69 63 68 20 69 73 20 61 |ter,.Xwh|ich is a|
|000025b0| 20 70 6f 69 6e 74 65 72 | 20 74 6f 20 77 68 65 72 | pointer| to wher|
|000025c0| 65 20 74 68 65 20 6c 6f | 6e 67 20 72 65 73 75 6c |e the lo|ng resul|
|000025d0| 74 20 77 69 6c 6c 20 62 | 65 20 70 6c 61 63 65 64 |t will b|e placed|
|000025e0| 2e 20 20 53 69 6e 63 65 | 0a 58 2e 4c 57 20 52 55 |. Since|.X.LW RU|
|000025f0| 53 45 52 53 50 52 4f 43 | 5f 4e 55 4d 0a 58 74 61 |SERSPROC|_NUM.Xta|
|00002600| 6b 65 73 20 6e 6f 20 61 | 72 67 75 6d 65 6e 74 2c |kes no a|rgument,|
|00002610| 20 74 68 65 20 61 72 67 | 75 6d 65 6e 74 20 70 61 | the arg|ument pa|
|00002620| 72 61 6d 65 74 65 72 20 | 6f 66 0a 58 2e 4c 57 20 |rameter |of.X.LW |
|00002630| 63 61 6c 6c 72 70 63 28 | 29 0a 58 69 73 0a 58 2e |callrpc(|).Xis.X.|
|00002640| 4c 57 20 78 64 72 5f 76 | 6f 69 64 20 2e 0a 58 2e |LW xdr_v|oid ..X.|
|00002650| 4c 50 0a 58 41 66 74 65 | 72 20 74 72 79 69 6e 67 |LP.XAfte|r trying|
|00002660| 20 73 65 76 65 72 61 6c | 20 74 69 6d 65 73 20 74 | several| times t|
|00002670| 6f 20 64 65 6c 69 76 65 | 72 20 61 20 6d 65 73 73 |o delive|r a mess|
|00002680| 61 67 65 2c 20 69 66 0a | 58 2e 4c 57 20 63 61 6c |age, if.|X.LW cal|
|00002690| 6c 72 70 63 28 29 0a 58 | 67 65 74 73 20 6e 6f 20 |lrpc().X|gets no |
|000026a0| 61 6e 73 77 65 72 2c 20 | 69 74 20 72 65 74 75 72 |answer, |it retur|
|000026b0| 6e 73 20 77 69 74 68 20 | 61 6e 20 65 72 72 6f 72 |ns with |an error|
|000026c0| 20 63 6f 64 65 2e 0a 58 | 54 68 65 20 64 65 6c 69 | code..X|The deli|
|000026d0| 76 65 72 79 20 6d 65 63 | 68 61 6e 69 73 6d 20 69 |very mec|hanism i|
|000026e0| 73 20 55 44 50 2c 0a 58 | 77 68 69 63 68 20 73 74 |s UDP,.X|which st|
|000026f0| 61 6e 64 73 20 66 6f 72 | 20 55 73 65 72 20 44 61 |ands for| User Da|
|00002700| 74 61 67 72 61 6d 20 50 | 72 6f 74 6f 63 6f 6c 2e |tagram P|rotocol.|
|00002710| 0a 58 4d 65 74 68 6f 64 | 73 20 66 6f 72 20 61 64 |.XMethod|s for ad|
|00002720| 6a 75 73 74 69 6e 67 20 | 74 68 65 20 6e 75 6d 62 |justing |the numb|
|00002730| 65 72 20 6f 66 20 72 65 | 74 72 69 65 73 0a 58 6f |er of re|tries.Xo|
|00002740| 72 20 66 6f 72 20 75 73 | 69 6e 67 20 61 20 64 69 |r for us|ing a di|
|00002750| 66 66 65 72 65 6e 74 20 | 70 72 6f 74 6f 63 6f 6c |fferent |protocol|
|00002760| 20 72 65 71 75 69 72 65 | 20 79 6f 75 20 74 6f 20 | require| you to |
|00002770| 75 73 65 20 74 68 65 20 | 6c 6f 77 65 72 0a 58 6c |use the |lower.Xl|
|00002780| 61 79 65 72 20 6f 66 20 | 74 68 65 20 52 50 43 20 |ayer of |the RPC |
|00002790| 6c 69 62 72 61 72 79 2c | 20 64 69 73 63 75 73 73 |library,| discuss|
|000027a0| 65 64 20 6c 61 74 65 72 | 20 69 6e 20 74 68 69 73 |ed later| in this|
|000027b0| 20 64 6f 63 75 6d 65 6e | 74 2e 0a 58 54 68 65 20 | documen|t..XThe |
|000027c0| 72 65 6d 6f 74 65 20 73 | 65 72 76 65 72 20 70 72 |remote s|erver pr|
|000027d0| 6f 63 65 64 75 72 65 0a | 58 63 6f 72 72 65 73 70 |ocedure.|Xcorresp|
|000027e0| 6f 6e 64 69 6e 67 20 74 | 6f 20 74 68 65 20 61 62 |onding t|o the ab|
|000027f0| 6f 76 65 20 6d 69 67 68 | 74 20 6c 6f 6f 6b 20 6c |ove migh|t look l|
|00002800| 69 6b 65 20 74 68 69 73 | 3a 0a 58 2e 42 53 0a 58 |ike this|:.X.BS.X|
|00002810| 2e 4c 53 0a 58 63 68 61 | 72 20 2a 0a 58 6e 75 73 |.LS.Xcha|r *.Xnus|
|00002820| 65 72 28 69 6e 64 61 74 | 61 29 0a 58 09 63 68 61 |er(indat|a).X.cha|
|00002830| 72 20 2a 69 6e 64 61 74 | 61 3b 0a 58 7b 0a 58 09 |r *indat|a;.X{.X.|
|00002840| 73 74 61 74 69 63 20 69 | 6e 74 20 6e 75 73 65 72 |static i|nt nuser|
|00002850| 73 3b 0a 58 2e 73 70 2e | 35 0a 58 09 2f 2a 0a 58 |s;.X.sp.|5.X./*.X|
|00002860| 09 20 2a 20 63 6f 64 65 | 20 68 65 72 65 20 74 6f |. * code| here to|
|00002870| 20 63 6f 6d 70 75 74 65 | 20 74 68 65 20 6e 75 6d | compute| the num|
|00002880| 62 65 72 20 6f 66 20 75 | 73 65 72 73 0a 58 09 20 |ber of u|sers.X. |
|00002890| 2a 20 61 6e 64 20 70 6c | 61 63 65 20 72 65 73 75 |* and pl|ace resu|
|000028a0| 6c 74 20 69 6e 20 76 61 | 72 69 61 62 6c 65 20 6e |lt in va|riable n|
|000028b0| 75 73 65 72 73 0a 58 09 | 20 2a 2f 0a 58 09 72 65 |users.X.| */.X.re|
|000028c0| 74 75 72 6e 28 28 63 68 | 61 72 20 2a 29 26 6e 75 |turn((ch|ar *)&nu|
|000028d0| 73 65 72 73 29 3b 0a 58 | 7d 0a 58 2e 4c 66 0a 58 |sers);.X|}.X.Lf.X|
|000028e0| 2e 42 45 0a 58 2e 4c 50 | 0a 58 49 74 20 74 61 6b |.BE.X.LP|.XIt tak|
|000028f0| 65 73 20 6f 6e 65 20 61 | 72 67 75 6d 65 6e 74 2c |es one a|rgument,|
|00002900| 20 77 68 69 63 68 20 69 | 73 20 61 20 70 6f 69 6e | which i|s a poin|
|00002910| 74 65 72 20 74 6f 20 74 | 68 65 20 69 6e 70 75 74 |ter to t|he input|
|00002920| 0a 58 6f 66 20 74 68 65 | 20 72 65 6d 6f 74 65 20 |.Xof the| remote |
|00002930| 70 72 6f 63 65 64 75 72 | 65 20 63 61 6c 6c 20 28 |procedur|e call (|
|00002940| 69 67 6e 6f 72 65 64 20 | 69 6e 20 6f 75 72 20 65 |ignored |in our e|
|00002950| 78 61 6d 70 6c 65 29 2c | 0a 58 61 6e 64 20 69 74 |xample),|.Xand it|
|00002960| 20 72 65 74 75 72 6e 73 | 20 61 20 70 6f 69 6e 74 | returns| a point|
|00002970| 65 72 20 74 6f 20 74 68 | 65 20 72 65 73 75 6c 74 |er to th|e result|
|00002980| 2e 0a 58 49 6e 20 74 68 | 65 20 63 75 72 72 65 6e |..XIn th|e curren|
|00002990| 74 20 76 65 72 73 69 6f | 6e 20 6f 66 20 43 2c 0a |t versio|n of C,.|
|000029a0| 58 63 68 61 72 61 63 74 | 65 72 20 70 6f 69 6e 74 |Xcharact|er point|
|000029b0| 65 72 73 20 61 72 65 20 | 74 68 65 20 67 65 6e 65 |ers are |the gene|
|000029c0| 72 69 63 20 70 6f 69 6e | 74 65 72 73 2c 0a 58 73 |ric poin|ters,.Xs|
|000029d0| 6f 20 62 6f 74 68 20 74 | 68 65 20 69 6e 70 75 74 |o both t|he input|
|000029e0| 20 61 72 67 75 6d 65 6e | 74 20 61 6e 64 20 74 68 | argumen|t and th|
|000029f0| 65 20 72 65 74 75 72 6e | 20 76 61 6c 75 65 20 61 |e return| value a|
|00002a00| 72 65 20 63 61 73 74 20 | 74 6f 0a 58 2e 4c 57 20 |re cast |to.X.LW |
|00002a10| 22 63 68 61 72 20 2a 22 | 20 2e 0a 58 2e 4c 50 0a |"char *"| ..X.LP.|
|00002a20| 58 4e 6f 72 6d 61 6c 6c | 79 2c 20 61 20 73 65 72 |XNormall|y, a ser|
|00002a30| 76 65 72 20 72 65 67 69 | 73 74 65 72 73 20 61 6c |ver regi|sters al|
|00002a40| 6c 20 6f 66 20 74 68 65 | 20 52 50 43 20 63 61 6c |l of the| RPC cal|
|00002a50| 6c 73 20 69 74 20 70 6c | 61 6e 73 0a 58 74 6f 20 |ls it pl|ans.Xto |
|00002a60| 68 61 6e 64 6c 65 2c 20 | 61 6e 64 20 74 68 65 6e |handle, |and then|
|00002a70| 20 67 6f 65 73 20 69 6e | 74 6f 20 61 6e 20 69 6e | goes in|to an in|
|00002a80| 66 69 6e 69 74 65 20 6c | 6f 6f 70 20 77 61 69 74 |finite l|oop wait|
|00002a90| 69 6e 67 20 74 6f 20 73 | 65 72 76 69 63 65 20 72 |ing to s|ervice r|
|00002aa0| 65 71 75 65 73 74 73 2e | 0a 58 49 6e 20 74 68 69 |equests.|.XIn thi|
|00002ab0| 73 20 65 78 61 6d 70 6c | 65 2c 20 74 68 65 72 65 |s exampl|e, there|
|00002ac0| 20 69 73 20 6f 6e 6c 79 | 20 61 20 73 69 6e 67 6c | is only| a singl|
|00002ad0| 65 20 70 72 6f 63 65 64 | 75 72 65 0a 58 74 6f 20 |e proced|ure.Xto |
|00002ae0| 72 65 67 69 73 74 65 72 | 2c 20 73 6f 20 74 68 65 |register|, so the|
|00002af0| 20 6d 61 69 6e 20 62 6f | 64 79 20 6f 66 20 74 68 | main bo|dy of th|
|00002b00| 65 20 73 65 72 76 65 72 | 20 77 6f 75 6c 64 20 6c |e server| would l|
|00002b10| 6f 6f 6b 20 6c 69 6b 65 | 20 74 68 69 73 3a 0a 58 |ook like| this:.X|
|00002b20| 2e 42 53 0a 58 2e 4c 53 | 0a 58 23 69 6e 63 6c 75 |.BS.X.LS|.X#inclu|
|00002b30| 64 65 20 3c 73 74 64 69 | 6f 2e 68 3e 0a 58 23 69 |de <stdi|o.h>.X#i|
|00002b40| 6e 63 6c 75 64 65 20 3c | 72 70 63 73 76 63 2f 72 |nclude <|rpcsvc/r|
|00002b50| 75 73 65 72 73 2e 68 3e | 0a 58 2e 73 70 2e 35 0a |users.h>|.X.sp.5.|
|00002b60| 58 63 68 61 72 20 2a 6e | 75 73 65 72 28 29 3b 0a |Xchar *n|user();.|
|00002b70| 58 2e 73 70 2e 35 0a 58 | 6d 61 69 6e 28 29 0a 58 |X.sp.5.X|main().X|
|00002b80| 7b 0a 58 09 72 65 67 69 | 73 74 65 72 72 70 63 28 |{.X.regi|sterrpc(|
|00002b90| 52 55 53 45 52 53 50 52 | 4f 47 2c 20 52 55 53 45 |RUSERSPR|OG, RUSE|
|00002ba0| 52 53 56 45 52 53 2c 20 | 52 55 53 45 52 53 50 52 |RSVERS, |RUSERSPR|
|00002bb0| 4f 43 5f 4e 55 4d 2c 0a | 58 09 09 6e 75 73 65 72 |OC_NUM,.|X..nuser|
|00002bc0| 2c 20 78 64 72 5f 76 6f | 69 64 2c 20 78 64 72 5f |, xdr_vo|id, xdr_|
|00002bd0| 75 5f 6c 6f 6e 67 29 3b | 0a 58 09 73 76 63 5f 72 |u_long);|.X.svc_r|
|00002be0| 75 6e 28 29 3b 09 09 2f | 2a 20 6e 65 76 65 72 20 |un();../|* never |
|00002bf0| 72 65 74 75 72 6e 73 20 | 2a 2f 0a 58 09 66 70 72 |returns |*/.X.fpr|
|00002c00| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 45 72 |intf(std|err, "Er|
|00002c10| 72 6f 72 3a 20 73 76 63 | 5f 72 75 6e 20 72 65 74 |ror: svc|_run ret|
|00002c20| 75 72 6e 65 64 21 5c 65 | 6e 22 29 3b 0a 58 09 65 |urned!\e|n");.X.e|
|00002c30| 78 69 74 28 31 29 3b 0a | 58 7d 0a 58 2e 4c 66 0a |xit(1);.|X}.X.Lf.|
|00002c40| 58 2e 42 45 0a 58 2e 4c | 50 0a 58 54 68 65 0a 58 |X.BE.X.L|P.XThe.X|
|00002c50| 2e 4c 57 20 72 65 67 69 | 73 74 65 72 72 70 63 28 |.LW regi|sterrpc(|
|00002c60| 29 0a 58 72 6f 75 74 69 | 6e 65 20 65 73 74 61 62 |).Xrouti|ne estab|
|00002c70| 6c 69 73 68 65 73 20 77 | 68 61 74 20 43 20 70 72 |lishes w|hat C pr|
|00002c80| 6f 63 65 64 75 72 65 0a | 58 63 6f 72 72 65 73 70 |ocedure.|Xcorresp|
|00002c90| 6f 6e 64 73 20 74 6f 20 | 65 61 63 68 20 52 50 43 |onds to |each RPC|
|00002ca0| 20 70 72 6f 63 65 64 75 | 72 65 20 6e 75 6d 62 65 | procedu|re numbe|
|00002cb0| 72 2e 0a 58 54 68 65 20 | 66 69 72 73 74 20 74 68 |r..XThe |first th|
|00002cc0| 72 65 65 20 70 61 72 61 | 6d 65 74 65 72 73 2c 0a |ree para|meters,.|
|00002cd0| 58 2e 4c 57 20 52 55 53 | 45 52 50 52 4f 47 20 2c |X.LW RUS|ERPROG ,|
|00002ce0| 0a 58 2e 4c 57 20 52 55 | 53 45 52 53 56 45 52 53 |.X.LW RU|SERSVERS|
|00002cf0| 20 2c 0a 58 61 6e 64 0a | 58 2e 4c 57 20 52 55 53 | ,.Xand.|X.LW RUS|
|00002d00| 45 52 53 50 52 4f 43 5f | 4e 55 4d 0a 58 61 72 65 |ERSPROC_|NUM.Xare|
|00002d10| 20 74 68 65 20 70 72 6f | 67 72 61 6d 2c 20 76 65 | the pro|gram, ve|
|00002d20| 72 73 69 6f 6e 2c 20 61 | 6e 64 20 70 72 6f 63 65 |rsion, a|nd proce|
|00002d30| 64 75 72 65 20 6e 75 6d | 62 65 72 73 0a 58 6f 66 |dure num|bers.Xof|
|00002d40| 20 74 68 65 20 72 65 6d | 6f 74 65 20 70 72 6f 63 | the rem|ote proc|
|00002d50| 65 64 75 72 65 20 74 6f | 20 62 65 20 72 65 67 69 |edure to| be regi|
|00002d60| 73 74 65 72 65 64 3b 0a | 58 2e 4c 57 20 6e 75 73 |stered;.|X.LW nus|
|00002d70| 65 72 28 29 0a 58 69 73 | 20 74 68 65 20 6e 61 6d |er().Xis| the nam|
|00002d80| 65 20 6f 66 20 74 68 65 | 20 43 20 70 72 6f 63 65 |e of the| C proce|
|00002d90| 64 75 72 65 20 69 6d 70 | 6c 65 6d 65 6e 74 69 6e |dure imp|lementin|
|00002da0| 67 20 69 74 3b 0a 58 61 | 6e 64 0a 58 2e 4c 57 20 |g it;.Xa|nd.X.LW |
|00002db0| 78 64 72 5f 76 6f 69 64 | 0a 58 61 6e 64 0a 58 2e |xdr_void|.Xand.X.|
|00002dc0| 4c 57 20 78 64 72 5f 75 | 5f 6c 6f 6e 67 0a 58 61 |LW xdr_u|_long.Xa|
|00002dd0| 72 65 20 74 68 65 20 74 | 79 70 65 73 20 6f 66 20 |re the t|ypes of |
|00002de0| 74 68 65 20 69 6e 70 75 | 74 20 74 6f 20 61 6e 64 |the inpu|t to and|
|00002df0| 20 6f 75 74 70 75 74 20 | 66 72 6f 6d 20 74 68 65 | output |from the|
|00002e00| 20 70 72 6f 63 65 64 75 | 72 65 2e 0a 58 2e 4c 50 | procedu|re..X.LP|
|00002e10| 0a 58 4f 6e 6c 79 20 74 | 68 65 20 55 44 50 20 74 |.XOnly t|he UDP t|
|00002e20| 72 61 6e 73 70 6f 72 74 | 20 6d 65 63 68 61 6e 69 |ransport| mechani|
|00002e30| 73 6d 20 63 61 6e 20 75 | 73 65 0a 58 2e 4c 57 20 |sm can u|se.X.LW |
|00002e40| 72 65 67 69 73 74 65 72 | 72 70 63 28 29 20 3b 0a |register|rpc() ;.|
|00002e50| 58 74 68 75 73 2c 20 69 | 74 20 69 73 20 61 6c 77 |Xthus, i|t is alw|
|00002e60| 61 79 73 20 73 61 66 65 | 20 69 6e 20 63 6f 6e 6a |ays safe| in conj|
|00002e70| 75 6e 63 74 69 6f 6e 20 | 77 69 74 68 20 63 61 6c |unction |with cal|
|00002e80| 6c 73 20 67 65 6e 65 72 | 61 74 65 64 20 62 79 0a |ls gener|ated by.|
|00002e90| 58 2e 4c 57 20 63 61 6c | 6c 72 70 63 28 29 20 2e |X.LW cal|lrpc() .|
|00002ea0| 0a 58 2e 4c 50 0a 58 57 | 61 72 6e 69 6e 67 3a 20 |.X.LP.XW|arning: |
|00002eb0| 74 68 65 20 55 44 50 20 | 74 72 61 6e 73 70 6f 72 |the UDP |transpor|
|00002ec0| 74 20 6d 65 63 68 61 6e | 69 73 6d 20 63 61 6e 20 |t mechan|ism can |
|00002ed0| 6f 6e 6c 79 20 64 65 61 | 6c 20 77 69 74 68 0a 58 |only dea|l with.X|
|00002ee0| 61 72 67 75 6d 65 6e 74 | 73 20 61 6e 64 20 72 65 |argument|s and re|
|00002ef0| 73 75 6c 74 73 20 6c 65 | 73 73 20 74 68 61 6e 20 |sults le|ss than |
|00002f00| 38 4b 20 62 79 74 65 73 | 20 69 6e 20 6c 65 6e 67 |8K bytes| in leng|
|00002f10| 74 68 2e 0a 58 2e 4e 48 | 20 32 0a 58 41 73 73 69 |th..X.NH| 2.XAssi|
|00002f20| 67 6e 69 6e 67 20 50 72 | 6f 67 72 61 6d 20 4e 75 |gning Pr|ogram Nu|
|00002f30| 6d 62 65 72 73 0a 58 2e | 4c 50 0a 58 50 72 6f 67 |mbers.X.|LP.XProg|
|00002f40| 72 61 6d 20 6e 75 6d 62 | 65 72 73 20 61 72 65 20 |ram numb|ers are |
|00002f50| 61 73 73 69 67 6e 65 64 | 20 69 6e 20 67 72 6f 75 |assigned| in grou|
|00002f60| 70 73 20 6f 66 20 30 78 | 32 30 30 30 30 30 30 30 |ps of 0x|20000000|
|00002f70| 20 28 35 33 36 38 37 30 | 39 31 32 29 0a 58 61 63 | (536870|912).Xac|
|00002f80| 63 6f 72 64 69 6e 67 20 | 74 6f 20 74 68 65 20 66 |cording |to the f|
|00002f90| 6f 6c 6c 6f 77 69 6e 67 | 20 63 68 61 72 74 3a 0a |ollowing| chart:.|
|00002fa0| 58 2e 42 53 0a 58 2e 4c | 53 0a 58 20 20 20 20 20 |X.BS.X.L|S.X |
|00002fb0| 20 20 30 20 2d 20 31 66 | 66 66 66 66 66 66 09 64 | 0 - 1f|ffffff.d|
|00002fc0| 65 66 69 6e 65 64 20 62 | 79 20 73 75 6e 0a 58 32 |efined b|y sun.X2|
|00002fd0| 30 30 30 30 30 30 30 20 | 2d 20 33 66 66 66 66 66 |0000000 |- 3fffff|
|00002fe0| 66 66 09 64 65 66 69 6e | 65 64 20 62 79 20 75 73 |ff.defin|ed by us|
|00002ff0| 65 72 0a 58 34 30 30 30 | 30 30 30 30 20 2d 20 35 |er.X4000|0000 - 5|
|00003000| 66 66 66 66 66 66 66 09 | 74 72 61 6e 73 69 65 6e |fffffff.|transien|
|00003010| 74 0a 58 36 30 30 30 30 | 30 30 30 20 2d 20 37 66 |t.X60000|000 - 7f|
|00003020| 66 66 66 66 66 66 09 72 | 65 73 65 72 76 65 64 0a |ffffff.r|eserved.|
|00003030| 58 38 30 30 30 30 30 30 | 30 20 2d 20 39 66 66 66 |X8000000|0 - 9fff|
|00003040| 66 66 66 66 09 72 65 73 | 65 72 76 65 64 0a 58 61 |ffff.res|erved.Xa|
|00003050| 30 30 30 30 30 30 30 20 | 2d 20 62 66 66 66 66 66 |0000000 |- bfffff|
|00003060| 66 66 09 72 65 73 65 72 | 76 65 64 0a 58 63 30 30 |ff.reser|ved.Xc00|
|00003070| 30 30 30 30 30 20 2d 20 | 64 66 66 66 66 66 66 66 |00000 - |dfffffff|
|00003080| 09 72 65 73 65 72 76 65 | 64 0a 58 65 30 30 30 30 |.reserve|d.Xe0000|
|00003090| 30 30 30 20 2d 20 66 66 | 66 66 66 66 66 66 09 72 |000 - ff|ffffff.r|
|000030a0| 65 73 65 72 76 65 64 0a | 58 2e 4c 66 0a 58 2e 42 |eserved.|X.Lf.X.B|
|000030b0| 45 0a 58 53 75 6e 20 4d | 69 63 72 6f 73 79 73 74 |E.XSun M|icrosyst|
|000030c0| 65 6d 73 20 61 64 6d 69 | 6e 69 73 74 65 72 73 20 |ems admi|nisters |
|000030d0| 74 68 65 20 66 69 72 73 | 74 20 67 72 6f 75 70 20 |the firs|t group |
|000030e0| 6f 66 20 6e 75 6d 62 65 | 72 73 2c 0a 58 77 68 69 |of numbe|rs,.Xwhi|
|000030f0| 63 68 20 73 68 6f 75 6c | 64 20 62 65 20 69 64 65 |ch shoul|d be ide|
|00003100| 6e 74 69 63 61 6c 20 66 | 6f 72 20 61 6c 6c 20 53 |ntical f|or all S|
|00003110| 75 6e 20 63 75 73 74 6f | 6d 65 72 73 2e 0a 58 49 |un custo|mers..XI|
|00003120| 66 20 61 20 63 75 73 74 | 6f 6d 65 72 20 64 65 76 |f a cust|omer dev|
|00003130| 65 6c 6f 70 73 20 61 6e | 20 61 70 70 6c 69 63 61 |elops an| applica|
|00003140| 74 69 6f 6e 20 74 68 61 | 74 20 6d 69 67 68 74 20 |tion tha|t might |
|00003150| 62 65 20 6f 66 20 67 65 | 6e 65 72 61 6c 20 69 6e |be of ge|neral in|
|00003160| 74 65 72 65 73 74 2c 0a | 58 74 68 61 74 20 61 70 |terest,.|Xthat ap|
|00003170| 70 6c 69 63 61 74 69 6f | 6e 20 73 68 6f 75 6c 64 |plicatio|n should|
|00003180| 20 62 65 20 67 69 76 65 | 6e 20 61 6e 20 61 73 73 | be give|n an ass|
|00003190| 69 67 6e 65 64 20 6e 75 | 6d 62 65 72 20 69 6e 20 |igned nu|mber in |
|000031a0| 74 68 65 20 66 69 72 73 | 74 20 72 61 6e 67 65 2e |the firs|t range.|
|000031b0| 0a 58 54 68 65 20 73 65 | 63 6f 6e 64 20 67 72 6f |.XThe se|cond gro|
|000031c0| 75 70 20 6f 66 20 6e 75 | 6d 62 65 72 73 20 69 73 |up of nu|mbers is|
|000031d0| 20 72 65 73 65 72 76 65 | 64 20 66 6f 72 20 73 70 | reserve|d for sp|
|000031e0| 65 63 69 66 69 63 20 63 | 75 73 74 6f 6d 65 72 20 |ecific c|ustomer |
|000031f0| 61 70 70 6c 69 63 61 74 | 69 6f 6e 73 2e 0a 58 54 |applicat|ions..XT|
|00003200| 68 69 73 20 72 61 6e 67 | 65 20 69 73 20 69 6e 74 |his rang|e is int|
|00003210| 65 6e 64 65 64 20 70 72 | 69 6d 61 72 69 6c 79 20 |ended pr|imarily |
|00003220| 66 6f 72 20 64 65 62 75 | 67 67 69 6e 67 20 6e 65 |for debu|gging ne|
|00003230| 77 20 70 72 6f 67 72 61 | 6d 73 2e 0a 58 54 68 65 |w progra|ms..XThe|
|00003240| 20 74 68 69 72 64 20 67 | 72 6f 75 70 20 69 73 20 | third g|roup is |
|00003250| 72 65 73 65 72 76 65 64 | 20 66 6f 72 20 61 70 70 |reserved| for app|
|00003260| 6c 69 63 61 74 69 6f 6e | 73 20 74 68 61 74 0a 58 |lication|s that.X|
|00003270| 67 65 6e 65 72 61 74 65 | 20 70 72 6f 67 72 61 6d |generate| program|
|00003280| 20 6e 75 6d 62 65 72 73 | 20 64 79 6e 61 6d 69 63 | numbers| dynamic|
|00003290| 61 6c 6c 79 2e 0a 58 54 | 68 65 20 66 69 6e 61 6c |ally..XT|he final|
|000032a0| 20 67 72 6f 75 70 73 20 | 61 72 65 20 72 65 73 65 | groups |are rese|
|000032b0| 72 76 65 64 20 66 6f 72 | 20 66 75 74 75 72 65 20 |rved for| future |
|000032c0| 75 73 65 2c 20 61 6e 64 | 20 73 68 6f 75 6c 64 20 |use, and| should |
|000032d0| 6e 6f 74 20 62 65 20 75 | 73 65 64 2e 0a 58 2e 4c |not be u|sed..X.L|
|000032e0| 50 0a 58 54 6f 20 72 65 | 67 69 73 74 65 72 20 61 |P.XTo re|gister a|
|000032f0| 20 70 72 6f 74 6f 63 6f | 6c 20 73 70 65 63 69 66 | protoco|l specif|
|00003300| 69 63 61 74 69 6f 6e 2c | 0a 58 73 65 6e 64 20 61 |ication,|.Xsend a|
|00003310| 20 72 65 71 75 65 73 74 | 20 62 79 20 6e 65 74 77 | request| by netw|
|00003320| 6f 72 6b 20 6d 61 69 6c | 20 74 6f 0a 58 2e 4c 57 |ork mail| to.X.LW|
|00003330| 20 73 75 6e 21 72 70 63 | 20 2c 0a 58 6f 72 20 77 | sun!rpc| ,.Xor w|
|00003340| 72 69 74 65 20 74 6f 3a | 0a 58 2e 44 53 0a 58 52 |rite to:|.X.DS.XR|
|00003350| 50 43 20 41 64 6d 69 6e | 69 73 74 72 61 74 6f 72 |PC Admin|istrator|
|00003360| 0a 58 53 75 6e 20 4d 69 | 63 72 6f 73 79 73 74 65 |.XSun Mi|crosyste|
|00003370| 6d 73 0a 58 32 35 35 30 | 20 47 61 72 63 69 61 20 |ms.X2550| Garcia |
|00003380| 41 76 65 2e 0a 58 4d 6f | 75 6e 74 61 69 6e 20 56 |Ave..XMo|untain V|
|00003390| 69 65 77 2c 20 43 41 20 | 39 34 30 34 33 0a 58 2e |iew, CA |94043.X.|
|000033a0| 44 45 0a 58 50 6c 65 61 | 73 65 20 69 6e 63 6c 75 |DE.XPlea|se inclu|
|000033b0| 64 65 20 61 20 63 6f 6d | 70 6c 65 74 65 20 70 72 |de a com|plete pr|
|000033c0| 6f 74 6f 63 6f 6c 20 73 | 70 65 63 69 66 69 63 61 |otocol s|pecifica|
|000033d0| 74 69 6f 6e 2c 0a 58 73 | 69 6d 69 6c 61 72 20 74 |tion,.Xs|imilar t|
|000033e0| 6f 20 74 68 6f 73 65 20 | 69 6e 20 74 68 69 73 20 |o those |in this |
|000033f0| 6d 61 6e 75 61 6c 20 66 | 6f 72 20 4e 46 53 20 61 |manual f|or NFS a|
|00003400| 6e 64 20 59 50 2e 0a 58 | 59 6f 75 20 77 69 6c 6c |nd YP..X|You will|
|00003410| 20 62 65 20 67 69 76 65 | 6e 20 61 20 75 6e 69 71 | be give|n a uniq|
|00003420| 75 65 20 70 72 6f 67 72 | 61 6d 20 6e 75 6d 62 65 |ue progr|am numbe|
|00003430| 72 20 69 6e 20 72 65 74 | 75 72 6e 2e 0a 58 2e 4e |r in ret|urn..X.N|
|00003440| 48 20 32 0a 58 50 61 73 | 73 69 6e 67 20 41 72 62 |H 2.XPas|sing Arb|
|00003450| 69 74 72 61 72 79 20 44 | 61 74 61 20 54 79 70 65 |itrary D|ata Type|
|00003460| 73 0a 58 2e 4c 50 0a 58 | 49 6e 20 74 68 65 20 70 |s.X.LP.X|In the p|
|00003470| 72 65 76 69 6f 75 73 20 | 65 78 61 6d 70 6c 65 2c |revious |example,|
|00003480| 20 74 68 65 20 52 50 43 | 20 63 61 6c 6c 20 70 61 | the RPC| call pa|
|00003490| 73 73 65 73 20 61 20 73 | 69 6e 67 6c 65 0a 58 2e |sses a s|ingle.X.|
|000034a0| 4c 57 20 22 75 6e 73 69 | 67 6e 65 64 20 6c 6f 6e |LW "unsi|gned lon|
|000034b0| 67 22 20 2e 0a 58 52 50 | 43 20 63 61 6e 20 68 61 |g" ..XRP|C can ha|
|000034c0| 6e 64 6c 65 20 61 72 62 | 69 74 72 61 72 79 20 64 |ndle arb|itrary d|
|000034d0| 61 74 61 20 73 74 72 75 | 63 74 75 72 65 73 2c 20 |ata stru|ctures, |
|000034e0| 72 65 67 61 72 64 6c 65 | 73 73 20 6f 66 0a 58 64 |regardle|ss of.Xd|
|000034f0| 69 66 66 65 72 65 6e 74 | 20 6d 61 63 68 69 6e 65 |ifferent| machine|
|00003500| 73 27 20 62 79 74 65 20 | 6f 72 64 65 72 73 20 6f |s' byte |orders o|
|00003510| 72 20 73 74 72 75 63 74 | 75 72 65 20 6c 61 79 6f |r struct|ure layo|
|00003520| 75 74 20 63 6f 6e 76 65 | 6e 74 69 6f 6e 73 2c 0a |ut conve|ntions,.|
|00003530| 58 62 79 20 61 6c 77 61 | 79 73 20 63 6f 6e 76 65 |Xby alwa|ys conve|
|00003540| 72 74 69 6e 67 20 74 68 | 65 6d 20 74 6f 20 61 20 |rting th|em to a |
|00003550| 6e 65 74 77 6f 72 6b 20 | 73 74 61 6e 64 61 72 64 |network |standard|
|00003560| 20 63 61 6c 6c 65 64 0a | 58 2e 49 20 22 65 58 74 | called.|X.I "eXt|
|00003570| 65 72 6e 61 6c 20 44 61 | 74 61 20 52 65 70 72 65 |ernal Da|ta Repre|
|00003580| 73 65 6e 74 61 74 69 6f | 6e 22 0a 58 28 58 44 52 |sentatio|n".X(XDR|
|00003590| 29 20 62 65 66 6f 72 65 | 0a 58 73 65 6e 64 69 6e |) before|.Xsendin|
|000035a0| 67 20 74 68 65 6d 20 6f | 76 65 72 20 74 68 65 20 |g them o|ver the |
|000035b0| 77 69 72 65 2e 0a 58 54 | 68 65 20 70 72 6f 63 65 |wire..XT|he proce|
|000035c0| 73 73 20 6f 66 20 63 6f | 6e 76 65 72 74 69 6e 67 |ss of co|nverting|
|000035d0| 20 66 72 6f 6d 20 61 20 | 70 61 72 74 69 63 75 6c | from a |particul|
|000035e0| 61 72 20 6d 61 63 68 69 | 6e 65 20 72 65 70 72 65 |ar machi|ne repre|
|000035f0| 73 65 6e 74 61 74 69 6f | 6e 0a 58 74 6f 20 58 44 |sentatio|n.Xto XD|
|00003600| 52 20 66 6f 72 6d 61 74 | 20 69 73 20 63 61 6c 6c |R format| is call|
|00003610| 65 64 0a 58 2e 49 20 73 | 65 72 69 61 6c 69 7a 69 |ed.X.I s|erializi|
|00003620| 6e 67 20 2c 0a 58 61 6e | 64 20 74 68 65 20 72 65 |ng ,.Xan|d the re|
|00003630| 76 65 72 73 65 20 70 72 | 6f 63 65 73 73 20 69 73 |verse pr|ocess is|
|00003640| 20 63 61 6c 6c 65 64 0a | 58 2e 49 20 64 65 73 65 | called.|X.I dese|
|00003650| 72 69 61 6c 69 7a 69 6e | 67 20 2e 0a 58 54 68 65 |rializin|g ..XThe|
|00003660| 20 74 79 70 65 20 66 69 | 65 6c 64 20 70 61 72 61 | type fi|eld para|
|00003670| 6d 65 74 65 72 73 20 6f | 66 0a 58 2e 4c 57 20 63 |meters o|f.X.LW c|
|00003680| 61 6c 6c 72 70 63 28 29 | 0a 58 61 6e 64 0a 58 2e |allrpc()|.Xand.X.|
|00003690| 4c 57 20 72 65 67 69 73 | 74 65 72 72 70 63 28 29 |LW regis|terrpc()|
|000036a0| 0a 58 63 61 6e 20 62 65 | 20 61 20 62 75 69 6c 74 |.Xcan be| a built|
|000036b0| 2d 69 6e 20 70 72 6f 63 | 65 64 75 72 65 20 6c 69 |-in proc|edure li|
|000036c0| 6b 65 0a 58 2e 4c 57 20 | 78 64 72 5f 75 5f 6c 6f |ke.X.LW |xdr_u_lo|
|000036d0| 6e 67 28 29 0a 58 69 6e | 20 74 68 65 20 70 72 65 |ng().Xin| the pre|
|000036e0| 76 69 6f 75 73 20 65 78 | 61 6d 70 6c 65 2c 20 6f |vious ex|ample, o|
|000036f0| 72 20 61 20 75 73 65 72 | 20 73 75 70 70 6c 69 65 |r a user| supplie|
|00003700| 64 20 6f 6e 65 2e 0a 58 | 58 44 52 20 68 61 73 20 |d one..X|XDR has |
|00003710| 74 68 65 73 65 20 62 75 | 69 6c 74 2d 69 6e 20 74 |these bu|ilt-in t|
|00003720| 79 70 65 20 72 6f 75 74 | 69 6e 65 73 3a 0a 58 2e |ype rout|ines:.X.|
|00003730| 42 53 0a 58 2e 4c 53 0a | 58 78 64 72 5f 69 6e 74 |BS.X.LS.|Xxdr_int|
|00003740| 28 29 20 20 20 20 20 20 | 78 64 72 5f 75 5f 69 6e |() |xdr_u_in|
|00003750| 74 28 29 20 20 20 20 20 | 20 78 64 72 5f 65 6e 75 |t() | xdr_enu|
|00003760| 6d 28 29 0a 58 78 64 72 | 5f 6c 6f 6e 67 28 29 20 |m().Xxdr|_long() |
|00003770| 20 20 20 20 78 64 72 5f | 75 5f 6c 6f 6e 67 28 29 | xdr_|u_long()|
|00003780| 20 20 20 20 20 78 64 72 | 5f 62 6f 6f 6c 28 29 0a | xdr|_bool().|
|00003790| 58 78 64 72 5f 73 68 6f | 72 74 28 29 20 20 20 20 |Xxdr_sho|rt() |
|000037a0| 78 64 72 5f 75 5f 73 68 | 6f 72 74 28 29 20 20 20 |xdr_u_sh|ort() |
|000037b0| 20 78 64 72 5f 73 74 72 | 69 6e 67 28 29 0a 58 2e | xdr_str|ing().X.|
|000037c0| 4c 66 0a 58 2e 42 45 0a | 58 41 73 20 61 6e 20 65 |Lf.X.BE.|XAs an e|
|000037d0| 78 61 6d 70 6c 65 20 6f | 66 20 61 20 75 73 65 72 |xample o|f a user|
|000037e0| 2d 64 65 66 69 6e 65 64 | 20 74 79 70 65 20 72 6f |-defined| type ro|
|000037f0| 75 74 69 6e 65 2c 0a 58 | 69 66 20 79 6f 75 20 77 |utine,.X|if you w|
|00003800| 61 6e 74 65 64 20 74 6f | 20 73 65 6e 64 20 74 68 |anted to| send th|
|00003810| 65 20 73 74 72 75 63 74 | 75 72 65 0a 58 2e 42 53 |e struct|ure.X.BS|
|00003820| 0a 58 2e 4c 53 0a 58 73 | 74 72 75 63 74 20 73 69 |.X.LS.Xs|truct si|
|00003830| 6d 70 6c 65 20 7b 0a 58 | 09 69 6e 74 20 61 3b 0a |mple {.X|.int a;.|
|00003840| 58 09 73 68 6f 72 74 20 | 62 3b 0a 58 7d 20 73 69 |X.short |b;.X} si|
|00003850| 6d 70 6c 65 3b 0a 58 2e | 4c 66 0a 58 2e 42 45 0a |mple;.X.|Lf.X.BE.|
|00003860| 58 74 68 65 6e 20 79 6f | 75 20 77 6f 75 6c 64 20 |Xthen yo|u would |
|00003870| 63 61 6c 6c 0a 58 2e 4c | 57 20 63 61 6c 6c 72 70 |call.X.L|W callrp|
|00003880| 63 28 29 0a 58 61 73 0a | 58 2e 42 53 0a 58 2e 4c |c().Xas.|X.BS.X.L|
|00003890| 53 0a 58 63 61 6c 6c 72 | 70 63 28 68 6f 73 74 6e |S.Xcallr|pc(hostn|
|000038a0| 61 6d 65 2c 20 50 52 4f | 47 4e 55 4d 2c 20 56 45 |ame, PRO|GNUM, VE|
|000038b0| 52 53 4e 55 4d 2c 20 50 | 52 4f 43 4e 55 4d 2c 0a |RSNUM, P|ROCNUM,.|
|000038c0| 58 20 20 20 20 20 20 20 | 20 78 64 72 5f 73 69 6d |X | xdr_sim|
|000038d0| 70 6c 65 2c 20 26 73 69 | 6d 70 6c 65 20 2e 2e 2e |ple, &si|mple ...|
|000038e0| 29 3b 0a 58 2e 4c 66 0a | 58 2e 42 45 0a 58 77 68 |);.X.Lf.|X.BE.Xwh|
|000038f0| 65 72 65 0a 58 2e 4c 57 | 20 78 64 72 5f 73 69 6d |ere.X.LW| xdr_sim|
|00003900| 70 6c 65 28 29 0a 58 69 | 73 20 77 72 69 74 74 65 |ple().Xi|s writte|
|00003910| 6e 20 61 73 3a 0a 58 2e | 42 53 0a 58 2e 4c 53 0a |n as:.X.|BS.X.LS.|
|00003920| 58 23 69 6e 63 6c 75 64 | 65 20 3c 72 70 63 2f 72 |X#includ|e <rpc/r|
|00003930| 70 63 2e 68 3e 0a 58 2e | 73 70 2e 35 0a 58 78 64 |pc.h>.X.|sp.5.Xxd|
|00003940| 72 5f 73 69 6d 70 6c 65 | 28 78 64 72 73 70 2c 20 |r_simple|(xdrsp, |
|00003950| 73 69 6d 70 6c 65 70 29 | 0a 58 09 58 44 52 20 2a |simplep)|.X.XDR *|
|00003960| 78 64 72 73 70 3b 0a 58 | 09 73 74 72 75 63 74 20 |xdrsp;.X|.struct |
|00003970| 73 69 6d 70 6c 65 20 2a | 73 69 6d 70 6c 65 70 3b |simple *|simplep;|
|00003980| 0a 58 7b 0a 58 09 69 66 | 20 28 21 78 64 72 5f 69 |.X{.X.if| (!xdr_i|
|00003990| 6e 74 28 78 64 72 73 70 | 2c 20 26 73 69 6d 70 6c |nt(xdrsp|, &simpl|
|000039a0| 65 70 2d 3e 61 29 29 0a | 58 09 09 72 65 74 75 72 |ep->a)).|X..retur|
|000039b0| 6e 20 28 30 29 3b 0a 58 | 09 69 66 20 28 21 78 64 |n (0);.X|.if (!xd|
|000039c0| 72 5f 73 68 6f 72 74 28 | 78 64 72 73 70 2c 20 26 |r_short(|xdrsp, &|
|000039d0| 73 69 6d 70 6c 65 70 2d | 3e 62 29 29 0a 58 09 09 |simplep-|>b)).X..|
|000039e0| 72 65 74 75 72 6e 20 28 | 30 29 3b 0a 58 09 72 65 |return (|0);.X.re|
|000039f0| 74 75 72 6e 20 28 31 29 | 3b 0a 58 7d 0a 58 2e 4c |turn (1)|;.X}.X.L|
|00003a00| 66 0a 58 2e 42 45 0a 58 | 2e 4c 50 0a 58 41 6e 20 |f.X.BE.X|.LP.XAn |
|00003a10| 58 44 52 20 72 6f 75 74 | 69 6e 65 20 72 65 74 75 |XDR rout|ine retu|
|00003a20| 72 6e 73 20 6e 6f 6e 7a | 65 72 6f 20 28 74 72 75 |rns nonz|ero (tru|
|00003a30| 65 20 69 6e 20 74 68 65 | 20 73 65 6e 73 65 20 6f |e in the| sense o|
|00003a40| 66 20 43 29 0a 58 69 66 | 20 69 74 20 63 6f 6d 70 |f C).Xif| it comp|
|00003a50| 6c 65 74 65 73 20 73 75 | 63 63 65 73 73 66 75 6c |letes su|ccessful|
|00003a60| 6c 79 2c 20 61 6e 64 20 | 7a 65 72 6f 20 6f 74 68 |ly, and |zero oth|
|00003a70| 65 72 77 69 73 65 2e 0a | 58 41 20 63 6f 6d 70 6c |erwise..|XA compl|
|00003a80| 65 74 65 20 64 65 73 63 | 72 69 70 74 69 6f 6e 20 |ete desc|ription |
|00003a90| 6f 66 20 58 44 52 20 69 | 73 20 69 6e 20 74 68 65 |of XDR i|s in the|
|00003aa0| 0a 58 2e 49 20 22 58 44 | 52 20 50 72 6f 74 6f 63 |.X.I "XD|R Protoc|
|00003ab0| 6f 6c 20 53 70 65 63 69 | 66 69 63 61 74 69 6f 6e |ol Speci|fication|
|00003ac0| 22 20 2c 0a 58 73 6f 20 | 74 68 69 73 20 73 65 63 |" ,.Xso |this sec|
|00003ad0| 74 69 6f 6e 20 6f 6e 6c | 79 20 67 69 76 65 73 20 |tion onl|y gives |
|00003ae0| 61 20 66 65 77 20 65 78 | 61 6d 70 6c 65 73 20 6f |a few ex|amples o|
|00003af0| 66 20 58 44 52 20 69 6d | 70 6c 65 6d 65 6e 74 61 |f XDR im|plementa|
|00003b00| 74 69 6f 6e 2e 0a 58 2e | 4c 50 0a 58 49 6e 20 61 |tion..X.|LP.XIn a|
|00003b10| 64 64 69 74 69 6f 6e 20 | 74 6f 20 74 68 65 20 62 |ddition |to the b|
|00003b20| 75 69 6c 74 2d 69 6e 20 | 70 72 69 6d 69 74 69 76 |uilt-in |primitiv|
|00003b30| 65 73 2c 0a 58 74 68 65 | 72 65 20 61 72 65 20 61 |es,.Xthe|re are a|
|00003b40| 6c 73 6f 20 74 68 65 20 | 70 72 65 66 61 62 72 69 |lso the |prefabri|
|00003b50| 63 61 74 65 64 20 62 75 | 69 6c 64 69 6e 67 20 62 |cated bu|ilding b|
|00003b60| 6c 6f 63 6b 73 3a 0a 58 | 2e 42 53 0a 58 2e 4c 53 |locks:.X|.BS.X.LS|
|00003b70| 0a 58 78 64 72 5f 61 72 | 72 61 79 28 29 20 20 20 |.Xxdr_ar|ray() |
|00003b80| 20 20 20 20 78 64 72 5f | 62 79 74 65 73 28 29 0a | xdr_|bytes().|
|00003b90| 58 78 64 72 5f 72 65 66 | 65 72 65 6e 63 65 28 29 |Xxdr_ref|erence()|
|00003ba0| 20 20 20 78 64 72 5f 75 | 6e 69 6f 6e 28 29 0a 58 | xdr_u|nion().X|
|00003bb0| 2e 4c 66 0a 58 2e 42 45 | 0a 58 54 6f 20 73 65 6e |.Lf.X.BE|.XTo sen|
|00003bc0| 64 20 61 20 76 61 72 69 | 61 62 6c 65 20 61 72 72 |d a vari|able arr|
|00003bd0| 61 79 20 6f 66 20 69 6e | 74 65 67 65 72 73 2c 0a |ay of in|tegers,.|
|00003be0| 58 79 6f 75 20 6d 69 67 | 68 74 20 70 61 63 6b 61 |Xyou mig|ht packa|
|00003bf0| 67 65 20 74 68 65 6d 20 | 75 70 20 61 73 20 61 20 |ge them |up as a |
|00003c00| 73 74 72 75 63 74 75 72 | 65 20 6c 69 6b 65 20 74 |structur|e like t|
|00003c10| 68 69 73 0a 58 2e 42 53 | 0a 58 2e 4c 53 0a 58 73 |his.X.BS|.X.LS.Xs|
|00003c20| 74 72 75 63 74 20 76 61 | 72 69 6e 74 61 72 72 20 |truct va|rintarr |
|00003c30| 7b 0a 58 09 69 6e 74 20 | 2a 64 61 74 61 3b 0a 58 |{.X.int |*data;.X|
|00003c40| 09 69 6e 74 20 61 72 72 | 6c 6e 74 68 3b 0a 58 7d |.int arr|lnth;.X}|
|00003c50| 20 61 72 72 3b 0a 58 2e | 4c 66 0a 58 2e 42 45 0a | arr;.X.|Lf.X.BE.|
|00003c60| 58 61 6e 64 20 6d 61 6b | 65 20 61 6e 20 52 50 43 |Xand mak|e an RPC|
|00003c70| 20 63 61 6c 6c 20 73 75 | 63 68 20 61 73 0a 58 2e | call su|ch as.X.|
|00003c80| 42 53 0a 58 2e 4c 53 0a | 58 63 61 6c 6c 72 70 63 |BS.X.LS.|Xcallrpc|
|00003c90| 28 68 6f 73 74 6e 61 6d | 65 2c 20 50 52 4f 47 4e |(hostnam|e, PROGN|
|00003ca0| 55 4d 2c 20 56 45 52 53 | 4e 55 4d 2c 20 50 52 4f |UM, VERS|NUM, PRO|
|00003cb0| 43 4e 55 4d 2c 0a 58 20 | 20 20 20 20 20 20 20 78 |CNUM,.X | x|
|00003cc0| 64 72 5f 76 61 72 69 6e | 74 61 72 72 2c 20 26 61 |dr_varin|tarr, &a|
|00003cd0| 72 72 2e 2e 2e 29 3b 0a | 58 2e 4c 66 0a 58 2e 42 |rr...);.|X.Lf.X.B|
|00003ce0| 45 0a 58 77 69 74 68 0a | 58 2e 4c 57 20 78 64 72 |E.Xwith.|X.LW xdr|
|00003cf0| 5f 76 61 72 69 6e 74 61 | 72 72 28 29 0a 58 64 65 |_varinta|rr().Xde|
|00003d00| 66 69 6e 65 64 20 61 73 | 3a 0a 58 2e 42 53 0a 58 |fined as|:.X.BS.X|
|00003d10| 2e 4c 53 0a 58 78 64 72 | 5f 76 61 72 69 6e 74 61 |.LS.Xxdr|_varinta|
|00003d20| 72 72 28 78 64 72 73 70 | 2c 20 61 72 72 70 29 0a |rr(xdrsp|, arrp).|
|00003d30| 58 09 58 44 52 20 2a 78 | 64 72 73 70 3b 0a 58 09 |X.XDR *x|drsp;.X.|
|00003d40| 73 74 72 75 63 74 20 76 | 61 72 69 6e 74 61 72 72 |struct v|arintarr|
|00003d50| 20 2a 61 72 72 70 3b 0a | 58 7b 0a 58 09 78 64 72 | *arrp;.|X{.X.xdr|
|00003d60| 5f 61 72 72 61 79 28 78 | 64 72 73 70 2c 20 26 61 |_array(x|drsp, &a|
|00003d70| 72 72 70 2d 3e 64 61 74 | 61 2c 20 26 61 72 72 70 |rrp->dat|a, &arrp|
|00003d80| 2d 3e 61 72 72 6c 6e 74 | 68 2c 20 4d 41 58 4c 45 |->arrlnt|h, MAXLE|
|00003d90| 4e 2c 0a 58 09 09 73 69 | 7a 65 6f 66 28 69 6e 74 |N,.X..si|zeof(int|
|00003da0| 29 2c 20 78 64 72 5f 69 | 6e 74 29 3b 0a 58 7d 0a |), xdr_i|nt);.X}.|
|00003db0| 58 2e 4c 66 0a 58 2e 42 | 45 0a 58 54 68 69 73 20 |X.Lf.X.B|E.XThis |
|00003dc0| 72 6f 75 74 69 6e 65 20 | 74 61 6b 65 73 20 61 73 |routine |takes as|
|00003dd0| 20 70 61 72 61 6d 65 74 | 65 72 73 20 74 68 65 20 | paramet|ers the |
|00003de0| 58 44 52 20 68 61 6e 64 | 6c 65 2c 0a 58 61 20 70 |XDR hand|le,.Xa p|
|00003df0| 6f 69 6e 74 65 72 20 74 | 6f 20 74 68 65 20 61 72 |ointer t|o the ar|
|00003e00| 72 61 79 2c 20 61 20 70 | 6f 69 6e 74 65 72 20 74 |ray, a p|ointer t|
|00003e10| 6f 20 74 68 65 20 73 69 | 7a 65 20 6f 66 20 74 68 |o the si|ze of th|
|00003e20| 65 20 61 72 72 61 79 2c | 0a 58 74 68 65 20 6d 61 |e array,|.Xthe ma|
|00003e30| 78 69 6d 75 6d 20 61 6c | 6c 6f 77 61 62 6c 65 20 |ximum al|lowable |
|00003e40| 61 72 72 61 79 20 73 69 | 7a 65 2c 0a 58 74 68 65 |array si|ze,.Xthe|
|00003e50| 20 73 69 7a 65 20 6f 66 | 20 65 61 63 68 20 61 72 | size of| each ar|
|00003e60| 72 61 79 20 65 6c 65 6d | 65 6e 74 2c 0a 58 61 6e |ray elem|ent,.Xan|
|00003e70| 64 20 61 6e 20 58 44 52 | 20 72 6f 75 74 69 6e 65 |d an XDR| routine|
|00003e80| 20 66 6f 72 20 68 61 6e | 64 6c 69 6e 67 20 65 61 | for han|dling ea|
|00003e90| 63 68 20 61 72 72 61 79 | 20 65 6c 65 6d 65 6e 74 |ch array| element|
|00003ea0| 2e 0a 58 2e 4c 50 0a 58 | 49 66 20 74 68 65 20 73 |..X.LP.X|If the s|
|00003eb0| 69 7a 65 20 6f 66 20 74 | 68 65 20 61 72 72 61 79 |ize of t|he array|
|00003ec0| 20 69 73 20 6b 6e 6f 77 | 6e 20 69 6e 20 61 64 76 | is know|n in adv|
|00003ed0| 61 6e 63 65 2c 20 74 68 | 65 6e 0a 58 74 68 65 20 |ance, th|en.Xthe |
|00003ee0| 66 6f 6c 6c 6f 77 69 6e | 67 20 63 6f 75 6c 64 20 |followin|g could |
|00003ef0| 61 6c 73 6f 20 62 65 20 | 75 73 65 64 20 74 6f 20 |also be |used to |
|00003f00| 73 65 6e 64 0a 58 6f 75 | 74 20 61 6e 20 61 72 72 |send.Xou|t an arr|
|00003f10| 61 79 20 6f 66 20 6c 65 | 6e 67 74 68 0a 58 2e 4c |ay of le|ngth.X.L|
|00003f20| 57 20 53 49 5a 45 20 3a | 0a 58 2e 42 53 0a 58 2e |W SIZE :|.X.BS.X.|
|00003f30| 4c 53 0a 58 69 6e 74 20 | 69 6e 74 61 72 72 5b 53 |LS.Xint |intarr[S|
|00003f40| 49 5a 45 5d 3b 0a 58 2e | 73 70 2e 35 0a 58 78 64 |IZE];.X.|sp.5.Xxd|
|00003f50| 72 5f 69 6e 74 61 72 72 | 28 78 64 72 73 70 2c 20 |r_intarr|(xdrsp, |
|00003f60| 69 6e 74 61 72 72 29 0a | 58 09 58 44 52 20 2a 78 |intarr).|X.XDR *x|
|00003f70| 64 72 73 70 3b 0a 58 09 | 69 6e 74 20 69 6e 74 61 |drsp;.X.|int inta|
|00003f80| 72 72 5b 5d 3b 0a 58 7b | 0a 58 09 69 6e 74 20 69 |rr[];.X{|.X.int i|
|00003f90| 3b 0a 58 2e 73 70 2e 35 | 0a 58 09 66 6f 72 20 28 |;.X.sp.5|.X.for (|
|00003fa0| 69 20 3d 20 30 3b 20 69 | 20 3c 20 53 49 5a 45 3b |i = 0; i| < SIZE;|
|00003fb0| 20 69 2b 2b 29 20 7b 0a | 58 09 09 69 66 20 28 21 | i++) {.|X..if (!|
|00003fc0| 78 64 72 5f 69 6e 74 28 | 78 64 72 73 70 2c 20 26 |xdr_int(|xdrsp, &|
|00003fd0| 69 6e 74 61 72 72 5b 69 | 5d 29 29 0a 58 09 09 09 |intarr[i|])).X...|
|00003fe0| 72 65 74 75 72 6e 20 28 | 30 29 3b 0a 58 09 7d 0a |return (|0);.X.}.|
|00003ff0| 58 09 72 65 74 75 72 6e | 20 28 31 29 3b 0a 58 7d |X.return| (1);.X}|
|00004000| 0a 58 2e 4c 66 0a 58 2e | 42 45 0a 58 2e 4c 50 0a |.X.Lf.X.|BE.X.LP.|
|00004010| 58 58 44 52 20 61 6c 77 | 61 79 73 20 63 6f 6e 76 |XXDR alw|ays conv|
|00004020| 65 72 74 73 20 71 75 61 | 6e 74 69 74 69 65 73 20 |erts qua|ntities |
|00004030| 74 6f 20 34 2d 62 79 74 | 65 20 6d 75 6c 74 69 70 |to 4-byt|e multip|
|00004040| 6c 65 73 20 77 68 65 6e | 20 64 65 73 65 72 69 61 |les when| deseria|
|00004050| 6c 69 7a 69 6e 67 2e 0a | 58 54 68 75 73 2c 20 69 |lizing..|XThus, i|
|00004060| 66 20 65 69 74 68 65 72 | 20 6f 66 20 74 68 65 20 |f either| of the |
|00004070| 65 78 61 6d 70 6c 65 73 | 20 61 62 6f 76 65 20 69 |examples| above i|
|00004080| 6e 76 6f 6c 76 65 64 20 | 63 68 61 72 61 63 74 65 |nvolved |characte|
|00004090| 72 73 0a 58 69 6e 73 74 | 65 61 64 20 6f 66 20 69 |rs.Xinst|ead of i|
|000040a0| 6e 74 65 67 65 72 73 2c | 20 65 61 63 68 20 63 68 |ntegers,| each ch|
|000040b0| 61 72 61 63 74 65 72 20 | 77 6f 75 6c 64 20 6f 63 |aracter |would oc|
|000040c0| 63 75 70 79 20 33 32 20 | 62 69 74 73 2e 0a 58 54 |cupy 32 |bits..XT|
|000040d0| 68 61 74 20 69 73 20 74 | 68 65 20 72 65 61 73 6f |hat is t|he reaso|
|000040e0| 6e 20 66 6f 72 20 74 68 | 65 20 58 44 52 20 72 6f |n for th|e XDR ro|
|000040f0| 75 74 69 6e 65 0a 58 2e | 4c 57 20 78 64 72 5f 62 |utine.X.|LW xdr_b|
|00004100| 79 74 65 73 28 29 20 2c | 0a 58 77 68 69 63 68 20 |ytes() ,|.Xwhich |
|00004110| 69 73 20 6c 69 6b 65 0a | 58 2e 4c 57 20 78 64 72 |is like.|X.LW xdr|
|00004120| 5f 61 72 72 61 79 28 29 | 0a 58 65 78 63 65 70 74 |_array()|.Xexcept|
|00004130| 20 74 68 61 74 20 69 74 | 20 70 61 63 6b 73 20 63 | that it| packs c|
|00004140| 68 61 72 61 63 74 65 72 | 73 3b 0a 58 2e 4c 57 20 |haracter|s;.X.LW |
|00004150| 78 64 72 5f 62 79 74 65 | 73 28 29 0a 58 68 61 73 |xdr_byte|s().Xhas|
|00004160| 20 66 6f 75 72 20 70 61 | 72 61 6d 65 74 65 72 73 | four pa|rameters|
|00004170| 2c 20 73 69 6d 69 6c 61 | 72 20 74 6f 20 74 68 65 |, simila|r to the|
|00004180| 20 66 69 72 73 74 20 66 | 6f 75 72 20 70 61 72 61 | first f|our para|
|00004190| 6d 65 74 65 72 73 20 6f | 66 0a 58 2e 4c 57 20 78 |meters o|f.X.LW x|
|000041a0| 64 72 5f 61 72 72 61 79 | 28 29 20 2e 0a 58 46 6f |dr_array|() ..XFo|
|000041b0| 72 20 6e 75 6c 6c 2d 74 | 65 72 6d 69 6e 61 74 65 |r null-t|erminate|
|000041c0| 64 20 73 74 72 69 6e 67 | 73 2c 20 74 68 65 72 65 |d string|s, there|
|000041d0| 20 69 73 20 61 6c 73 6f | 20 74 68 65 0a 58 2e 4c | is also| the.X.L|
|000041e0| 57 20 78 64 72 5f 73 74 | 72 69 6e 67 28 29 0a 58 |W xdr_st|ring().X|
|000041f0| 72 6f 75 74 69 6e 65 2c | 20 77 68 69 63 68 20 69 |routine,| which i|
|00004200| 73 20 74 68 65 20 73 61 | 6d 65 20 61 73 0a 58 2e |s the sa|me as.X.|
|00004210| 4c 57 20 78 64 72 5f 62 | 79 74 65 73 28 29 0a 58 |LW xdr_b|ytes().X|
|00004220| 77 69 74 68 6f 75 74 20 | 74 68 65 20 6c 65 6e 67 |without |the leng|
|00004230| 74 68 20 70 61 72 61 6d | 65 74 65 72 2e 0a 58 4f |th param|eter..XO|
|00004240| 6e 20 73 65 72 69 61 6c | 69 7a 69 6e 67 20 69 74 |n serial|izing it|
|00004250| 20 67 65 74 73 20 74 68 | 65 20 73 74 72 69 6e 67 | gets th|e string|
|00004260| 20 6c 65 6e 67 74 68 20 | 66 72 6f 6d 0a 58 2e 4c | length |from.X.L|
|00004270| 57 20 73 74 72 6c 65 6e | 28 29 20 2c 0a 58 61 6e |W strlen|() ,.Xan|
|00004280| 64 20 6f 6e 20 64 65 73 | 65 72 69 61 6c 69 7a 69 |d on des|erializi|
|00004290| 6e 67 20 69 74 20 63 72 | 65 61 74 65 73 20 61 20 |ng it cr|eates a |
|000042a0| 6e 75 6c 6c 2d 74 65 72 | 6d 69 6e 61 74 65 64 20 |null-ter|minated |
|000042b0| 73 74 72 69 6e 67 2e 0a | 58 2e 4c 50 0a 58 48 65 |string..|X.LP.XHe|
|000042c0| 72 65 20 69 73 20 61 20 | 66 69 6e 61 6c 20 65 78 |re is a |final ex|
|000042d0| 61 6d 70 6c 65 20 74 68 | 61 74 20 63 61 6c 6c 73 |ample th|at calls|
|000042e0| 20 74 68 65 20 70 72 65 | 76 69 6f 75 73 6c 79 20 | the pre|viously |
|000042f0| 77 72 69 74 74 65 6e 0a | 58 2e 4c 57 20 78 64 72 |written.|X.LW xdr|
|00004300| 5f 73 69 6d 70 6c 65 28 | 29 0a 58 61 73 20 77 65 |_simple(|).Xas we|
|00004310| 6c 6c 20 61 73 20 74 68 | 65 20 62 75 69 6c 74 2d |ll as th|e built-|
|00004320| 69 6e 20 66 75 6e 63 74 | 69 6f 6e 73 0a 58 2e 4c |in funct|ions.X.L|
|00004330| 57 20 78 64 72 5f 73 74 | 72 69 6e 67 28 29 0a 58 |W xdr_st|ring().X|
|00004340| 61 6e 64 0a 58 2e 4c 57 | 20 78 64 72 5f 72 65 66 |and.X.LW| xdr_ref|
|00004350| 65 72 65 6e 63 65 28 29 | 20 2c 0a 58 77 68 69 63 |erence()| ,.Xwhic|
|00004360| 68 20 63 68 61 73 65 73 | 20 70 6f 69 6e 74 65 72 |h chases| pointer|
|00004370| 73 3a 0a 58 2e 42 53 0a | 58 2e 4c 53 0a 58 73 74 |s:.X.BS.|X.LS.Xst|
|00004380| 72 75 63 74 20 66 69 6e | 61 6c 65 78 61 6d 70 6c |ruct fin|alexampl|
|00004390| 65 20 7b 0a 58 09 63 68 | 61 72 20 2a 73 74 72 69 |e {.X.ch|ar *stri|
|000043a0| 6e 67 3b 0a 58 09 73 74 | 72 75 63 74 20 73 69 6d |ng;.X.st|ruct sim|
|000043b0| 70 6c 65 20 2a 73 69 6d | 70 6c 65 70 3b 0a 58 7d |ple *sim|plep;.X}|
|000043c0| 20 66 69 6e 61 6c 65 78 | 61 6d 70 6c 65 3b 0a 58 | finalex|ample;.X|
|000043d0| 2e 73 70 2e 35 0a 58 78 | 64 72 5f 66 69 6e 61 6c |.sp.5.Xx|dr_final|
|000043e0| 65 78 61 6d 70 6c 65 28 | 78 64 72 73 70 2c 20 66 |example(|xdrsp, f|
|000043f0| 69 6e 61 6c 70 29 0a 58 | 09 58 44 52 20 2a 78 64 |inalp).X|.XDR *xd|
|00004400| 72 73 70 3b 0a 58 09 73 | 74 72 75 63 74 20 66 69 |rsp;.X.s|truct fi|
|00004410| 6e 61 6c 65 78 61 6d 70 | 6c 65 20 2a 66 69 6e 61 |nalexamp|le *fina|
|00004420| 6c 70 3b 0a 58 7b 0a 58 | 09 69 6e 74 20 69 3b 0a |lp;.X{.X|.int i;.|
|00004430| 58 2e 73 70 2e 35 0a 58 | 09 69 66 20 28 21 78 64 |X.sp.5.X|.if (!xd|
|00004440| 72 5f 73 74 72 69 6e 67 | 28 78 64 72 73 70 2c 20 |r_string|(xdrsp, |
|00004450| 26 66 69 6e 61 6c 70 2d | 3e 73 74 72 69 6e 67 2c |&finalp-|>string,|
|00004460| 20 4d 41 58 53 54 52 4c | 45 4e 29 29 0a 58 09 09 | MAXSTRL|EN)).X..|
|00004470| 72 65 74 75 72 6e 20 28 | 30 29 3b 0a 58 09 69 66 |return (|0);.X.if|
|00004480| 20 28 21 78 64 72 5f 72 | 65 66 65 72 65 6e 63 65 | (!xdr_r|eference|
|00004490| 28 78 64 72 73 70 2c 20 | 26 66 69 6e 61 6c 70 2d |(xdrsp, |&finalp-|
|000044a0| 3e 73 69 6d 70 6c 65 70 | 2c 0a 58 09 20 20 73 69 |>simplep|,.X. si|
|000044b0| 7a 65 6f 66 28 73 74 72 | 75 63 74 20 73 69 6d 70 |zeof(str|uct simp|
|000044c0| 6c 65 29 2c 20 78 64 72 | 5f 73 69 6d 70 6c 65 29 |le), xdr|_simple)|
|000044d0| 3b 0a 58 09 09 72 65 74 | 75 72 6e 20 28 30 29 3b |;.X..ret|urn (0);|
|000044e0| 0a 58 09 72 65 74 75 72 | 6e 20 28 31 29 3b 0a 58 |.X.retur|n (1);.X|
|000044f0| 7d 0a 58 2e 4c 66 0a 58 | 2e 42 45 0a 58 2e 62 70 |}.X.Lf.X|.BE.X.bp|
|00004500| 0a 58 2e 4e 48 0a 58 4c | 6f 77 65 73 74 20 4c 61 |.X.NH.XL|owest La|
|00004510| 79 65 72 20 6f 66 20 52 | 50 43 0a 58 2e 4c 50 0a |yer of R|PC.X.LP.|
|00004520| 58 49 6e 20 74 68 65 20 | 65 78 61 6d 70 6c 65 73 |XIn the |examples|
|00004530| 20 67 69 76 65 6e 20 73 | 6f 20 66 61 72 2c 0a 58 | given s|o far,.X|
|00004540| 52 50 43 20 74 61 6b 65 | 73 20 63 61 72 65 20 6f |RPC take|s care o|
|00004550| 66 20 6d 61 6e 79 20 64 | 65 74 61 69 6c 73 20 61 |f many d|etails a|
|00004560| 75 74 6f 6d 61 74 69 63 | 61 6c 6c 79 20 66 6f 72 |utomatic|ally for|
|00004570| 20 79 6f 75 2e 0a 58 49 | 6e 20 74 68 69 73 20 73 | you..XI|n this s|
|00004580| 65 63 74 69 6f 6e 2c 20 | 77 65 27 6c 6c 20 73 68 |ection, |we'll sh|
|00004590| 6f 77 20 79 6f 75 20 68 | 6f 77 20 79 6f 75 20 63 |ow you h|ow you c|
|000045a0| 61 6e 20 63 68 61 6e 67 | 65 20 74 68 65 20 64 65 |an chang|e the de|
|000045b0| 66 61 75 6c 74 73 0a 58 | 62 79 20 75 73 69 6e 67 |faults.X|by using|
|000045c0| 20 6c 6f 77 65 72 20 6c | 61 79 65 72 73 20 6f 66 | lower l|ayers of|
|000045d0| 20 74 68 65 20 52 50 43 | 20 6c 69 62 72 61 72 79 | the RPC| library|
|000045e0| 2e 0a 58 49 74 20 69 73 | 20 61 73 73 75 6d 65 64 |..XIt is| assumed|
|000045f0| 20 74 68 61 74 20 79 6f | 75 20 61 72 65 20 66 61 | that yo|u are fa|
|00004600| 6d 69 6c 69 61 72 20 77 | 69 74 68 20 73 6f 63 6b |miliar w|ith sock|
|00004610| 65 74 73 0a 58 61 6e 64 | 20 74 68 65 20 73 79 73 |ets.Xand| the sys|
|00004620| 74 65 6d 20 63 61 6c 6c | 73 20 66 6f 72 20 64 65 |tem call|s for de|
|00004630| 61 6c 69 6e 67 20 77 69 | 74 68 20 74 68 65 6d 2e |aling wi|th them.|
|00004640| 0a 58 49 66 20 6e 6f 74 | 2c 20 63 6f 6e 73 75 6c |.XIf not|, consul|
|00004650| 74 20 74 68 65 0a 58 2e | 49 20 22 49 50 43 20 50 |t the.X.|I "IPC P|
|00004660| 72 69 6d 65 72 22 20 2e | 0a 58 2e 4c 50 0a 58 54 |rimer" .|.X.LP.XT|
|00004670| 68 65 72 65 20 61 72 65 | 20 73 65 76 65 72 61 6c |here are| several|
|00004680| 20 6f 63 63 61 73 69 6f | 6e 73 20 77 68 65 6e 20 | occasio|ns when |
|00004690| 79 6f 75 20 6d 61 79 20 | 6e 65 65 64 20 74 6f 20 |you may |need to |
|000046a0| 75 73 65 20 6c 6f 77 65 | 72 20 6c 61 79 65 72 73 |use lowe|r layers|
|000046b0| 20 6f 66 20 52 50 43 2e | 0a 58 46 69 72 73 74 2c | of RPC.|.XFirst,|
|000046c0| 20 79 6f 75 20 6d 61 79 | 20 6e 65 65 64 20 74 6f | you may| need to|
|000046d0| 20 75 73 65 20 54 43 50 | 2e 0a 58 54 68 65 20 68 | use TCP|..XThe h|
|000046e0| 69 67 68 65 72 20 6c 61 | 79 65 72 20 75 73 65 73 |igher la|yer uses|
|000046f0| 20 55 44 50 2c 0a 58 77 | 68 69 63 68 20 72 65 73 | UDP,.Xw|hich res|
|00004700| 74 72 69 63 74 73 20 52 | 50 43 20 63 61 6c 6c 73 |tricts R|PC calls|
|00004710| 20 74 6f 20 38 4b 20 62 | 79 74 65 73 20 6f 66 20 | to 8K b|ytes of |
|00004720| 64 61 74 61 2e 0a 58 55 | 73 69 6e 67 20 54 43 50 |data..XU|sing TCP|
|00004730| 20 70 65 72 6d 69 74 73 | 20 63 61 6c 6c 73 20 74 | permits| calls t|
|00004740| 6f 20 73 65 6e 64 20 6c | 6f 6e 67 20 73 74 72 65 |o send l|ong stre|
|00004750| 61 6d 73 20 6f 66 20 64 | 61 74 61 2e 0a 58 46 6f |ams of d|ata..XFo|
|00004760| 72 20 61 6e 20 65 78 61 | 6d 70 6c 65 2c 20 73 65 |r an exa|mple, se|
|00004770| 65 20 73 65 63 74 69 6f | 6e 20 35 2e 32 20 62 65 |e sectio|n 5.2 be|
|00004780| 6c 6f 77 2e 0a 58 53 65 | 63 6f 6e 64 2c 20 79 6f |low..XSe|cond, yo|
|00004790| 75 20 6d 61 79 20 77 61 | 6e 74 20 74 6f 20 61 6c |u may wa|nt to al|
|000047a0| 6c 6f 63 61 74 65 20 61 | 6e 64 20 66 72 65 65 20 |locate a|nd free |
|000047b0| 6d 65 6d 6f 72 79 0a 58 | 77 68 69 6c 65 20 73 65 |memory.X|while se|
|000047c0| 72 69 61 6c 69 7a 69 6e | 67 20 6f 72 20 64 65 73 |rializin|g or des|
|000047d0| 65 72 69 61 6c 69 7a 69 | 6e 67 20 77 69 74 68 20 |erializi|ng with |
|000047e0| 58 44 52 20 72 6f 75 74 | 69 6e 65 73 2e 0a 58 54 |XDR rout|ines..XT|
|000047f0| 68 65 72 65 20 69 73 20 | 6e 6f 20 63 61 6c 6c 20 |here is |no call |
|00004800| 61 74 20 74 68 65 20 68 | 69 67 68 65 72 20 6c 65 |at the h|igher le|
|00004810| 76 65 6c 20 74 6f 20 6c | 65 74 20 79 6f 75 20 66 |vel to l|et you f|
|00004820| 72 65 65 20 6d 65 6d 6f | 72 79 20 65 78 70 6c 69 |ree memo|ry expli|
|00004830| 63 69 74 6c 79 2e 0a 58 | 46 6f 72 20 6d 6f 72 65 |citly..X|For more|
|00004840| 20 65 78 70 6c 61 6e 61 | 74 69 6f 6e 2c 20 73 65 | explana|tion, se|
|00004850| 65 20 73 65 63 74 69 6f | 6e 20 33 2e 32 20 62 65 |e sectio|n 3.2 be|
|00004860| 6c 6f 77 2e 0a 58 54 68 | 69 72 64 2c 20 79 6f 75 |low..XTh|ird, you|
|00004870| 20 6d 61 79 20 6e 65 65 | 64 20 74 6f 20 70 65 72 | may nee|d to per|
|00004880| 66 6f 72 6d 20 61 75 74 | 68 65 6e 74 69 63 61 74 |form aut|henticat|
|00004890| 69 6f 6e 0a 58 6f 6e 20 | 65 69 74 68 65 72 20 74 |ion.Xon |either t|
|000048a0| 68 65 20 63 6c 69 65 6e | 74 20 6f 72 20 73 65 72 |he clien|t or ser|
|000048b0| 76 65 72 20 73 69 64 65 | 2c 0a 58 62 79 20 73 75 |ver side|,.Xby su|
|000048c0| 70 70 6c 79 69 6e 67 20 | 63 72 65 64 65 6e 74 69 |pplying |credenti|
|000048d0| 61 6c 73 20 6f 72 20 76 | 65 72 69 66 79 69 6e 67 |als or v|erifying|
|000048e0| 20 74 68 65 6d 2e 0a 58 | 53 65 65 20 74 68 65 20 | them..X|See the |
|000048f0| 65 78 70 6c 61 6e 61 74 | 69 6f 6e 20 69 6e 20 73 |explanat|ion in s|
|00004900| 65 63 74 69 6f 6e 20 34 | 2e 34 20 62 65 6c 6f 77 |ection 4|.4 below|
|00004910| 2e 0a 58 2e 4e 48 20 32 | 0a 58 4d 6f 72 65 20 6f |..X.NH 2|.XMore o|
|00004920| 6e 20 74 68 65 20 53 65 | 72 76 65 72 20 53 69 64 |n the Se|rver Sid|
|00004930| 65 0a 58 2e 4c 50 0a 58 | 54 68 65 20 73 65 72 76 |e.X.LP.X|The serv|
|00004940| 65 72 20 66 6f 72 20 74 | 68 65 0a 58 2e 4c 57 20 |er for t|he.X.LW |
|00004950| 6e 75 73 65 72 73 0a 58 | 70 72 6f 67 72 61 6d 20 |nusers.X|program |
|00004960| 73 68 6f 77 6e 20 62 65 | 6c 6f 77 20 64 6f 65 73 |shown be|low does|
|00004970| 20 74 68 65 20 73 61 6d | 65 20 74 68 69 6e 67 20 | the sam|e thing |
|00004980| 61 73 20 74 68 65 20 6f | 6e 65 20 75 73 69 6e 67 |as the o|ne using|
|00004990| 0a 58 2e 4c 57 20 72 65 | 67 69 73 74 65 72 72 70 |.X.LW re|gisterrp|
|000049a0| 63 28 29 0a 58 61 62 6f | 76 65 2c 20 62 75 74 20 |c().Xabo|ve, but |
|000049b0| 69 73 20 77 72 69 74 74 | 65 6e 20 75 73 69 6e 67 |is writt|en using|
|000049c0| 20 61 20 6c 6f 77 65 72 | 20 6c 61 79 65 72 20 6f | a lower| layer o|
|000049d0| 66 20 74 68 65 20 52 50 | 43 20 70 61 63 6b 61 67 |f the RP|C packag|
|000049e0| 65 3a 0a 58 2e 42 53 0a | 58 2e 4c 53 20 6e 6f 0a |e:.X.BS.|X.LS no.|
|000049f0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 69 6f |X#includ|e <stdio|
|00004a00| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 72 |.h>.X#in|clude <r|
|00004a10| 70 63 2f 72 70 63 2e 68 | 3e 0a 58 23 69 6e 63 6c |pc/rpc.h|>.X#incl|
|00004a20| 75 64 65 20 3c 72 70 63 | 73 76 63 2f 72 75 73 65 |ude <rpc|svc/ruse|
|00004a30| 72 73 2e 68 3e 0a 58 2e | 73 70 2e 35 0a 58 6d 61 |rs.h>.X.|sp.5.Xma|
|00004a40| 69 6e 28 29 0a 58 7b 0a | 58 09 53 56 43 58 50 52 |in().X{.|X.SVCXPR|
|00004a50| 54 20 2a 74 72 61 6e 73 | 70 3b 0a 58 09 69 6e 74 |T *trans|p;.X.int|
|00004a60| 20 6e 75 73 65 72 28 29 | 3b 0a 58 2e 73 70 2e 35 | nuser()|;.X.sp.5|
|00004a70| 0a 58 09 74 72 61 6e 73 | 70 20 3d 20 73 76 63 75 |.X.trans|p = svcu|
|00004a80| 64 70 5f 63 72 65 61 74 | 65 28 52 50 43 5f 41 4e |dp_creat|e(RPC_AN|
|00004a90| 59 53 4f 43 4b 29 3b 0a | 58 09 69 66 20 28 74 72 |YSOCK);.|X.if (tr|
|00004aa0| 61 6e 73 70 20 3d 3d 20 | 4e 55 4c 4c 29 7b 0a 58 |ansp == |NULL){.X|
|00004ab0| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00004ac0| 2c 20 22 63 61 6e 27 74 | 20 63 72 65 61 74 65 20 |, "can't| create |
|00004ad0| 61 6e 20 52 50 43 20 73 | 65 72 76 65 72 5c 65 6e |an RPC s|erver\en|
|00004ae0| 22 29 3b 0a 58 09 09 65 | 78 69 74 28 31 29 3b 0a |");.X..e|xit(1);.|
|00004af0| 58 09 7d 0a 58 09 70 6d | 61 70 5f 75 6e 73 65 74 |X.}.X.pm|ap_unset|
|00004b00| 28 52 55 53 45 52 53 50 | 52 4f 47 2c 20 52 55 53 |(RUSERSP|ROG, RUS|
|00004b10| 45 52 53 56 45 52 53 29 | 3b 0a 58 09 69 66 20 28 |ERSVERS)|;.X.if (|
|00004b20| 21 73 76 63 5f 72 65 67 | 69 73 74 65 72 28 74 72 |!svc_reg|ister(tr|
|00004b30| 61 6e 73 70 2c 20 52 55 | 53 45 52 53 50 52 4f 47 |ansp, RU|SERSPROG|
|00004b40| 2c 20 52 55 53 45 52 53 | 56 45 52 53 2c 0a 58 09 |, RUSERS|VERS,.X.|
|00004b50| 09 09 20 20 6e 75 73 65 | 72 2c 20 49 50 50 52 4f |.. nuse|r, IPPRO|
|00004b60| 54 4f 5f 55 44 50 29 29 | 20 7b 0a 58 09 09 66 70 |TO_UDP))| {.X..fp|
|00004b70| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 63 |rintf(st|derr, "c|
|00004b80| 61 6e 27 74 20 72 65 67 | 69 73 74 65 72 20 52 55 |an't reg|ister RU|
|00004b90| 53 45 52 20 73 65 72 76 | 69 63 65 5c 65 6e 22 29 |SER serv|ice\en")|
|00004ba0| 3b 0a 58 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |;.X..exi|t(1);.X.|
|00004bb0| 7d 0a 58 09 73 76 63 5f | 72 75 6e 28 29 3b 20 20 |}.X.svc_|run(); |
|00004bc0| 2f 2a 20 6e 65 76 65 72 | 20 72 65 74 75 72 6e 73 |/* never| returns|
|00004bd0| 20 2a 2f 0a 58 09 66 70 | 72 69 6e 74 66 28 73 74 | */.X.fp|rintf(st|
|00004be0| 64 65 72 72 2c 20 22 73 | 68 6f 75 6c 64 20 6e 65 |derr, "s|hould ne|
|00004bf0| 76 65 72 20 72 65 61 63 | 68 20 74 68 69 73 20 70 |ver reac|h this p|
|00004c00| 6f 69 6e 74 5c 65 6e 22 | 29 3b 0a 58 7d 0a 58 2e |oint\en"|);.X}.X.|
|00004c10| 73 70 2e 35 0a 58 6e 75 | 73 65 72 28 72 71 73 74 |sp.5.Xnu|ser(rqst|
|00004c20| 70 2c 20 74 72 61 6e 70 | 29 0a 58 09 73 74 72 75 |p, tranp|).X.stru|
|00004c30| 63 74 20 73 76 63 5f 72 | 65 71 20 2a 72 71 73 74 |ct svc_r|eq *rqst|
|00004c40| 70 3b 0a 58 09 53 56 43 | 58 50 52 54 20 2a 74 72 |p;.X.SVC|XPRT *tr|
|00004c50| 61 6e 73 70 3b 0a 58 7b | 0a 58 09 75 6e 73 69 67 |ansp;.X{|.X.unsig|
|00004c60| 6e 65 64 20 6c 6f 6e 67 | 20 6e 75 73 65 72 73 3b |ned long| nusers;|
|00004c70| 0a 58 2e 73 70 2e 35 0a | 58 09 73 77 69 74 63 68 |.X.sp.5.|X.switch|
|00004c80| 20 28 72 71 73 74 70 2d | 3e 72 71 5f 70 72 6f 63 | (rqstp-|>rq_proc|
|00004c90| 29 20 7b 0a 58 09 63 61 | 73 65 20 4e 55 4c 4c 50 |) {.X.ca|se NULLP|
|00004ca0| 52 4f 43 3a 0a 58 09 09 | 69 66 20 28 21 73 76 63 |ROC:.X..|if (!svc|
|00004cb0| 5f 73 65 6e 64 72 65 70 | 6c 79 28 74 72 61 6e 73 |_sendrep|ly(trans|
|00004cc0| 70 2c 20 78 64 72 5f 76 | 6f 69 64 2c 20 30 29 29 |p, xdr_v|oid, 0))|
|00004cd0| 20 7b 0a 58 09 09 09 66 | 70 72 69 6e 74 66 28 73 | {.X...f|printf(s|
|00004ce0| 74 64 65 72 72 2c 20 22 | 63 61 6e 27 74 20 72 65 |tderr, "|can't re|
|00004cf0| 70 6c 79 20 74 6f 20 52 | 50 43 20 63 61 6c 6c 5c |ply to R|PC call\|
|00004d00| 65 6e 22 29 3b 0a 58 09 | 09 09 65 78 69 74 28 31 |en");.X.|..exit(1|
|00004d10| 29 3b 0a 58 09 09 7d 0a | 58 09 09 72 65 74 75 72 |);.X..}.|X..retur|
|00004d20| 6e 3b 0a 58 09 63 61 73 | 65 20 52 55 53 45 52 53 |n;.X.cas|e RUSERS|
|00004d30| 50 52 4f 43 5f 4e 55 4d | 3a 0a 58 09 09 2f 2a 0a |PROC_NUM|:.X../*.|
|00004d40| 58 09 09 20 2a 20 63 6f | 64 65 20 68 65 72 65 20 |X.. * co|de here |
|00004d50| 74 6f 20 63 6f 6d 70 75 | 74 65 20 74 68 65 20 6e |to compu|te the n|
|00004d60| 75 6d 62 65 72 20 6f 66 | 20 75 73 65 72 73 0a 58 |umber of| users.X|
|00004d70| 09 09 20 2a 20 61 6e 64 | 20 70 75 74 20 69 6e 20 |.. * and| put in |
|00004d80| 76 61 72 69 61 62 6c 65 | 20 6e 75 73 65 72 73 0a |variable| nusers.|
|00004d90| 58 09 09 20 2a 2f 0a 58 | 09 09 69 66 20 28 21 73 |X.. */.X|..if (!s|
|00004da0| 76 63 5f 73 65 6e 64 72 | 65 70 6c 79 28 74 72 61 |vc_sendr|eply(tra|
|00004db0| 6e 73 70 2c 20 78 64 72 | 5f 75 5f 6c 6f 6e 67 2c |nsp, xdr|_u_long,|
|00004dc0| 20 26 6e 75 73 65 72 73 | 29 20 7b 0a 58 09 09 09 | &nusers|) {.X...|
|00004dd0| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |fprintf(|stderr, |
|00004de0| 22 63 61 6e 27 74 20 72 | 65 70 6c 79 20 74 6f 20 |"can't r|eply to |
|00004df0| 52 50 43 20 63 61 6c 6c | 5c 65 6e 22 29 3b 0a 58 |RPC call|\en");.X|
|00004e00| 09 09 09 65 78 69 74 28 | 31 29 3b 0a 58 09 09 7d |...exit(|1);.X..}|
|00004e10| 0a 58 09 09 72 65 74 75 | 72 6e 3b 0a 58 09 64 65 |.X..retu|rn;.X.de|
|00004e20| 66 61 75 6c 74 3a 0a 58 | 09 09 73 76 63 65 72 72 |fault:.X|..svcerr|
|00004e30| 5f 6e 6f 70 72 6f 63 28 | 74 72 61 6e 73 70 29 3b |_noproc(|transp);|
|00004e40| 0a 58 09 09 72 65 74 75 | 72 6e 3b 0a 58 09 7d 0a |.X..retu|rn;.X.}.|
|00004e50| 58 7d 0a 58 2e 4c 66 0a | 58 2e 42 45 0a 58 2e 4c |X}.X.Lf.|X.BE.X.L|
|00004e60| 50 0a 58 46 69 72 73 74 | 2c 20 74 68 65 20 73 65 |P.XFirst|, the se|
|00004e70| 72 76 65 72 20 67 65 74 | 73 20 61 20 74 72 61 6e |rver get|s a tran|
|00004e80| 73 70 6f 72 74 20 68 61 | 6e 64 6c 65 2c 20 77 68 |sport ha|ndle, wh|
|00004e90| 69 63 68 20 69 73 20 75 | 73 65 64 0a 58 66 6f 72 |ich is u|sed.Xfor|
|00004ea0| 20 73 65 6e 64 69 6e 67 | 20 6f 75 74 20 52 50 43 | sending| out RPC|
|00004eb0| 20 6d 65 73 73 61 67 65 | 73 2e 0a 58 2e 4c 57 20 | message|s..X.LW |
|00004ec0| 72 65 67 69 73 74 65 72 | 72 70 63 28 29 0a 58 75 |register|rpc().Xu|
|00004ed0| 73 65 73 0a 58 2e 4c 57 | 20 73 76 63 75 64 70 5f |ses.X.LW| svcudp_|
|00004ee0| 63 72 65 61 74 65 28 29 | 0a 58 74 6f 20 67 65 74 |create()|.Xto get|
|00004ef0| 20 61 20 55 44 50 20 68 | 61 6e 64 6c 65 2e 0a 58 | a UDP h|andle..X|
|00004f00| 49 66 20 79 6f 75 20 72 | 65 71 75 69 72 65 20 61 |If you r|equire a|
|00004f10| 20 72 65 6c 69 61 62 6c | 65 20 70 72 6f 74 6f 63 | reliabl|e protoc|
|00004f20| 6f 6c 2c 20 63 61 6c 6c | 0a 58 2e 4c 57 20 73 76 |ol, call|.X.LW sv|
|00004f30| 63 74 63 70 5f 63 72 65 | 61 74 65 28 29 0a 58 69 |ctcp_cre|ate().Xi|
|00004f40| 6e 73 74 65 61 64 2e 0a | 58 49 66 20 74 68 65 20 |nstead..|XIf the |
|00004f50| 61 72 67 75 6d 65 6e 74 | 20 74 6f 0a 58 2e 4c 57 |argument| to.X.LW|
|00004f60| 20 73 76 63 75 64 70 5f | 63 72 65 61 74 65 28 29 | svcudp_|create()|
|00004f70| 0a 58 69 73 0a 58 2e 4c | 57 20 52 50 43 5f 41 4e |.Xis.X.L|W RPC_AN|
|00004f80| 59 53 4f 43 4b 20 2c 0a | 58 74 68 65 20 52 50 43 |YSOCK ,.|Xthe RPC|
|00004f90| 20 6c 69 62 72 61 72 79 | 20 63 72 65 61 74 65 73 | library| creates|
|00004fa0| 20 61 20 73 6f 63 6b 65 | 74 0a 58 6f 6e 20 77 68 | a socke|t.Xon wh|
|00004fb0| 69 63 68 20 74 6f 20 73 | 65 6e 64 20 6f 75 74 20 |ich to s|end out |
|00004fc0| 52 50 43 20 63 61 6c 6c | 73 2e 0a 58 4f 74 68 65 |RPC call|s..XOthe|
|00004fd0| 72 77 69 73 65 2c 0a 58 | 2e 4c 57 20 73 76 63 75 |rwise,.X|.LW svcu|
|00004fe0| 64 70 5f 63 72 65 61 74 | 65 28 29 0a 58 65 78 70 |dp_creat|e().Xexp|
|00004ff0| 65 63 74 73 20 69 74 73 | 20 61 72 67 75 6d 65 6e |ects its| argumen|
|00005000| 74 20 74 6f 20 62 65 20 | 61 20 76 61 6c 69 64 20 |t to be |a valid |
|00005010| 73 6f 63 6b 65 74 20 6e | 75 6d 62 65 72 2e 0a 58 |socket n|umber..X|
|00005020| 49 66 20 79 6f 75 20 73 | 70 65 63 69 66 79 20 79 |If you s|pecify y|
|00005030| 6f 75 72 20 6f 77 6e 20 | 73 6f 63 6b 65 74 2c 20 |our own |socket, |
|00005040| 69 74 20 63 61 6e 20 62 | 65 20 62 6f 75 6e 64 20 |it can b|e bound |
|00005050| 6f 72 20 75 6e 62 6f 75 | 6e 64 2e 0a 58 49 66 20 |or unbou|nd..XIf |
|00005060| 69 74 20 69 73 20 62 6f | 75 6e 64 20 74 6f 20 61 |it is bo|und to a|
|00005070| 20 70 6f 72 74 20 62 79 | 20 74 68 65 20 75 73 65 | port by| the use|
|00005080| 72 2c 20 74 68 65 20 70 | 6f 72 74 20 6e 75 6d 62 |r, the p|ort numb|
|00005090| 65 72 73 20 6f 66 0a 58 | 2e 4c 57 20 73 76 63 75 |ers of.X|.LW svcu|
|000050a0| 64 70 5f 63 72 65 61 74 | 65 28 29 0a 58 61 6e 64 |dp_creat|e().Xand|
|000050b0| 0a 58 2e 4c 57 20 63 6c | 6e 74 75 64 70 5f 63 72 |.X.LW cl|ntudp_cr|
|000050c0| 65 61 74 65 28 29 0a 58 | 28 74 68 65 20 6c 6f 77 |eate().X|(the low|
|000050d0| 2d 6c 65 76 65 6c 20 63 | 6c 69 65 6e 74 20 72 6f |-level c|lient ro|
|000050e0| 75 74 69 6e 65 29 20 6d | 75 73 74 20 6d 61 74 63 |utine) m|ust matc|
|000050f0| 68 2e 0a 58 2e 4c 50 0a | 58 57 68 65 6e 20 74 68 |h..X.LP.|XWhen th|
|00005100| 65 20 75 73 65 72 20 73 | 70 65 63 69 66 69 65 73 |e user s|pecifies|
|00005110| 0a 58 2e 4c 57 20 52 50 | 43 5f 41 4e 59 53 4f 43 |.X.LW RP|C_ANYSOC|
|00005120| 4b 0a 58 66 6f 72 20 61 | 20 73 6f 63 6b 65 74 20 |K.Xfor a| socket |
|00005130| 6f 72 20 67 69 76 65 73 | 20 61 6e 20 75 6e 62 6f |or gives| an unbo|
|00005140| 75 6e 64 20 73 6f 63 6b | 65 74 2c 0a 58 74 68 65 |und sock|et,.Xthe|
|00005150| 20 73 79 73 74 65 6d 20 | 64 65 74 65 72 6d 69 6e | system |determin|
|00005160| 65 73 20 70 6f 72 74 20 | 6e 75 6d 62 65 72 73 20 |es port |numbers |
|00005170| 69 6e 20 74 68 65 20 66 | 6f 6c 6c 6f 77 69 6e 67 |in the f|ollowing|
|00005180| 20 77 61 79 3a 0a 58 77 | 68 65 6e 20 61 20 73 65 | way:.Xw|hen a se|
|00005190| 72 76 65 72 20 73 74 61 | 72 74 73 20 75 70 2c 0a |rver sta|rts up,.|
|000051a0| 58 69 74 20 61 64 76 65 | 72 74 69 73 65 73 20 74 |Xit adve|rtises t|
|000051b0| 6f 20 61 20 70 6f 72 74 | 20 6d 61 70 70 65 72 20 |o a port| mapper |
|000051c0| 64 65 6d 6f 6e 20 6f 6e | 20 69 74 73 20 6c 6f 63 |demon on| its loc|
|000051d0| 61 6c 20 6d 61 63 68 69 | 6e 65 2c 0a 58 77 68 69 |al machi|ne,.Xwhi|
|000051e0| 63 68 20 70 69 63 6b 73 | 20 61 20 70 6f 72 74 20 |ch picks| a port |
|000051f0| 6e 75 6d 62 65 72 20 66 | 6f 72 20 74 68 65 20 52 |number f|or the R|
|00005200| 50 43 20 70 72 6f 63 65 | 64 75 72 65 0a 58 69 66 |PC proce|dure.Xif|
|00005210| 20 74 68 65 20 73 6f 63 | 6b 65 74 20 73 70 65 63 | the soc|ket spec|
|00005220| 69 66 69 65 64 20 74 6f | 0a 58 2e 4c 57 20 73 76 |ified to|.X.LW sv|
|00005230| 63 75 64 70 5f 63 72 65 | 61 74 65 28 29 0a 58 69 |cudp_cre|ate().Xi|
|00005240| 73 6e 27 74 20 61 6c 72 | 65 61 64 79 20 62 6f 75 |sn't alr|eady bou|
|00005250| 6e 64 2e 0a 58 57 68 65 | 6e 20 74 68 65 0a 58 2e |nd..XWhe|n the.X.|
|00005260| 4c 57 20 63 6c 6e 74 75 | 64 70 5f 63 72 65 61 74 |LW clntu|dp_creat|
|00005270| 65 28 29 0a 58 63 61 6c | 6c 20 69 73 20 6d 61 64 |e().Xcal|l is mad|
|00005280| 65 20 77 69 74 68 20 61 | 6e 20 75 6e 62 6f 75 6e |e with a|n unboun|
|00005290| 64 20 73 6f 63 6b 65 74 | 2c 0a 58 74 68 65 20 73 |d socket|,.Xthe s|
|000052a0| 79 73 74 65 6d 20 71 75 | 65 72 69 65 73 20 74 68 |ystem qu|eries th|
|000052b0| 65 20 70 6f 72 74 20 6d | 61 70 70 65 72 20 6f 6e |e port m|apper on|
|000052c0| 0a 58 74 68 65 20 6d 61 | 63 68 69 6e 65 20 74 6f |.Xthe ma|chine to|
|000052d0| 20 77 68 69 63 68 20 74 | 68 65 20 63 61 6c 6c 20 | which t|he call |
|000052e0| 69 73 20 62 65 69 6e 67 | 20 6d 61 64 65 2c 0a 58 |is being| made,.X|
|000052f0| 61 6e 64 20 67 65 74 73 | 20 74 68 65 20 61 70 70 |and gets| the app|
|00005300| 72 6f 70 72 69 61 74 65 | 20 70 6f 72 74 20 6e 75 |ropriate| port nu|
|00005310| 6d 62 65 72 2e 0a 58 49 | 66 20 74 68 65 20 70 6f |mber..XI|f the po|
|00005320| 72 74 20 6d 61 70 70 65 | 72 20 69 73 20 6e 6f 74 |rt mappe|r is not|
|00005330| 20 72 75 6e 6e 69 6e 67 | 0a 58 6f 72 20 68 61 73 | running|.Xor has|
|00005340| 20 6e 6f 20 70 6f 72 74 | 20 63 6f 72 72 65 73 70 | no port| corresp|
|00005350| 6f 6e 64 69 6e 67 20 74 | 6f 20 74 68 65 20 52 50 |onding t|o the RP|
|00005360| 43 20 63 61 6c 6c 2c 0a | 58 74 68 65 20 52 50 43 |C call,.|Xthe RPC|
|00005370| 20 63 61 6c 6c 20 66 61 | 69 6c 73 2e 0a 58 55 73 | call fa|ils..XUs|
|00005380| 65 72 73 20 63 61 6e 20 | 6d 61 6b 65 20 52 50 43 |ers can |make RPC|
|00005390| 20 63 61 6c 6c 73 0a 58 | 74 6f 20 74 68 65 20 70 | calls.X|to the p|
|000053a0| 6f 72 74 20 6d 61 70 70 | 65 72 20 74 68 65 6d 73 |ort mapp|er thems|
|000053b0| 65 6c 76 65 73 2e 0a 58 | 54 68 65 20 61 70 70 72 |elves..X|The appr|
|000053c0| 6f 70 72 69 61 74 65 20 | 70 72 6f 63 65 64 75 72 |opriate |procedur|
|000053d0| 65 0a 58 6e 75 6d 62 65 | 72 73 20 61 72 65 20 69 |e.Xnumbe|rs are i|
|000053e0| 6e 20 74 68 65 20 69 6e | 63 6c 75 64 65 20 66 69 |n the in|clude fi|
|000053f0| 6c 65 0a 58 2e 4c 57 20 | 3c 72 70 63 2f 70 6d 61 |le.X.LW |<rpc/pma|
|00005400| 70 5f 70 72 6f 74 2e 68 | 3e 20 2e 0a 58 2e 4c 50 |p_prot.h|> ..X.LP|
|00005410| 0a 58 41 66 74 65 72 20 | 63 72 65 61 74 69 6e 67 |.XAfter |creating|
|00005420| 20 61 6e 0a 58 2e 4c 57 | 20 53 56 43 58 50 52 54 | an.X.LW| SVCXPRT|
|00005430| 20 2c 0a 58 74 68 65 20 | 6e 65 78 74 20 73 74 65 | ,.Xthe |next ste|
|00005440| 70 20 69 73 20 74 6f 20 | 63 61 6c 6c 0a 58 2e 4c |p is to |call.X.L|
|00005450| 57 20 70 6d 61 70 5f 75 | 6e 73 65 74 28 29 0a 58 |W pmap_u|nset().X|
|00005460| 73 6f 20 74 68 61 74 20 | 69 66 20 74 68 65 0a 58 |so that |if the.X|
|00005470| 2e 4c 57 20 6e 75 73 65 | 72 73 0a 58 73 65 72 76 |.LW nuse|rs.Xserv|
|00005480| 65 72 20 63 72 61 73 68 | 65 64 20 65 61 72 6c 69 |er crash|ed earli|
|00005490| 65 72 2c 0a 58 61 6e 79 | 20 70 72 65 76 69 6f 75 |er,.Xany| previou|
|000054a0| 73 20 74 72 61 63 65 20 | 6f 66 20 69 74 20 69 73 |s trace |of it is|
|000054b0| 20 65 72 61 73 65 64 20 | 62 65 66 6f 72 65 20 72 | erased |before r|
|000054c0| 65 73 74 61 72 74 69 6e | 67 2e 0a 58 4d 6f 72 65 |estartin|g..XMore|
|000054d0| 20 70 72 65 63 69 73 65 | 6c 79 2c 0a 58 2e 4c 57 | precise|ly,.X.LW|
|000054e0| 20 70 6d 61 70 5f 75 6e | 73 65 74 28 29 0a 58 65 | pmap_un|set().Xe|
|000054f0| 72 61 73 65 73 20 74 68 | 65 20 65 6e 74 72 79 20 |rases th|e entry |
|00005500| 66 6f 72 0a 58 2e 4c 57 | 20 52 55 53 45 52 53 50 |for.X.LW| RUSERSP|
|00005510| 52 4f 47 0a 58 66 72 6f | 6d 20 74 68 65 20 70 6f |ROG.Xfro|m the po|
|00005520| 72 74 20 6d 61 70 70 65 | 72 27 73 20 74 61 62 6c |rt mappe|r's tabl|
|00005530| 65 73 2e 0a 58 2e 4c 50 | 0a 58 46 69 6e 61 6c 6c |es..X.LP|.XFinall|
|00005540| 79 2c 20 77 65 20 61 73 | 73 6f 63 69 61 74 65 20 |y, we as|sociate |
|00005550| 74 68 65 20 70 72 6f 67 | 72 61 6d 20 6e 75 6d 62 |the prog|ram numb|
|00005560| 65 72 20 66 6f 72 0a 58 | 2e 4c 57 20 6e 75 73 65 |er for.X|.LW nuse|
|00005570| 72 73 0a 58 77 69 74 68 | 20 74 68 65 20 70 72 6f |rs.Xwith| the pro|
|00005580| 63 65 64 75 72 65 0a 58 | 2e 4c 57 20 6e 75 73 65 |cedure.X|.LW nuse|
|00005590| 72 28 29 20 2e 0a 58 54 | 68 65 20 66 69 6e 61 6c |r() ..XT|he final|
|000055a0| 20 61 72 67 75 6d 65 6e | 74 20 74 6f 0a 58 2e 4c | argumen|t to.X.L|
|000055b0| 57 20 73 76 63 5f 72 65 | 67 69 73 74 65 72 28 29 |W svc_re|gister()|
|000055c0| 0a 58 69 73 20 6e 6f 72 | 6d 61 6c 6c 79 20 74 68 |.Xis nor|mally th|
|000055d0| 65 20 70 72 6f 74 6f 63 | 6f 6c 20 62 65 69 6e 67 |e protoc|ol being|
|000055e0| 20 75 73 65 64 2c 0a 58 | 77 68 69 63 68 2c 20 69 | used,.X|which, i|
|000055f0| 6e 20 74 68 69 73 20 63 | 61 73 65 2c 20 69 73 0a |n this c|ase, is.|
|00005600| 58 2e 4c 57 20 49 50 50 | 52 4f 54 4f 5f 55 44 50 |X.LW IPP|ROTO_UDP|
|00005610| 20 2e 0a 58 4e 6f 74 69 | 63 65 20 74 68 61 74 20 | ..XNoti|ce that |
|00005620| 75 6e 6c 69 6b 65 0a 58 | 2e 4c 57 20 72 65 67 69 |unlike.X|.LW regi|
|00005630| 73 74 65 72 72 70 63 28 | 29 20 2c 0a 58 74 68 65 |sterrpc(|) ,.Xthe|
|00005640| 72 65 20 61 72 65 20 6e | 6f 20 58 44 52 20 72 6f |re are n|o XDR ro|
|00005650| 75 74 69 6e 65 73 20 69 | 6e 76 6f 6c 76 65 64 0a |utines i|nvolved.|
|00005660| 58 69 6e 20 74 68 65 20 | 72 65 67 69 73 74 72 61 |Xin the |registra|
|00005670| 74 69 6f 6e 20 70 72 6f | 63 65 73 73 2e 0a 58 41 |tion pro|cess..XA|
|00005680| 6c 73 6f 2c 20 72 65 67 | 69 73 74 72 61 74 69 6f |lso, reg|istratio|
|00005690| 6e 20 69 73 20 64 6f 6e | 65 20 6f 6e 20 74 68 65 |n is don|e on the|
|000056a0| 20 70 72 6f 67 72 61 6d | 2c 0a 58 72 61 74 68 65 | program|,.Xrathe|
|000056b0| 72 20 74 68 61 6e 20 70 | 72 6f 63 65 64 75 72 65 |r than p|rocedure|
|000056c0| 2c 20 6c 65 76 65 6c 2e | 0a 58 2e 4c 50 0a 58 54 |, level.|.X.LP.XT|
|000056d0| 68 65 20 75 73 65 72 20 | 72 6f 75 74 69 6e 65 0a |he user |routine.|
|000056e0| 58 2e 4c 57 20 6e 75 73 | 65 72 28 29 0a 58 6d 75 |X.LW nus|er().Xmu|
|000056f0| 73 74 20 63 61 6c 6c 20 | 61 6e 64 20 64 69 73 70 |st call |and disp|
|00005700| 61 74 63 68 20 74 68 65 | 20 61 70 70 72 6f 70 72 |atch the| appropr|
|00005710| 69 61 74 65 20 58 44 52 | 20 72 6f 75 74 69 6e 65 |iate XDR| routine|
|00005720| 73 0a 58 62 61 73 65 64 | 20 6f 6e 20 74 68 65 20 |s.Xbased| on the |
|00005730| 70 72 6f 63 65 64 75 72 | 65 20 6e 75 6d 62 65 72 |procedur|e number|
|00005740| 2e 0a 58 4e 6f 74 65 20 | 74 68 61 74 0a 58 74 77 |..XNote |that.Xtw|
|00005750| 6f 20 74 68 69 6e 67 73 | 20 61 72 65 20 68 61 6e |o things| are han|
|00005760| 64 6c 65 64 20 62 79 0a | 58 2e 4c 57 20 6e 75 73 |dled by.|X.LW nus|
|00005770| 65 72 28 29 0a 58 74 68 | 61 74 0a 58 2e 4c 57 20 |er().Xth|at.X.LW |
|00005780| 72 65 67 69 73 74 65 72 | 72 70 63 28 29 0a 58 68 |register|rpc().Xh|
|00005790| 61 6e 64 6c 65 73 20 61 | 75 74 6f 6d 61 74 69 63 |andles a|utomatic|
|000057a0| 61 6c 6c 79 2e 0a 58 54 | 68 65 20 66 69 72 73 74 |ally..XT|he first|
|000057b0| 20 69 73 20 74 68 61 74 | 20 70 72 6f 63 65 64 75 | is that| procedu|
|000057c0| 72 65 0a 58 2e 4c 57 20 | 4e 55 4c 4c 50 52 4f 43 |re.X.LW |NULLPROC|
|000057d0| 0a 58 28 63 75 72 72 65 | 6e 74 6c 79 20 7a 65 72 |.X(curre|ntly zer|
|000057e0| 6f 29 20 72 65 74 75 72 | 6e 73 20 77 69 74 68 20 |o) retur|ns with |
|000057f0| 6e 6f 20 61 72 67 75 6d | 65 6e 74 73 2e 0a 58 54 |no argum|ents..XT|
|00005800| 68 69 73 20 63 61 6e 20 | 62 65 20 75 73 65 64 20 |his can |be used |
|00005810| 61 73 20 61 20 73 69 6d | 70 6c 65 20 74 65 73 74 |as a sim|ple test|
|00005820| 0a 58 66 6f 72 20 64 65 | 74 65 63 74 69 6e 67 20 |.Xfor de|tecting |
|00005830| 69 66 20 61 20 72 65 6d | 6f 74 65 20 70 72 6f 67 |if a rem|ote prog|
|00005840| 72 61 6d 20 69 73 20 72 | 75 6e 6e 69 6e 67 2e 0a |ram is r|unning..|
|00005850| 58 53 65 63 6f 6e 64 2c | 20 74 68 65 72 65 20 69 |XSecond,| there i|
|00005860| 73 20 61 20 63 68 65 63 | 6b 20 66 6f 72 20 69 6e |s a chec|k for in|
|00005870| 76 61 6c 69 64 20 70 72 | 6f 63 65 64 75 72 65 20 |valid pr|ocedure |
|00005880| 6e 75 6d 62 65 72 73 2e | 0a 58 49 66 20 6f 6e 65 |numbers.|.XIf one|
|00005890| 20 69 73 20 64 65 74 65 | 63 74 65 64 2c 0a 58 2e | is dete|cted,.X.|
|000058a0| 4c 57 20 73 76 63 65 72 | 72 5f 6e 6f 70 72 6f 63 |LW svcer|r_noproc|
|000058b0| 28 29 0a 58 69 73 20 63 | 61 6c 6c 65 64 20 74 6f |().Xis c|alled to|
|000058c0| 20 68 61 6e 64 6c 65 20 | 74 68 65 20 65 72 72 6f | handle |the erro|
|000058d0| 72 2e 0a 58 2e 4c 50 0a | 58 54 68 65 20 75 73 65 |r..X.LP.|XThe use|
|000058e0| 72 20 73 65 72 76 69 63 | 65 20 72 6f 75 74 69 6e |r servic|e routin|
|000058f0| 65 20 73 65 72 69 61 6c | 69 7a 65 73 20 74 68 65 |e serial|izes the|
|00005900| 20 72 65 73 75 6c 74 73 | 20 61 6e 64 20 72 65 74 | results| and ret|
|00005910| 75 72 6e 73 0a 58 74 68 | 65 6d 20 74 6f 20 74 68 |urns.Xth|em to th|
|00005920| 65 20 52 50 43 20 63 61 | 6c 6c 65 72 20 76 69 61 |e RPC ca|ller via|
|00005930| 0a 58 2e 4c 57 20 73 76 | 63 5f 73 65 6e 64 72 65 |.X.LW sv|c_sendre|
|00005940| 70 6c 79 28 29 20 2e 0a | 58 49 74 73 20 66 69 72 |ply() ..|XIts fir|
|00005950| 73 74 20 70 61 72 61 6d | 65 74 65 72 20 69 73 20 |st param|eter is |
|00005960| 74 68 65 0a 58 2e 4c 57 | 20 53 56 43 58 50 52 54 |the.X.LW| SVCXPRT|
|00005970| 0a 58 68 61 6e 64 6c 65 | 2c 20 74 68 65 20 73 65 |.Xhandle|, the se|
|00005980| 63 6f 6e 64 20 69 73 20 | 74 68 65 20 58 44 52 20 |cond is |the XDR |
|00005990| 72 6f 75 74 69 6e 65 2c | 0a 58 61 6e 64 20 74 68 |routine,|.Xand th|
|000059a0| 65 20 74 68 69 72 64 20 | 69 73 20 61 20 70 6f 69 |e third |is a poi|
|000059b0| 6e 74 65 72 20 74 6f 20 | 74 68 65 20 64 61 74 61 |nter to |the data|
|000059c0| 20 74 6f 20 62 65 20 72 | 65 74 75 72 6e 65 64 2e | to be r|eturned.|
|000059d0| 0a 58 4e 6f 74 20 69 6c | 6c 75 73 74 72 61 74 65 |.XNot il|lustrate|
|000059e0| 64 20 61 62 6f 76 65 20 | 69 73 20 68 6f 77 20 61 |d above |is how a|
|000059f0| 20 73 65 72 76 65 72 0a | 58 68 61 6e 64 6c 65 73 | server.|Xhandles|
|00005a00| 20 61 6e 20 52 50 43 20 | 70 72 6f 67 72 61 6d 20 | an RPC |program |
|00005a10| 74 68 61 74 20 70 61 73 | 73 65 73 20 64 61 74 61 |that pas|ses data|
|00005a20| 2e 0a 58 41 73 20 61 6e | 20 65 78 61 6d 70 6c 65 |..XAs an| example|
|00005a30| 2c 20 77 65 20 63 61 6e | 20 61 64 64 20 61 20 70 |, we can| add a p|
|00005a40| 72 6f 63 65 64 75 72 65 | 0a 58 2e 4c 57 20 52 55 |rocedure|.X.LW RU|
|00005a50| 53 45 52 53 50 52 4f 43 | 5f 42 4f 4f 4c 20 2c 0a |SERSPROC|_BOOL ,.|
|00005a60| 58 77 68 69 63 68 20 68 | 61 73 20 61 6e 20 61 72 |Xwhich h|as an ar|
|00005a70| 67 75 6d 65 6e 74 0a 58 | 2e 4c 57 20 6e 75 73 65 |gument.X|.LW nuse|
|00005a80| 72 73 20 2c 0a 58 61 6e | 64 20 72 65 74 75 72 6e |rs ,.Xan|d return|
|00005a90| 73 0a 58 2e 4c 57 20 54 | 52 55 45 0a 58 6f 72 0a |s.X.LW T|RUE.Xor.|
|00005aa0| 58 2e 4c 57 20 46 41 4c | 53 45 0a 58 64 65 70 65 |X.LW FAL|SE.Xdepe|
|00005ab0| 6e 64 69 6e 67 20 6f 6e | 20 77 68 65 74 68 65 72 |nding on| whether|
|00005ac0| 20 74 68 65 72 65 20 61 | 72 65 20 6e 75 73 65 72 | there a|re nuser|
|00005ad0| 73 20 6c 6f 67 67 65 64 | 20 6f 6e 2e 0a 58 49 74 |s logged| on..XIt|
|00005ae0| 20 77 6f 75 6c 64 20 6c | 6f 6f 6b 20 6c 69 6b 65 | would l|ook like|
|00005af0| 20 74 68 69 73 3a 0a 58 | 2e 42 53 0a 58 2e 4c 53 | this:.X|.BS.X.LS|
|00005b00| 0a 58 63 61 73 65 20 52 | 55 53 45 52 53 50 52 4f |.Xcase R|USERSPRO|
|00005b10| 43 5f 42 4f 4f 4c 3a 20 | 7b 0a 58 09 69 6e 74 20 |C_BOOL: |{.X.int |
|00005b20| 62 6f 6f 6c 3b 0a 58 09 | 75 6e 73 69 67 6e 65 64 |bool;.X.|unsigned|
|00005b30| 20 6e 75 73 65 72 71 75 | 65 72 79 3b 0a 58 2e 73 | nuserqu|ery;.X.s|
|00005b40| 70 2e 35 0a 58 09 69 66 | 20 28 21 73 76 63 5f 67 |p.5.X.if| (!svc_g|
|00005b50| 65 74 61 72 67 73 28 74 | 72 61 6e 73 70 2c 20 78 |etargs(t|ransp, x|
|00005b60| 64 72 5f 75 5f 69 6e 74 | 2c 20 26 6e 75 73 65 72 |dr_u_int|, &nuser|
|00005b70| 71 75 65 72 79 29 20 7b | 0a 58 09 09 73 76 63 65 |query) {|.X..svce|
|00005b80| 72 72 5f 64 65 63 6f 64 | 65 28 74 72 61 6e 73 70 |rr_decod|e(transp|
|00005b90| 29 3b 0a 58 09 09 72 65 | 74 75 72 6e 3b 0a 58 09 |);.X..re|turn;.X.|
|00005ba0| 7d 0a 58 09 2f 2a 0a 58 | 09 20 2a 20 63 6f 64 65 |}.X./*.X|. * code|
|00005bb0| 20 74 6f 20 73 65 74 20 | 6e 75 73 65 72 73 20 3d | to set |nusers =|
|00005bc0| 20 6e 75 6d 62 65 72 20 | 6f 66 20 75 73 65 72 73 | number |of users|
|00005bd0| 0a 58 09 20 2a 2f 0a 58 | 09 69 66 20 28 6e 75 73 |.X. */.X|.if (nus|
|00005be0| 65 72 71 75 65 72 79 20 | 3d 3d 20 6e 75 73 65 72 |erquery |== nuser|
|00005bf0| 73 29 0a 58 09 09 62 6f | 6f 6c 20 3d 20 54 52 55 |s).X..bo|ol = TRU|
|00005c00| 45 3b 0a 58 09 65 6c 73 | 65 0a 58 09 09 62 6f 6f |E;.X.els|e.X..boo|
|00005c10| 6c 20 3d 20 46 41 4c 53 | 45 3b 0a 58 09 69 66 20 |l = FALS|E;.X.if |
|00005c20| 28 21 73 76 63 5f 73 65 | 6e 64 72 65 70 6c 79 28 |(!svc_se|ndreply(|
|00005c30| 74 72 61 6e 73 70 2c 20 | 78 64 72 5f 62 6f 6f 6c |transp, |xdr_bool|
|00005c40| 2c 20 26 62 6f 6f 6c 29 | 7b 0a 58 09 09 20 66 70 |, &bool)|{.X.. fp|
|00005c50| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 20 22 63 |rintf(st|derr, "c|
|00005c60| 61 6e 27 74 20 72 65 70 | 6c 79 20 74 6f 20 52 50 |an't rep|ly to RP|
|00005c70| 43 20 63 61 6c 6c 5c 65 | 6e 22 29 3b 0a 58 09 09 |C call\e|n");.X..|
|00005c80| 20 65 78 69 74 28 31 29 | 3b 0a 58 09 7d 0a 58 09 | exit(1)|;.X.}.X.|
|00005c90| 72 65 74 75 72 6e 3b 0a | 58 7d 0a 58 2e 4c 66 0a |return;.|X}.X.Lf.|
|00005ca0| 58 2e 42 45 0a 58 2e 4c | 50 0a 58 54 68 65 20 72 |X.BE.X.L|P.XThe r|
|00005cb0| 65 6c 65 76 61 6e 74 20 | 72 6f 75 74 69 6e 65 20 |elevant |routine |
|00005cc0| 69 73 0a 58 2e 4c 57 20 | 73 76 63 5f 67 65 74 61 |is.X.LW |svc_geta|
|00005cd0| 72 67 73 28 29 20 2c 0a | 58 77 68 69 63 68 20 74 |rgs() ,.|Xwhich t|
|00005ce0| 61 6b 65 73 20 61 6e 0a | 58 2e 4c 57 20 53 56 43 |akes an.|X.LW SVC|
|00005cf0| 58 50 52 54 0a 58 68 61 | 6e 64 6c 65 2c 20 74 68 |XPRT.Xha|ndle, th|
|00005d00| 65 20 58 44 52 20 72 6f | 75 74 69 6e 65 2c 0a 58 |e XDR ro|utine,.X|
|00005d10| 61 6e 64 20 61 20 70 6f | 69 6e 74 65 72 20 74 6f |and a po|inter to|
|00005d20| 20 77 68 65 72 65 20 74 | 68 65 20 69 6e 70 75 74 | where t|he input|
|00005d30| 20 69 73 20 74 6f 20 62 | 65 20 70 6c 61 63 65 64 | is to b|e placed|
|00005d40| 20 61 73 20 61 72 67 75 | 6d 65 6e 74 73 2e 0a 58 | as argu|ments..X|
|00005d50| 2e 4e 48 20 32 0a 58 4d | 65 6d 6f 72 79 20 41 6c |.NH 2.XM|emory Al|
|00005d60| 6c 6f 63 61 74 69 6f 6e | 20 77 69 74 68 20 58 44 |location| with XD|
|00005d70| 52 0a 58 2e 4c 50 0a 58 | 58 44 52 20 72 6f 75 74 |R.X.LP.X|XDR rout|
|00005d80| 69 6e 65 73 20 6e 6f 74 | 20 6f 6e 6c 79 20 64 6f |ines not| only do|
|00005d90| 20 69 6e 70 75 74 20 61 | 6e 64 20 6f 75 74 70 75 | input a|nd outpu|
|00005da0| 74 2c 0a 58 74 68 65 79 | 20 61 6c 73 6f 20 64 6f |t,.Xthey| also do|
|00005db0| 20 6d 65 6d 6f 72 79 20 | 61 6c 6c 6f 63 61 74 69 | memory |allocati|
|00005dc0| 6f 6e 2e 0a 58 54 68 69 | 73 20 69 73 20 77 68 79 |on..XThi|s is why|
|00005dd0| 20 74 68 65 20 73 65 63 | 6f 6e 64 20 70 61 72 61 | the sec|ond para|
|00005de0| 6d 65 74 65 72 20 6f 66 | 0a 58 2e 4c 57 20 78 64 |meter of|.X.LW xd|
|00005df0| 72 5f 61 72 72 61 79 28 | 29 0a 58 69 73 20 61 20 |r_array(|).Xis a |
|00005e00| 70 6f 69 6e 74 65 72 20 | 74 6f 20 61 6e 20 61 72 |pointer |to an ar|
|00005e10| 72 61 79 2c 20 72 61 74 | 68 65 72 20 74 68 61 6e |ray, rat|her than|
|00005e20| 20 74 68 65 20 61 72 72 | 61 79 20 69 74 73 65 6c | the arr|ay itsel|
|00005e30| 66 2e 0a 58 49 66 20 69 | 74 20 69 73 0a 58 2e 4c |f..XIf i|t is.X.L|
|00005e40| 57 20 4e 55 4c 4c 20 2c | 0a 58 74 68 65 6e 0a 58 |W NULL ,|.Xthen.X|
|00005e50| 2e 4c 57 20 78 64 72 5f | 61 72 72 61 79 28 29 0a |.LW xdr_|array().|
|00005e60| 58 61 6c 6c 6f 63 61 74 | 65 73 20 73 70 61 63 65 |Xallocat|es space|
|00005e70| 20 66 6f 72 20 74 68 65 | 20 61 72 72 61 79 20 61 | for the| array a|
|00005e80| 6e 64 20 72 65 74 75 72 | 6e 73 20 61 20 70 6f 69 |nd retur|ns a poi|
|00005e90| 6e 74 65 72 20 74 6f 20 | 69 74 2c 0a 58 70 75 74 |nter to |it,.Xput|
|00005ea0| 74 69 6e 67 20 74 68 65 | 20 73 69 7a 65 20 6f 66 |ting the| size of|
|00005eb0| 20 74 68 65 20 61 72 72 | 61 79 20 69 6e 20 74 68 | the arr|ay in th|
|00005ec0| 65 20 74 68 69 72 64 20 | 61 72 67 75 6d 65 6e 74 |e third |argument|
|00005ed0| 2e 0a 58 41 73 20 61 6e | 20 65 78 61 6d 70 6c 65 |..XAs an| example|
|00005ee0| 2c 20 63 6f 6e 73 69 64 | 65 72 20 74 68 65 20 66 |, consid|er the f|
|00005ef0| 6f 6c 6c 6f 77 69 6e 67 | 20 58 44 52 20 72 6f 75 |ollowing| XDR rou|
|00005f00| 74 69 6e 65 0a 58 2e 4c | 57 20 78 64 72 5f 63 68 |tine.X.L|W xdr_ch|
|00005f10| 61 72 61 72 72 31 28 29 | 20 2c 0a 58 77 68 69 63 |ararr1()| ,.Xwhic|
|00005f20| 68 20 64 65 61 6c 73 20 | 77 69 74 68 20 61 20 66 |h deals |with a f|
|00005f30| 69 78 65 64 20 61 72 72 | 61 79 20 6f 66 20 62 79 |ixed arr|ay of by|
|00005f40| 74 65 73 20 77 69 74 68 | 20 6c 65 6e 67 74 68 0a |tes with| length.|
|00005f50| 58 2e 4c 57 20 53 49 5a | 45 20 3a 0a 58 2e 42 53 |X.LW SIZ|E :.X.BS|
|00005f60| 0a 58 2e 4c 53 0a 58 78 | 64 72 5f 63 68 61 72 61 |.X.LS.Xx|dr_chara|
|00005f70| 72 72 31 28 78 64 72 73 | 70 2c 20 63 68 61 72 61 |rr1(xdrs|p, chara|
|00005f80| 72 72 29 0a 58 09 58 44 | 52 20 2a 78 64 72 73 70 |rr).X.XD|R *xdrsp|
|00005f90| 3b 0a 58 09 63 68 61 72 | 20 63 68 61 72 61 72 72 |;.X.char| chararr|
|00005fa0| 5b 5d 3b 0a 58 7b 0a 58 | 09 63 68 61 72 20 2a 70 |[];.X{.X|.char *p|
|00005fb0| 3b 0a 58 09 69 6e 74 20 | 6c 65 6e 3b 0a 58 2e 73 |;.X.int |len;.X.s|
|00005fc0| 70 2e 35 0a 58 09 70 20 | 3d 20 63 68 61 72 61 72 |p.5.X.p |= charar|
|00005fd0| 72 3b 0a 58 09 6c 65 6e | 20 3d 20 53 49 5a 45 3b |r;.X.len| = SIZE;|
|00005fe0| 0a 58 09 72 65 74 75 72 | 6e 20 28 78 64 72 5f 62 |.X.retur|n (xdr_b|
|00005ff0| 79 74 65 73 28 78 64 72 | 73 70 2c 20 26 70 2c 20 |ytes(xdr|sp, &p, |
|00006000| 26 6c 65 6e 2c 20 53 49 | 5a 45 29 29 3b 0a 58 7d |&len, SI|ZE));.X}|
|00006010| 0a 58 2e 4c 66 0a 58 2e | 42 45 0a 58 49 74 20 6d |.X.Lf.X.|BE.XIt m|
|00006020| 69 67 68 74 20 62 65 20 | 63 61 6c 6c 65 64 20 66 |ight be |called f|
|00006030| 72 6f 6d 20 61 20 73 65 | 72 76 65 72 20 6c 69 6b |rom a se|rver lik|
|00006040| 65 20 74 68 69 73 2c 0a | 58 2e 42 53 0a 58 2e 4c |e this,.|X.BS.X.L|
|00006050| 53 0a 58 63 68 61 72 20 | 63 68 61 72 61 72 72 5b |S.Xchar |chararr[|
|00006060| 53 49 5a 45 5d 3b 0a 58 | 2e 73 70 2e 35 0a 58 73 |SIZE];.X|.sp.5.Xs|
|00006070| 76 63 5f 67 65 74 61 72 | 67 73 28 74 72 61 6e 73 |vc_getar|gs(trans|
|00006080| 70 2c 20 78 64 72 5f 63 | 68 61 72 61 72 72 31 2c |p, xdr_c|hararr1,|
|00006090| 20 63 68 61 72 61 72 72 | 29 3b 0a 58 2e 4c 66 0a | chararr|);.X.Lf.|
|000060a0| 58 2e 42 45 0a 58 77 68 | 65 72 65 0a 58 2e 4c 57 |X.BE.Xwh|ere.X.LW|
|000060b0| 20 63 68 61 72 61 72 72 | 0a 58 68 61 73 20 61 6c | chararr|.Xhas al|
|000060c0| 72 65 61 64 79 20 61 6c | 6c 6f 63 61 74 65 64 20 |ready al|located |
|000060d0| 73 70 61 63 65 2e 0a 58 | 49 66 20 79 6f 75 20 77 |space..X|If you w|
|000060e0| 61 6e 74 20 58 44 52 20 | 74 6f 20 64 6f 20 74 68 |ant XDR |to do th|
|000060f0| 65 20 61 6c 6c 6f 63 61 | 74 69 6f 6e 2c 0a 58 79 |e alloca|tion,.Xy|
|00006100| 6f 75 20 77 6f 75 6c 64 | 20 68 61 76 65 20 74 6f |ou would| have to|
|00006110| 20 72 65 77 72 69 74 65 | 20 74 68 69 73 20 72 6f | rewrite| this ro|
|00006120| 75 74 69 6e 65 20 69 6e | 20 74 68 65 20 66 6f 6c |utine in| the fol|
|00006130| 6c 6f 77 69 6e 67 20 77 | 61 79 3a 0a 58 2e 42 53 |lowing w|ay:.X.BS|
|00006140| 0a 58 2e 4c 53 0a 58 78 | 64 72 5f 63 68 61 72 61 |.X.LS.Xx|dr_chara|
|00006150| 72 72 32 28 78 64 72 73 | 70 2c 20 63 68 61 72 61 |rr2(xdrs|p, chara|
|00006160| 72 72 70 29 0a 58 09 58 | 44 52 20 2a 78 64 72 73 |rrp).X.X|DR *xdrs|
|00006170| 70 3b 0a 58 09 63 68 61 | 72 20 2a 2a 63 68 61 72 |p;.X.cha|r **char|
|00006180| 61 72 72 70 3b 0a 58 7b | 0a 58 09 69 6e 74 20 6c |arrp;.X{|.X.int l|
|00006190| 65 6e 3b 0a 58 2e 73 70 | 2e 35 0a 58 09 6c 65 6e |en;.X.sp|.5.X.len|
|000061a0| 20 3d 20 53 49 5a 45 3b | 0a 58 09 72 65 74 75 72 | = SIZE;|.X.retur|
|000061b0| 6e 20 28 78 64 72 5f 62 | 79 74 65 73 28 78 64 72 |n (xdr_b|ytes(xdr|
|000061c0| 73 70 2c 20 63 68 61 72 | 72 61 72 72 70 2c 20 26 |sp, char|rarrp, &|
|000061d0| 6c 65 6e 2c 20 53 49 5a | 45 29 29 3b 0a 58 7d 0a |len, SIZ|E));.X}.|
|000061e0| 58 2e 4c 66 0a 58 2e 42 | 45 0a 58 54 68 65 6e 20 |X.Lf.X.B|E.XThen |
|000061f0| 74 68 65 20 52 50 43 20 | 63 61 6c 6c 20 6d 69 67 |the RPC |call mig|
|00006200| 68 74 20 6c 6f 6f 6b 20 | 6c 69 6b 65 20 74 68 69 |ht look |like thi|
|00006210| 73 3a 0a 58 2e 42 53 0a | 58 2e 4c 53 0a 58 63 68 |s:.X.BS.|X.LS.Xch|
|00006220| 61 72 20 2a 61 72 72 70 | 74 72 3b 0a 58 2e 73 70 |ar *arrp|tr;.X.sp|
|00006230| 2e 35 0a 58 61 72 72 70 | 74 72 20 3d 20 4e 55 4c |.5.Xarrp|tr = NUL|
|00006240| 4c 3b 0a 58 73 76 63 5f | 67 65 74 61 72 67 73 28 |L;.Xsvc_|getargs(|
|00006250| 74 72 61 6e 73 70 2c 20 | 78 64 72 5f 63 68 61 72 |transp, |xdr_char|
|00006260| 61 72 72 32 2c 20 26 61 | 72 72 70 74 72 29 3b 0a |arr2, &a|rrptr);.|
|00006270| 58 2f 2a 0a 58 20 2a 20 | 75 73 65 20 74 68 65 20 |X/*.X * |use the |
|00006280| 72 65 73 75 6c 74 20 68 | 65 72 65 0a 58 20 2a 2f |result h|ere.X */|
|00006290| 0a 58 73 76 63 5f 66 72 | 65 65 61 72 67 73 28 74 |.Xsvc_fr|eeargs(t|
|000062a0| 72 61 6e 73 70 2c 20 78 | 64 72 5f 63 68 61 72 61 |ransp, x|dr_chara|
|000062b0| 72 72 32 2c 20 26 61 72 | 72 70 74 72 29 3b 0a 58 |rr2, &ar|rptr);.X|
|000062c0| 2e 4c 66 0a 58 2e 42 45 | 0a 58 41 66 74 65 72 20 |.Lf.X.BE|.XAfter |
|000062d0| 75 73 69 6e 67 20 74 68 | 65 20 63 68 61 72 61 63 |using th|e charac|
|000062e0| 74 65 72 20 61 72 72 61 | 79 2c 20 69 74 20 63 61 |ter arra|y, it ca|
|000062f0| 6e 20 62 65 20 66 72 65 | 65 64 20 77 69 74 68 0a |n be fre|ed with.|
|00006300| 58 2e 4c 57 20 73 76 63 | 5f 66 72 65 65 61 72 67 |X.LW svc|_freearg|
|00006310| 73 28 29 20 2e 0a 58 49 | 6e 20 74 68 65 20 72 6f |s() ..XI|n the ro|
|00006320| 75 74 69 6e 65 0a 58 2e | 4c 57 20 78 64 72 5f 66 |utine.X.|LW xdr_f|
|00006330| 69 6e 61 6c 65 78 61 6d | 70 6c 65 28 29 0a 58 67 |inalexam|ple().Xg|
|00006340| 69 76 65 6e 20 65 61 72 | 6c 69 65 72 2c 20 69 66 |iven ear|lier, if|
|00006350| 0a 58 2e 4c 57 20 66 69 | 6e 61 6c 70 2d 3e 73 74 |.X.LW fi|nalp->st|
|00006360| 72 69 6e 67 0a 58 77 61 | 73 0a 58 2e 4c 57 20 4e |ring.Xwa|s.X.LW N|
|00006370| 55 4c 4c 0a 58 69 6e 20 | 74 68 65 20 63 61 6c 6c |ULL.Xin |the call|
|00006380| 0a 58 2e 42 53 0a 58 2e | 4c 53 0a 58 73 76 63 5f |.X.BS.X.|LS.Xsvc_|
|00006390| 67 65 74 61 72 67 73 28 | 74 72 61 6e 73 70 2c 20 |getargs(|transp, |
|000063a0| 78 64 72 5f 66 69 6e 61 | 6c 65 78 61 6d 70 6c 65 |xdr_fina|lexample|
|000063b0| 2c 20 26 66 69 6e 61 6c | 70 29 3b 0a 58 2e 4c 66 |, &final|p);.X.Lf|
|000063c0| 0a 58 2e 42 45 0a 58 74 | 68 65 6e 0a 58 2e 42 53 |.X.BE.Xt|hen.X.BS|
|000063d0| 0a 58 2e 4c 53 0a 58 73 | 76 63 5f 66 72 65 65 61 |.X.LS.Xs|vc_freea|
|000063e0| 72 67 73 28 78 64 72 73 | 70 2c 20 78 64 72 5f 66 |rgs(xdrs|p, xdr_f|
|000063f0| 69 6e 61 6c 65 78 61 6d | 70 6c 65 2c 20 26 66 69 |inalexam|ple, &fi|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.