RUNMDN(1)RUNMDN(1)NAMErunmdn - A script to allow applications to use multilin-
gual domain names.
SYNOPSISrunmdn [-e local-codeset] program-name [args..]
DESCRIPTIONrunmdn enables applications to use multilingual domain
names without recompilation. Just add ``runmdn'' before
the application-name, and the application can handle non-
ASCII domain names. For example, you can do:
% runmdn telnet non-ASCII-hostname
Before using runmdn, you should set up properties related
to multilingual DNS by configuring mDNkit's configuration
file mdn.conf. See mdn.conf(5) which describes the con-
figuration.
OPTION
The following option is available:
-e local-codeset
Specify the application's local codeset. If the
option is not specified, runmdn guesses the codeset
from the current locale. See the ``NOTE'' section for
more details about local codeset.
IMPLEMENTATIONrunmdn is a small shell script that sets up an environment
variable called ``LD_PRELOAD'', so that an application
dynamically links a shared library ``libmdnresolv'' before
any other shared libraries.
The library ``libmdnresolv'' provides a special version of
resolver functions which implement features for handling
multilingual domain names. runmdn replaces the following
functions with the special version:
gethostbyname
gethostbyname2
gethostbyaddr
gethostbyname_r
gethostbyname2_r
gethostbyaddr_r
getipnodebyname
getipnodebyaddr
freehostent
getaddrinfo
freeaddrinfo
getnameinfo
By overriding them in the standard libraries with the spe-
cial version provided by ``libmdnresolv'', runmdn enables
applications to use multilingual domain names.
o These API functions accept non-ASCII domain names
encoded in the local codeset that the application is
using. Also the result from these APIs may contain
non-ASCII domain names.
o The normalization and codeset conversion between
application's local codeset and the codeset used in
DNS protocol data are handled automatically, so
users/applications need not worry about them.
Properties of multilingual DNS (such as the normalization
or the codeset used on DNS protocol data) can be config-
ured with the mDNkit's configuration file ( mdn.conf ).
See mdn.conf(5) for details.
NOTE
Unless -e option is specified, runmdn tries to guess the
application's local codeset from the application's current
locale. However, sometimes it cannot guess the codeset
correctly, for example if the application does not set the
locale appropriately by calling `setlocale()'. In that
case, you can explicitly specify the local codeset by set-
ting an environment variable ``MDN_LOCAL_CODESET''. See
the section ``LOCAL CODESET'' in mdn.conf(5) for details.
The idea of using ``LD_PRELOAD'' to replace some functions
in the standard library was taken from ``runsocks'' script
distributed as part of SOCKS5 reference implementation.
BUGS
There are many cases where runmdn does not work.
Your system must support ``LD_PRELOAD'' mechanism in the
first place.
Due to security reasons, ``LD_PRELOAD'' mechanism is dis-
abled for setuid programs in any sane systems. So runmdn
does not work for setuid programs such as ping or rsh.
If your application uses a function other than the ones
runmdn supports for name resolution, you lose.
SEE ALSOmdn.conf(5), runsocks(1)
April 6, 2001 RUNMDN(1)