1 /* 2 * Copyright (c) 1983 Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 */ 17 18 #ifndef lint 19 static char sccsid[] = "@(#)get_addrs.c 5.5 (Berkeley) 10/11/88"; 20 #endif /* not lint */ 21 22 #include "talk_ctl.h" 23 #include <netdb.h> 24 25 get_addrs(my_machine_name, his_machine_name) 26 char *my_machine_name, *his_machine_name; 27 { 28 struct hostent *hp; 29 struct servent *sp; 30 31 msg.pid = htonl(getpid()); 32 /* look up the address of the local host */ 33 hp = gethostbyname(my_machine_name); 34 if (hp == NULL) { 35 fprintf(stderr, "talk: %s: ", my_machine_name); 36 herror((char *)NULL); 37 exit(-1); 38 } 39 bcopy(hp->h_addr, (char *)&my_machine_addr, hp->h_length); 40 /* 41 * If the callee is on-machine, just copy the 42 * network address, otherwise do a lookup... 43 */ 44 if (strcmp(his_machine_name, my_machine_name)) { 45 hp = gethostbyname(his_machine_name); 46 if (hp == NULL) { 47 fprintf(stderr, "talk: %s: ", his_machine_name); 48 herror((char *)NULL); 49 exit(-1); 50 } 51 bcopy(hp->h_addr, (char *) &his_machine_addr, hp->h_length); 52 } else 53 his_machine_addr = my_machine_addr; 54 /* find the server's port */ 55 sp = getservbyname("ntalk", "udp"); 56 if (sp == 0) { 57 fprintf(stderr, "talk: %s/%s: service is not registered.\n", 58 "ntalk", "udp"); 59 exit(-1); 60 } 61 daemon_port = sp->s_port; 62 } 63