If one has external and internal interface (say e1000g0 and e1000g1) then the way Solaris works is that you define two files:
/etc/hostname.e1000g0 and /etc/hostname.e1000g1
then you give in these files some hostnames and define the respective IP-s in /etc/hosts file. The way we originally did was specify the hostname in the external if file (e.g. mercury) and the internal if we labelled with -int in the end (e.g. mercury-int). This however caused communication problems between nodes as Solaris gave any kind of TURL-s as hname-int:port which wasn't resolvable and took some time to track down.
Solution: just enter the IP address in the /etc/hostname.<extif> instead of the internal name for it.
If one runs a GFTP door on Solaris, then the default way dCache is configured registers it just fine in the admin node and all is nice. At least until you start to use SRM, which hands out the different GFTP doors and for the Solaris node it appears as gsiftp://shortname:2811/... which is definitely not resolved outside the datacenter (sometimes also not internally even the domain is usually defined in most nodes).
The reason is that Solaris takes the naming resolution order from /etc/nsswitch.conf file and the default is that hosts are resolved from files and then DNS.
The solution: just replace the order in /etc/nsswitch.conf so that DNS is used first. For example:
hosts: dns files