- struct sockaddr_dn addr;
- struct accessdata_dn accessdata;
- struct nodeent *nodeaddr = getnodebyname(host);
-
- if(!nodeaddr)
- return -1;
- if (protocol && strcmp("dnet",protocol))
- return -1;
- addr.sdn_family = AF_DECnet;
-
- addr.sdn_add.a_len = nodeaddr->n_length;
- memcpy(addr.sdn_add.a_addr, nodeaddr->n_addr, addr.sdn_add.a_len);
-
- sprintf((char *)addr.sdn_objname, "X$X%d", port);
- addr.sdn_objnamel = strlen((char *)addr.sdn_objname);
- addr.sdn_objnum = 0;
-
- fd = socket(PF_DECnet, SOCK_STREAM, 0);
- if(fd == -1)
- return -1;
-
- memset(&accessdata, 0, sizeof(accessdata));
- sprintf((char*)accessdata.acc_acc, "%d", getuid());
- accessdata.acc_accl = strlen((char *)accessdata.acc_acc);
- setsockopt(fd, DNPROTO_NSP, SO_CONACCESS, &accessdata, sizeof(accessdata));