Documentation Home
> ONC+ Developer's Guide
ONC+ Developer's Guide
Book Information
Preface
Part I Introduction
Chapter 1 Introduction to ONC+ Technologies
Brief Description of ONC+Technologies
TI-RPC
XDR
NFS
NIS+
Part II Remote Procedure Call
Chapter 2 Introduction to TI-RPC
What Is TI-RPC
TI-RPC Issues
Parameter Passing
Binding
Transport Protocol
Call Semantics
Data Representation
Program, Version, and Procedure Numbers
Overview of Interface Routines
Simplified Interface Routines
Standard Interface Routines
Top Level Routines
Intermediate Level Routines
Expert Level Routines
Bottom Level Routines
Network Selection
Transport Selection
Name-to-Address Translation
Address Lookup Services
Registering Addresses
Reporting RPC Information
Chapter 3 rpcgen Programming Guide
What is rpcgen
SunOS 5.x Features
Template Generation
C-style Mode
Multithread-Safe Code
Multithread Auto Mode
Library Selection
ANSI C -compliant Code
An rpcgen Tutorial
Converting Local Procedures to Remote Procedures
Passing Complex Data Structures
Preprocessing Directives
cpp Directive
Compile-Time Flags
Client and Server Templates
C-style Mode
MT-Safe Code
MT Auto Mode
TI-RPC or TS-RPC Library Selection
ANSI C-compliant Code
xdr_inline() Count
rpcgen Programming Techniques
Network Types/Transport Selection
Command Line Define Statements
Server Response to Broadcast Calls
Port Monitor Support
Time-out Changes
Client Authentication
Dispatch Tables
Debugging Applications
Chapter 4 The Programmer's Interface to RPC
RPC Is Multithread Safe
Simplified Interface
Client
Server
Hand-Coded Registration Routine
Passing Arbitrary Data Types
Standard Interfaces
Top Level Interface
Client
Intermediate Level Interface
Client
Server
Expert Level Interface
Client
Server
Bottom Level Interface
Client
Server
Server Caching
Low-Level Data Structures
Testing Programs Using Low-level Raw RPC
Advanced RPC Programming Techniques
poll() on the Server Side
Broadcast RPC
Batching
Batching Performance
Authentication
AUTH_SYS Authentication
AUTH_DES Authentication
AUTH_KERB Authentication
Time Synchronization
Well-Known Names
Encryption
Using Port Monitors
Using inetd
Using the Listener
Multiple Server Versions
Multiple Client Versions
Using Transient RPC Program Numbers
Multithreaded RPC Programming
MT Client Overview
MT Server Overview
Sharing the Service Transport Handle
MT Auto Mode
MT User Mode
Freeing Library Resources in User Mode
Connection-Oriented Transports
Memory Allocation With XDR
Porting From TS-RPC to TI-RPC
Porting an Application
Benefits of Porting
Porting Issues
libnsl Library
Old Interfaces
Name-to-Address Mapping
Differences Between TI-RPC and TS-RPC
Function Compatibility Lists
Creating Client Handles
Creating and Destroying Services
Registering and Unregistering Services
SunOS 4.x Compatibility Calls
Broadcasting
Address Management Functions
Authentication Functions
Other Functions
Comparison Examples
Part III NIS+
Chapter 5 NIS+ Programming Guide
NIS+ Overview
Domains
Servers
Tables
NIS+ Security
Name Service Switch
NIS+ Administration Commands
NIS+ API
NIS+ Sample Program
Unsupported Macros
Functions Used in the Example
Program Compilation
Appendix A XDR Technical Note
What is XDR
A Canonical Standard
The XDR Library
XDR Library Primitives
Memory Requirements for XDR Routines
Number Filters
Floating Point Filters
Enumeration Filters
No-Data Routine
Constructed Data Type Filters
Strings
Byte Arrays
Arrays
Array Example 1
Array Example 2
Array Example 3
Opaque Data
Fixed-Length Arrays
Discriminated Unions
Discriminated Union Example
Exercise
Pointers
Exercise
Pointer Example
Pointer Semantics
Nonfilter Primitives
Operation Directions
Stream Access
Standard I/O Streams
Memory Streams
Record (TCP/IP) Streams
XDR Stream Implementation
The XDR Object
Advanced Topics
Linked Lists
Appendix B RPC Protocol and Language Specification
Protocol Overview
The RPC Model
Transports and Semantics
Binding and Rendezvous Independence
Program and Procedure Numbers
Program Number Assignment
Program Number Registration
Other Uses of the RPC Protocol
Batching
Broadcast RPC
The RPC Message Protocol
Record-Marking Standard
Authentication Protocols
AUTH_NONE
AUTH_SYS
The AUTH_SHORT Verifier
AUTH_DES Authentication
AUTH_DES Authentication Verifiers
Nicknames and Clock Synchronization
DES Authentication Protocol (in XDR language)
Diffie-Hellman Encryption
AUTH_KERB Authentication
NFS Mount Example
KERB Authentication Protocol (in XDR Language)
The RPC Language Specification
An Example Service Described in the RPC Language
RPCL Syntax
Enumerations
Constants
Type Definitions
Declarations
Simple Declarations
Fixed-Length Array Declarations
Variable-Length Array Declarations
Pointer Declarations
Structures
Unions
Programs
Special Cases
C-style Mode
Booleans
Strings
Opaque Data
Voids
rpcbind Protocol
rpcbind Operation
RPCBPROC_NULL
RPCBPROC_SET
RPCBPROC_UNSET
RPCBPROC_GETADDR
RPCBPROC_DUMP
RPCBPROC_CALLIT
RPCBPROC_GETTIME
RPCBPROC_UADDR2TADDR
RPCBPROC_TADDR2UADDR
Version 4 rpcbind
RPCBPROC_BCAST
RPCBPROC_GETVERSADDR
RPCBPROC_INDIRECT
RPCBPROC_GETADDRLIST
RPCBPROC_GETSTAT
Bibliography
Appendix C XDR Protocol Specification
XDR Protocol Introduction
Graphic Box Notation
Basic Block Size
XDR Data Type Declarations
Signed Integer
Description
Declaration
Encoding
Unsigned Integer
Description
Declaration
Encoding
Enumerations
Description
Declaration
Encoding
Booleans
Description
Declaration
Encoding
Hyper Integer and Unsigned Hyper Integer
Description
Declaration
Encoding
Floating Point
Description
Declaration
Encoding
Quadruple-Precision Floating Point
Description
Declaration
Encoding
Fixed-Length Opaque Data
Description
Declaration
Encoding
Variable-Length Opaque Data
Description
Declaration
Encoding
Counted Byte Strings
Description
Declaration
Encoding
Fixed-Length Array
Declaration
Encoding
Variable-Length Array
Description
Declaration
Encoding
Structure
Description
Declaration
Encoding
Discriminated Union
Description
Declaration
Encoding
Void
Description
Declaration
Constant
Description
Declaration
Typedef
Optional-Data
The XDR Language Specification
Notational Conventions
Lexical Notes
Syntax Notes
XDR Data Description
RPC Language Reference
Enumerations
Constants
Type Definitions
Declarations
Simple Declarations
Fixed-Length Array Declarations
Variable-Length Array Declarations
Pointer Declarations
Structures
Unions
Programs
Special Cases
C-style Mode
Booleans
Strings
Opaque Data
Voids
Appendix D Live RPC Code Examples
Directory Listing Program and Support Routines (rpcgen)
Time Server Program (rpcgen)
Add Two Numbers Program (rpcgen)
Spray Packets Program (rpcgen)
Print Message Program With Remote Version
Batched Code Example
Non-Batched Example
Appendix E The portmap Utility
System Registration Overview
portmap Protocol
portmap Operation
PMAPPROC_NULL
PMAPPROC_SET
PMAPPROC_UNSET
PMAPPROC_GETPORT
PMAPPROC_DUMP
PMAPPROC_CALLIT
Bibliography
Appendix F Writing a Port Monitor With the Service Access Facility (SAF)
What Is the SAF
What Is the SAC
Basic Port Monitor Functions
Port Management
Activity Monitoring
Other Port Monitor Functions
Restricting Access to the System
Creating utmp Entries
Port Monitor Process IDs and Lock Files
Changing the Service Environment: Running doconfig()
Terminating a Port Monitor
SAF Files
The Port Monitor Administrative File
Per-Service Configuration Files
Private Port Monitor Files
The SAC/Port Monitor Interface
Message Formats
sac Messages
Port Monitor Messages
Message Classes
The Port Monitor Administrative Interface
The SAC Administrative File _sactab
The Port Monitor Administrative File _pmtab
The SAC Administrative Command sacadm
The Port Monitor Administrative Command pmadm
Monitor-Specific Administrative Command
The Port Monitor/Service Interface
New Service Invocations
Standing Service Invocations
Port Monitor Requirements
Initial Environment
Important Files
Port Monitor Responsibilities
Configuration Files and Scripts
Interpreting Configuration Scripts With doconfig()
The Per-System Configuration File
Per-Port Monitor Configuration Files
Per-Service Configuration Files
The Configuration Language
Printing, Installing, and Replacing Configuration Scripts
Per-System Configuration Scripts
Sample Per-System Configuration Script
Per-Port Monitor Configuration Scripts
Sample Per-Port Monitor Configuration Script
Per-Service Configuration Scripts
Sample Per-Service Configuration Script
Sample Port Monitor Code
Logic Diagram and Directory Structure
/etc/saf/_sysconfig
/etc/saf/_sactab
/etc/saf/pmtag
/etc/saf/pmtag/_config
/etc/saf/pmtag/_pmtab
/etc/saf/pmtag/svctag
/etc/saf/pmtag/_pid
/etc/saf/pmtag/_pmpipe
/var/saf/_log
/var/saf/pmtag
Glossary
Index
Numbers and Symbols
A
B
C
D
E
F
G
H
I
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
© 2010, Oracle Corporation and/or its affiliates