#include <descrip.h>
#include <stdio.h>

static struct { 			/* Used in all of the GETJNI() calls */
    char n_name[9];
    char l_name[9];
    char l_daemon[33];
    char ln_name[9];
    int node_type;
    int link_pid;
    int link_status;
    int link_qcnt;
    int line_status;
    int line_tot;
    int line_err;
    int line_tmo;
    int context;
    int mask;
} jinf;

static int init = 0;			/* Flag for use of rou_init_route() */
static int status = 0;

/* Descriptors for buffers */

static struct dsc$descriptor_s
    node_name	= { 8, DSC$K_DTYPE_T, DSC$K_CLASS_S, &jinf.n_name},
    link_daemon = {32, DSC$K_DTYPE_T, DSC$K_CLASS_S, &jinf.l_daemon},
    line_name	= { 8, DSC$K_DTYPE_T, DSC$K_CLASS_S, &jinf.ln_name};


/* Check if the hook already in use? */

main()
{
    static struct dsc$descriptor_s
	link_name   = { 8, DSC$K_DTYPE_T, DSC$K_CLASS_S, &jinf.l_name};

    jinf.context = -1;			/* Unknown */
    jinf.mask = 0x0a;			/* Want LINKs and HOOKs */

    if (init++ == 0) {			/* First time through */
	status = rou_init_route();
	printf("rou_init_route() = %08X\n", status);
    }

    /* Do it to it */

	printf("nodename t linkname linkpid  s linkdaem linename\n");
	printf("-------- - -------- -------- - -------- --------\n");

    while (rou_getjni(&jinf.context, &jinf.mask, &node_name, &jinf.node_type,
	    &link_name, &jinf.link_pid, &jinf.link_status, &jinf.link_qcnt,
	    &link_daemon, &line_name, &jinf.line_status, &jinf.line_tot,
	    &jinf.line_err, &jinf.line_tmo) & 1) {

	jinf.n_name[8]='\0';
	jinf.l_name[8]='\0';
	jinf.l_daemon[8]='\0';
	jinf.ln_name[8]='\0';

	printf("%8s %1d %8s %08X %1d %8s %8s\n", jinf.n_name, jinf.node_type,
	    jinf.l_name, jinf.link_pid, jinf.link_status, jinf.l_daemon,
	    jinf.ln_name);
    }
}
