Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




28.3.1 The Naming Scheme of the NSS Modules

The name of each function consist of various parts:


service of course corresponds to the name of the module this function is found in.1 The function part is derived from the interface function in the C library itself. If the user calls the function gethostbyname and the service used is files the function


in the module


is used. You see, what is explained above in not the whole truth. In fact the NSS modules only contain reentrant versions of the lookup functions. I.e., if the user would call the gethostbyname_r function this also would end in the above function. For all user interface functions the C library maps this call to a call to the reentrant function. For reentrant functions this is trivial since the interface is (nearly) the same. For the non-reentrant version The library keeps internal buffers which are used to replace the user supplied buffer.

I.e., the reentrant functions can have counterparts. No service module is forced to have functions for all databases and all kinds to access them. If a function is not available it is simply treated as if the function would return unavail (see Actions in the NSS configuration).

The file name would be on a Solaris 2 system This is the difference mentioned above. Sun's NSS modules are usable as modules which get indirectly loaded only.

The NSS modules in the GNU C Library are prepared to be used as normal libraries themselves. This is not true at the moment, though. However, the organization of the name space in the modules does not make it impossible like it is for Solaris. Now you can see why the modules are still libraries.2


[1] Now you might ask why this information is duplicated. The answer is that we want to make it possible to link directly with these shared objects.

[2] There is a second explanation: we were too lazy to change the Makefiles to allow the generation of shared objects not starting with lib but don't tell this to anybody.

  Published under the terms of the GNU General Public License Design by Interspire