[Info-vax] WASD demo issues

Mark Daniel mark.daniel at wasd.vsm.com.au
Fri Jan 28 22:16:59 EST 2022


On 28/1/22 9:54 am, issinoho wrote:
> On Thursday, 27 January 2022 at 13:31:29 UTC, issinoho wrote:
>> On Tuesday, 25 January 2022 at 21:59:16 UTC, Mark Daniel wrote:
>>> On 26/1/22 3:53 am, issinoho wrote:
8< snip 8<
> Ok, the root cause of the issue seems to be in the host name resolution, specifically with regard to case sensitivity. Setting an alias with the specific case that WASD is expecting solves the problem.

Confirmed via a little code (see below) and some local database fiddles.

WASD establishes the primary server host name using gethostname().  This 
always is returned as lower case regardless of the host name database entry.

All upper or lower case host name works.  Does not work with mixed-case.

$ tcpip show host /local

      LOCAL database

Host address    Host name

127.0.0.1       LOCALHOST, localhost
192.168.1.2     gort.lan
192.168.1.3     klaatu.lan
192.168.1.254   router.lan

$ mcr []lookup "klaatu.lan"
gethostname() klaatu.lan 0
gethostbyname() klaatu.lan %X00061578
$QIO() klaatu.lan %X00000001 %X00000001

$ tcpip show host /local

      LOCAL database

Host address    Host name

192.168.1.3     KLAATU.LAN
127.0.0.1       LOCALHOST, localhost
192.168.1.2     gort.lan
192.168.1.254   router.lan
192.168.1.86    x86vms.lan

$ mcr []lookup "klaatu.lan"
gethostname() klaatu.lan 0
gethostbyname() klaatu.lan %X00061578
$QIO() klaatu.lan %X00000001 %X00000001

$ tcpip show host /local

      LOCAL database

Host address    Host name

127.0.0.1       LOCALHOST, localhost
192.168.1.2     gort.lan
192.168.1.3     klAAtu.lan
192.168.1.254   router.lan
192.168.1.86    x86vms.lan

$ mcr []lookup "klaatu.lan"
gethostname() klaatu.lan 0
gethostbyname() klaatu.lan %X00000000
$QIO() klaatu.lan %X00000001 %X00000870

$ mcr []lookup "klAAtu.lan"
gethostname() klaatu.lan 0
gethostbyname() klAAtu.lan %X00061578
$QIO() klAAtu.lan %X00000001 %X00000001

/*****************************************************************************/

#include<ints.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<in.h>
#include<netdb.h>

#include<iodef.h>
#include<iosbdef.h>
#include<efndef.h>
#include<starlet.h>
#include<descrip.h>

#define INETACP_FUNC$C_GETHOSTBYNAME 1

int main (int argc, char *argv[])
{
    static $DESCRIPTOR (TcpIpDeviceDsc, "TCPIP$DEVICE");
    static $DESCRIPTOR (HostNameDsc, "");
    static $DESCRIPTOR (HostAddressDsc, "");

    static char SubFunction [4] =
      { INETACP_FUNC$C_GETHOSTBYNAME, 0, 0, 0 };
    static struct dsc$descriptor SubFunctionDsc =
      { sizeof(SubFunction), DSC$K_DTYPE_T, DSC$K_CLASS_S, SubFunction };

    int  status;
    short  chan;
    char  hname [128];
    unsigned char  ipaddr [16];
    struct _iosb  IOsb;
    struct hostent  *heptr;

    status = gethostname (hname, sizeof(hname));
    printf ("gethostname() %s %d\n", hname, status);

    heptr = gethostbyname (argv[1]);
    printf ("gethostbyname() %s %%X%08.08X\n", argv[1], heptr);

    HostNameDsc.dsc$a_pointer = argv[1];
    HostNameDsc.dsc$w_length = strlen(argv[1]);

    HostAddressDsc.dsc$a_pointer = (char*)ipaddr;
    HostAddressDsc.dsc$w_length = sizeof(ipaddr);

    status = sys$assign (&TcpIpDeviceDsc, &chan, 0, 0);
    if (!(status & 1)) exit (status);

    status = sys$qiow (EFN$C_ENF, chan, IO$_ACPCONTROL,
                       &IOsb, 0, 0,
                       &SubFunctionDsc,
                       &HostNameDsc, 0,
                       &HostAddressDsc, 0, 0);

    printf ("$QIO() %s %%X%08.08X %%X%08.08X\n",
            HostNameDsc.dsc$a_pointer, status, IOsb.iosb$w_status);
}

/*****************************************************************************/

-- 
Anyone, who using social-media, forms an opinion regarding anything 
other than the relative cuteness of this or that puppy-dog, needs 
seriously to examine their critical thinking.


More information about the Info-vax mailing list