In RAD architecture, the clients can be local or remote, and the clients interact with the RAD modules to perform various administrative activities. For example, a client interacts with the ZFS management RAD module to perform storage-related activities. These RAD clients can be written in C, Java, or Python.
The following figure shows the architecture of RAD.
Figure 1 Architecture of RAD
Implicit – Used for local connections, for example, using rc_connect_unix(NULL, ...). The RAD daemon reads the user's credentials from the calling process.
Explicit with PAM – Performed by using APIs such as rc_auth_login() and rc_connect_uri() in C client, rad.auth.RadAuth class in Python, and RadAuthHandler in Java.
Explicit with GSS – Performed by using APIs rc_connect_gss() or rc_connect_uri() in C client. This requires Kerberos setup. For more information about using Kerberos with RAD, see Generic Security Services API Transport in RAD.
For Python – solaris/system/management/rad/client/rad-python-37, solaris/system/management/rad/client/rad-python-35, or solaris/system/management/rad/client/rad-python-27, depending on the Python version required
To use radadrgen to generate API-specific language client and server bindings, see radadrgen Processing Tool in Remote Administration Daemon Module Developer’s Guide.