char * get_uaddr(int fd, struct netconfig *nconf, struct netbuf *nb) { struct nfs_svc_args nsa; char *ua, *ua2, *mua = NULL; char me[MAXHOSTNAMELEN]; struct nd_addrlist *nas; struct nd_hostserv hs; struct nd_mergearg ma; ua = taddr2uaddr(nconf, nb); if (ua == NULL) { #ifdef DEBUG fprintf(stderr, "taddr2uaddr failed for netid %s\n", nconf->nc_netid); #endif return (NULL); } gethostname(me, MAXHOSTNAMELEN); hs.h_host = me; hs.h_serv = "nfs"; if (netdir_getbyname(nconf, &hs, &nas)) { #ifdef DEBUG netdir_perror("netdir_getbyname"); #endif return (NULL); } ua2 = taddr2uaddr(nconf, nas->n_addrs); if (ua2 == NULL) { #ifdef DEBUG fprintf(stderr, "taddr2uaddr failed for netid %s.\n", nconf->nc_netid); #endif return (NULL); } ma.s_uaddr = ua; ma.c_uaddr = ua2; ma.m_uaddr = NULL; if (netdir_options(nconf, ND_MERGEADDR, 0, (char *)&ma)) { #ifdef DEBUG netdir_perror("netdir_options"); #endif return (NULL); } mua = ma.m_uaddr; return (mua); }
static char * get_uaddr(struct netconfig *nconf, struct netbuf *nb) { struct nfs_svc_args nsa; char *ua, *ua2, *mua = NULL; char me[MAXHOSTNAMELEN]; struct nd_addrlist *nas; struct nd_hostserv hs; struct nd_mergearg ma; ua = taddr2uaddr(nconf, nb); if (ua == NULL) { return (NULL); } gethostname(me, MAXHOSTNAMELEN); hs.h_host = me; hs.h_serv = "nfs"; if (netdir_getbyname(nconf, &hs, &nas)) { return (NULL); } ua2 = taddr2uaddr(nconf, nas->n_addrs); if (ua2 == NULL) { return (NULL); } ma.s_uaddr = ua; ma.c_uaddr = ua2; ma.m_uaddr = NULL; if (netdir_options(nconf, ND_MERGEADDR, 0, (char *)&ma)) { return (NULL); } mua = ma.m_uaddr; return (mua); }
static void get_xdmcp_sock(void) { #ifdef STREAMSCONN struct netconfig *nconf; if ((xdmcpSocket = t_open("/dev/udp", O_RDWR, 0)) < 0) { XdmcpWarning("t_open() of /dev/udp failed"); return; } if (t_bind(xdmcpSocket, NULL, NULL) < 0) { XdmcpWarning("UDP socket creation failed"); t_error("t_bind(xdmcpSocket) failed"); t_close(xdmcpSocket); return; } /* * This part of the code looks contrived. It will actually fit in nicely * when the CLTS part of Xtrans is implemented. */ if ((nconf = getnetconfigent("udp")) == NULL) { XdmcpWarning("UDP socket creation failed: getnetconfigent()"); t_unbind(xdmcpSocket); t_close(xdmcpSocket); return; } if (netdir_options(nconf, ND_SET_BROADCAST, xdmcpSocket, NULL)) { XdmcpWarning("UDP set broadcast option failed: netdir_options()"); freenetconfigent(nconf); t_unbind(xdmcpSocket); t_close(xdmcpSocket); return; } freenetconfigent(nconf); #else int soopts = 1; #if defined(IPv6) && defined(AF_INET6) if ((xdmcpSocket6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) XdmcpWarning("INET6 UDP socket creation failed"); #endif if ((xdmcpSocket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) XdmcpWarning("UDP socket creation failed"); #ifdef SO_BROADCAST else if (setsockopt(xdmcpSocket, SOL_SOCKET, SO_BROADCAST, (char *) &soopts, sizeof(soopts)) < 0) XdmcpWarning("UDP set broadcast socket-option failed"); #endif /* SO_BROADCAST */ if (xdmcpSocket >= 0 && xdm_from != NULL) { if (bind(xdmcpSocket, (struct sockaddr *) &FromAddress, FromAddressLen) < 0) { FatalError("Xserver: failed to bind to -from address: %s\n", xdm_from); } } #endif /* STREAMSCONN */ }