Go to main content
oracle home
ONC+ RPC Developer's Guide
Exit Print View
Search Term
Search Scope:
This Document
Entire Library
» ...
Documentation Home
»
Oracle Solaris 11.3 Information Library
»
ONC+ RPC Developer's Guide
Updated: March 2019
ONC+ RPC Developer's Guide
Document Information
Using This Documentation
Product Documentation Library
Feedback
Chapter 1 Introduction to ONC+ Technologies
Integrated View of ONC+ Based Applications
Brief Description of ONC+ Technologies
TI-RPC Overview
XDR Overview
NFS Overview
Chapter 2 Introduction to TI-RPC
What Is TI-RPC?
TI-RPC Issues
Parameter Passing in TI-RPC
Binding in TI-RPC
Transport Protocol
Call Semantics in TI-RPC
Data Representation in TI-RPC
TI-RPC Program, Version, and Procedure Numbers
Overview of TI-RPC Interface Routines
Simplified TI-RPC Interface Routines
Standard Interface Routines
Top-Level Routines
Intermediate-Level Routines
Expert-Level RPC Routines
Bottom-Level RPC Routines
Network Selection in TI-RPC
Transport Selection in TI-RPC
Name-to-Address Translation in TI-RPC
Address Lookup Services and RPC
Registering Addresses in RPC
Reporting RPC Information
Chapter 3 rpcgen Programming Guide
What Is rpcgen?
Software Environment Features
rpcgen Tutorial
Converting Local Procedures to Remote Procedures
Passing Complex Data Structures
Preprocessing Directives
cpp Directive
Compile-Time Flags
Compile-Time Client and Server Templates
Compile-Time C-style Mode
Compile-Time MT-Safe Code
Compile-Time MT Auto Mode
Compile-Time TI-RPC or TS-RPC Library Selection
Compile-Time ANSI C-compliant Code
Compile-Time 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
64-Bit Considerations for rpcgen
IPv6 Considerations for rpcgen
Debugging Applications
Chapter 4 Programmer's Interface to RPC
Simplified Interface
Client Side of Simplified Interface
Server Side of the Simplified Interface
Hand-Coded Registration Routine
Passing Arbitrary Data Types
Standard Interfaces
Top-Level Interface
Client Side of the Top-Level Interface
Intermediate-Level Interface
Client Side of the Intermediate-Level Interface
Server Side of the Intermediate-Level Interface
Expert-Level Interface
Client Side of the Expert-Level Interface
Server Side of the Expert-Level Interface
Bottom-Level Interface
Client Side of the Bottom-Level Interface
Server Side of the Bottom-Level Interface
Server Caching
Low-Level Data Structures
Testing Programs Using Low-Level Raw RPC
Connection-Oriented Transports
Memory Allocation With XDR
Chapter 5 Advanced RPC Programming Techniques
poll() on the Server Side
Broadcast RPC
Batching RPC Clients
Authentication of RPC Clients
AUTH_SYS Authentication
AUTH_DES Authentication
AUTH_KERB Authentication
Authentication Using RPCSEC_GSS
RPCSEC_GSS API
RPCSEC_GSS Routines
Creating a Context
Changing Values and Destroying a Context
Principal Names
Setting Server Principal Names
Generating Client Principal Names
Freeing Principal Names
Receiving Credentials at the Server
Cookies and RPC
Cookies and Callbacks in RPC
Maximum Data Size
Miscellaneous Functions
Associated Files
gsscred Table
/etc/gss/qop and /etc/gss/mech
Using Port Monitors
Using inetd
Using the Listener
Multiple Server Versions
Multiple Client Versions
Using Transient RPC Program Numbers
Chapter 6 Porting From TS-RPC to TI-RPC
Porting an Application
Benefits of Porting
IPv6 Considerations for RPC
Porting Issues
Differences Between TI-RPC and TS-RPC
Function Compatibility Lists
Creating and Destroying Services
Registering and Unregistering Services
Compatibility Calls
Broadcasting in RPC
Address Management Functions
Authentication Functions
Other Functions
Comparison Examples
Chapter 7 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
Chapter 8 Extensions to the Oracle Solaris RPC Library
New Features in the Oracle Solaris RPC Library
One-Way Messaging
clnt_send() Function
oneway Attribute
One-way Call Using a Simple Counter Service
Non-Blocking I/O
Using Non-Blocking I/O
Using a Simple Counter With Non-blocking I/O
clnt_call() Configured as Non-Blocking
Client Connection Closure Callback
Example of Client Connection Closure Callback
User File Descriptor Callbacks
Example of User File Descriptors
Appendix A XDR Technical Note
What Is XDR?
XDR Canonical Standard
XDR Library
XDR Library Primitives
Memory Requirements for XDR Routines
Number Filters
Floating-Point Filters
Enumeration Filters
No-Data Routine
Constructed Data Type Filters
String Type Definition in RPC
Byte Arrays
Arrays in RPC
Array Example 1
Array Example 2
Array Example 3
Opaque Data
Fixed-Length Arrays
Discriminated Unions
Discriminated Union Example
Pointers in RPC
Pointer Example
Pointer Semantics
Nonfilter Primitives
Operation Directions
Stream Access
Standard I/O Streams
Memory Streams
Record TCP/IP Streams
XDR Stream Implementation
XDR Object
Advanced XDR Topics
Linked Lists
Appendix B RPC Protocol and Language Specification
Protocol Overview
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 Call Messages
Broadcast RPC
RPC Message Protocol
Record-Marking Standard
Authentication Protocols
AUTH_NONE Authentication
AUTH_SYS Authentication
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
RPC Language Specification
Example Service Described in the RPC Language
RPCL Syntax
RPCL Enumerations
RPCL Constants
RPCL Type Definitions
RPCL Declarations
RPCL Simple Declarations
RPCL Fixed-Length Array Declarations
RPCL Variable-Length Array Declarations
RPCL Pointer Declarations
RPCL Structures
RPCL Unions
RPCL Programs
RPCL Special Cases
RPCL C-style Mode
RPCL Booleans
RPCL Strings
RPCL Opaque Data
RPCL Voids
rpcbind Protocol
rpcbind Operation
Appendix C XDR Protocol Specification
XDR Protocol Introduction
Graphic Box Notation
Basic Block Size
XDR Data Type Declarations
Signed Integer
Declaration of Signed Integer
Unsigned Integer
Declaration of Unsigned Integer
Enumeration Representation
Boolean Representation
Hyper Integer and Unsigned Hyper Integer
Declaration of Hyper Integer
Floating Point Representation
Declaration of Floating Point Data
Quadruple-Precision Floating Point
Declaration of Quadruple-Precision Floating Point
Fixed-Length Opaque Data
Declaration of Opaque Data
Fixed-Length Opaque Encoding
Variable-Length Opaque Data
Declaration of Variable-Length Opaque Data
Counted Byte Strings
Declaration of Counted Byte Strings
Fixed-Length Array
Declaration of Fixed-Length Array
Variable-Length Array
Declaration of Counted Array and Variable-Length Array
Structure Components
Declaration of Structure
Discriminated Union
Declaration of Discriminated Union
Void Type
Declaration of a Void
Constant Type
Declaration of a Constant
Typedef and Data
Optional-Data Type
XDR Language Specification
Notational Conventions of XDR
Lexical Notes About XDR Specification
Syntax Notes About XDR
XDR Data Description
RPC Language Reference
Appendix D 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 portmap Utility
System Registration Overview
portmap Protocol
portmap Operation
PMAPPROC_NULL Procedure
PMAPPROC_SET Procedure
PMAPPROC_UNSET Procedure
PMAPPROC_GETPORT Procedure
PMAPPROC_DUMP Procedure
PMAPPROC_CALLIT Procedure
ONC+ RPC Glossary
Index
Index Numbers and Symbols
Index A
Index B
Index C
Index D
Index E
Index F
Index H
Index I
Index K
Index L
Index M
Index N
Index O
Index P
Index Q
Index R
Index S
Index T
Index U
Index V
Index W
Index X
Language:
English
ONC+ RPC Developer's Guide
March 2019
Describes the ONC+ distributed services.
Document Information
Using This Documentation
Product Documentation Library
Feedback
1 Introduction to ONC+ Technologies
Integrated View of ONC+ Based Applications
Brief Description of ONC+ Technologies
TI-RPC Overview
XDR Overview
NFS Overview
2 Introduction to TI-RPC
What Is TI-RPC?
TI-RPC Issues
Parameter Passing in TI-RPC
Binding in TI-RPC
Transport Protocol
Call Semantics in TI-RPC
Data Representation in TI-RPC
TI-RPC Program, Version, and Procedure Numbers
Overview of TI-RPC Interface Routines
Simplified TI-RPC Interface Routines
Standard Interface Routines
Top-Level Routines
Intermediate-Level Routines
Expert-Level RPC Routines
Bottom-Level RPC Routines
Network Selection in TI-RPC
Transport Selection in TI-RPC
Name-to-Address Translation in TI-RPC
Address Lookup Services and RPC
Registering Addresses in RPC
Reporting RPC Information
3 rpcgen Programming Guide
What Is rpcgen?
Software Environment Features
rpcgen Tutorial
Converting Local Procedures to Remote Procedures
Passing Complex Data Structures
Preprocessing Directives
cpp Directive
Compile-Time Flags
Compile-Time Client and Server Templates
Compile-Time C-style Mode
Compile-Time MT-Safe Code
Compile-Time MT Auto Mode
Compile-Time TI-RPC or TS-RPC Library Selection
Compile-Time ANSI C-compliant Code
Compile-Time 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
64-Bit Considerations for rpcgen
IPv6 Considerations for rpcgen
Debugging Applications
4 Programmer's Interface to RPC
Simplified Interface
Client Side of Simplified Interface
Server Side of the Simplified Interface
Hand-Coded Registration Routine
Passing Arbitrary Data Types
Standard Interfaces
Top-Level Interface
Client Side of the Top-Level Interface
Intermediate-Level Interface
Client Side of the Intermediate-Level Interface
Server Side of the Intermediate-Level Interface
Expert-Level Interface
Client Side of the Expert-Level Interface
Server Side of the Expert-Level Interface
Bottom-Level Interface
Client Side of the Bottom-Level Interface
Server Side of the Bottom-Level Interface
Server Caching
Low-Level Data Structures
Testing Programs Using Low-Level Raw RPC
Connection-Oriented Transports
Memory Allocation With XDR
5 Advanced RPC Programming Techniques
poll() on the Server Side
Broadcast RPC
Batching RPC Clients
Authentication of RPC Clients
AUTH_SYS Authentication
AUTH_DES Authentication
AUTH_KERB Authentication
Authentication Using RPCSEC_GSS
RPCSEC_GSS API
RPCSEC_GSS Routines
Creating a Context
Changing Values and Destroying a Context
Principal Names
Setting Server Principal Names
Generating Client Principal Names
Freeing Principal Names
Receiving Credentials at the Server
Cookies and RPC
Cookies and Callbacks in RPC
Maximum Data Size
Miscellaneous Functions
Associated Files
gsscred Table
/etc/gss/qop and /etc/gss/mech
Using Port Monitors
Using inetd
Using the Listener
Multiple Server Versions
Multiple Client Versions
Using Transient RPC Program Numbers
6 Porting From TS-RPC to TI-RPC
Porting an Application
Benefits of Porting
IPv6 Considerations for RPC
Porting Issues
Differences Between TI-RPC and TS-RPC
Function Compatibility Lists
Creating and Destroying Services
Registering and Unregistering Services
Compatibility Calls
Broadcasting in RPC
Address Management Functions
Authentication Functions
Other Functions
Comparison Examples
7 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
8 Extensions to the Oracle Solaris RPC Library
New Features in the Oracle Solaris RPC Library
One-Way Messaging
clnt_send() Function
oneway Attribute
One-way Call Using a Simple Counter Service
Non-Blocking I/O
Using Non-Blocking I/O
Using a Simple Counter With Non-blocking I/O
clnt_call() Configured as Non-Blocking
Client Connection Closure Callback
Example of Client Connection Closure Callback
User File Descriptor Callbacks
Example of User File Descriptors
Appendix A XDR Technical Note
What Is XDR?
XDR Canonical Standard
XDR Library
XDR Library Primitives
Memory Requirements for XDR Routines
Number Filters
Floating-Point Filters
Enumeration Filters
No-Data Routine
Constructed Data Type Filters
String Type Definition in RPC
Byte Arrays
Arrays in RPC
Array Example 1
Array Example 2
Array Example 3
Opaque Data
Fixed-Length Arrays
Discriminated Unions
Discriminated Union Example
Pointers in RPC
Pointer Example
Pointer Semantics
Nonfilter Primitives
Operation Directions
Stream Access
Standard I/O Streams
Memory Streams
Record TCP/IP Streams
XDR Stream Implementation
XDR Object
Advanced XDR Topics
Linked Lists
Appendix B RPC Protocol and Language Specification
Protocol Overview
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 Call Messages
Broadcast RPC
RPC Message Protocol
Record-Marking Standard
Authentication Protocols
AUTH_NONE Authentication
AUTH_SYS Authentication
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
RPC Language Specification
Example Service Described in the RPC Language
RPCL Syntax
RPCL Enumerations
RPCL Constants
RPCL Type Definitions
RPCL Declarations
RPCL Simple Declarations
RPCL Fixed-Length Array Declarations
RPCL Variable-Length Array Declarations
RPCL Pointer Declarations
RPCL Structures
RPCL Unions
RPCL Programs
RPCL Special Cases
RPCL C-style Mode
RPCL Booleans
RPCL Strings
RPCL Opaque Data
RPCL Voids
rpcbind Protocol
rpcbind Operation
Appendix C XDR Protocol Specification
XDR Protocol Introduction
Graphic Box Notation
Basic Block Size
XDR Data Type Declarations
Signed Integer
Declaration of Signed Integer
Unsigned Integer
Declaration of Unsigned Integer
Enumeration Representation
Boolean Representation
Hyper Integer and Unsigned Hyper Integer
Declaration of Hyper Integer
Floating Point Representation
Declaration of Floating Point Data
Quadruple-Precision Floating Point
Declaration of Quadruple-Precision Floating Point
Fixed-Length Opaque Data
Declaration of Opaque Data
Fixed-Length Opaque Encoding
Variable-Length Opaque Data
Declaration of Variable-Length Opaque Data
Counted Byte Strings
Declaration of Counted Byte Strings
Fixed-Length Array
Declaration of Fixed-Length Array
Variable-Length Array
Declaration of Counted Array and Variable-Length Array
Structure Components
Declaration of Structure
Discriminated Union
Declaration of Discriminated Union
Void Type
Declaration of a Void
Constant Type
Declaration of a Constant
Typedef and Data
Optional-Data Type
XDR Language Specification
Notational Conventions of XDR
Lexical Notes About XDR Specification
Syntax Notes About XDR
XDR Data Description
RPC Language Reference
Appendix D 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 portmap Utility
System Registration Overview
portmap Protocol
portmap Operation
PMAPPROC_NULL Procedure
PMAPPROC_SET Procedure
PMAPPROC_UNSET Procedure
PMAPPROC_GETPORT Procedure
PMAPPROC_DUMP Procedure
PMAPPROC_CALLIT Procedure
ONC+ RPC Glossary
Index
Numbers and Symbols
A
B
C
D
E
F
H
I
K
L
M
N
O
P
Q
R
S
T
U
V
W
X