Ever wonder how STCP knows what its name is? In the >system>stcp directory is a file called host. The file contains one line which is the name of the module. You can edit or display the file directly but I recommend that you use the hostname command. Without arguments it will display the contents of the host file.

ready  13:46:51
Figure 1 – display the host name with the hostname command

If you provide an argument it will set the contents of the host file to that argument value, and that becomes the STCP host name.

hostname this-is-a-test
ready  13:47:00

ready  13:47:03
Figure 2 – Change the host name with the hostname command

Besides the command there is a  programming function to return the host name

#include <stdio.h>
#include <errno.h>
#include <netdb.h>

int errno;
void exit (int);

main ()
char name [32];

if (gethostname (name, 32) < 0)
perror ("ex_gethostname: Error getting hostname");
exit (errno);
printf ("hostname is %sn", name);
Figure 3 – Program using the gethostname function

A number of subsystems rely on the host name to be able to identify the module. They retrieve the name and either use the name as a character string or resolve the name into an IP address. If the name is not there, wrong, resolves to the wrong IP address or cannot be resolved the application may fail or function incorrectly.

For example if you are doing external authentication via a Radius server, the IP address of the module, resolved from the host name,  is sent in the Radius request packet in the NAS-IP-ADDRESS field. Your Radius server may reject the request if the IP address is not one it is expecting or if the provided user ID is not associated with that IP address.

The hostname command is part of the module_start_up command macro. It is not necessary to set the name every time the system boots since the name is persistent across boots, but it doesn’t hurt. The important thing is to make sure that the name is set to something that resolves to the correct IP address. Having the wrong name or the wrong IP address resolution may make subsystems like Radius, SSH or Samba unusable.