Preface |
Preface
|
Preface
|
Chapter 1 |
1
|
Introduction to Remote Procedure Calls
|
1.1
|
Overview
|
1.2
|
The RPC Model
|
1.3
|
RPC Procedure Versions
|
1.4
|
Using Portmapper to Determine the Destination Port Number of RPC Packets
|
1.4.1
|
Portmapper Notes for TCP/IP Services
|
1.4.2
|
Displaying Registered RPC Servers
|
1.5
|
RPC Independence from Transport Protocol
|
1.6
|
External Data Representation (XDR)
|
1.7
|
Assigning Program Numbers
|
Chapter 2 |
2
|
Writing RPC Applications with the RPCGEN Protocol Compiler
|
2.1
|
The RPCGEN Protocol Compiler
|
2.2
|
Simple Example: Using RPCGEN to Generate Client and Server RPC Code
|
2.2.1
|
RPC Protocol Specification File Describing Remote Procedure
|
2.2.2
|
Implementing the Procedure Declared in the Protocol Specification
|
2.2.3
|
The Client Program That Calls the Remote Procedure
|
2.2.4
|
Running RPCGEN
|
2.2.5
|
Compiling the Client and Server Programs
|
2.2.6
|
Copying the Server to a Remote System and Running It
|
2.3
|
Advanced Example: Using RPCGEN to Generate XDR Routines
|
2.3.1
|
The RPC Protocol Specification
|
2.3.2
|
Implementing the Procedure Declared in the Protocol Specification
|
2.3.3
|
The Client Program that Calls the Remote Procedure
|
2.3.4
|
Running RPCGEN
|
2.3.5
|
Compiling the File of XDR Routines
|
2.3.6
|
Compiling the Client and Server Programs
|
2.3.7
|
Copying the Server to a Remote System and Running It
|
2.4
|
Debugging Applications
|
2.5
|
The C Preprocessor
|
2.6
|
RPCGEN Programming
|
2.6.1
|
Network Types
|
2.6.2
|
User-Provided Define Statements
|
2.6.3
|
INETd Support
|
2.6.4
|
Dispatch Tables
|
2.7
|
Client Programming
|
2.7.1
|
Timeout Changes
|
2.7.2
|
Client Authentication
|
2.8
|
Server Programming
|
2.8.1
|
Handling Broadcasts
|
2.8.2
|
Passing Data to Server Procedures
|
2.9
|
RPC and XDR Languages
|
2.9.1
|
Definitions
|
2.9.2
|
Enumerations
|
2.9.3
|
Typedefs
|
2.9.4
|
Constants
|
2.9.5
|
Declarations
|
2.9.6
|
Structures
|
2.9.7
|
Unions
|
2.9.8
|
Programs
|
2.9.9
|
Special Cases
|
Command 1
|
RPCGEN
|
Chapter 3 |
3
|
RPC Application Programming Interface
|
3.1
|
RPC Layers
|
3.2
|
Middle Layer of RPC
|
3.2.1
|
Using callrpc
|
3.2.2
|
Using registerrpc and svc_run
|
3.2.3
|
Using XDR Routines to Pass Arbitrary Data Types
|
3.2.4
|
User-Defined XDR Routines
|
3.2.5
|
XDR Serializing Defaults
|
3.3
|
Lowest Layer of RPC
|
3.3.1
|
The Server Side and the Lowest RPC Layer
|
3.3.2
|
The Client Side and the Lowest RPC Layer
|
3.3.3
|
Memory Allocation with XDR
|
3.4
|
Raw RPC
|
3.5
|
Miscellaneous RPC Features
|
3.5.1
|
Using Select on the Server Side
|
3.5.2
|
Broadcast RPC
|
3.5.3
|
Batching
|
3.6
|
Authentication of RPC Calls
|
3.6.1
|
The Client Side
|
3.6.2
|
The Server Side
|
3.7
|
Using the Internet Service Daemon (INETd)
|
3.8
|
Additional Examples
|
3.8.1
|
Program Versions on the Server Side
|
3.8.2
|
Program Versions on the Client Side
|
3.8.3
|
Using the TCP Transport
|
3.8.4
|
Callback Procedures
|
Chapter 4 |
4
|
External Data Representation
|
4.1
|
Usefulness of XDR
|
4.1.1
|
A Canonical Standard
|
4.1.2
|
The XDR Library
|
4.2
|
XDR Library Primitives
|
4.2.1
|
Number and Single-Character Filters
|
4.2.2
|
Floating-Point Filters
|
4.2.3
|
Enumeration Filters
|
4.2.4
|
Possibility of No Data
|
4.2.5
|
Constructed Data Type Filters
|
4.2.5.1
|
Strings
|
4.2.5.2
|
Variable-Length Byte Arrays
|
4.2.5.3
|
Variable-Length Arrays of Arbitrary Data Elements
|
4.2.5.4
|
Fixed-Length Arrays of Arbitrary Data Elements
|
4.2.5.5
|
Opaque Data
|
4.2.5.6
|
Discriminated Unions
|
4.2.5.7
|
Pointers
|
4.2.6
|
Non-filter Primitives
|
4.3
|
XDR Operation Directions
|
4.4
|
XDR Stream Access
|
4.4.1
|
Standard I/O Streams
|
4.4.2
|
Memory Streams
|
4.4.3
|
Record (TCP/IP) Streams
|
4.4.4
|
XDR Stream Implementation
|
4.5
|
Advanced Topics
|