|
|
1.1 ! root 1: /* $Header: get_addrs.c 1.5 83/04/01 17:55:41 moore Exp $ */ ! 2: ! 3: #include "talk_ctl.h" ! 4: ! 5: struct hostent *gethostbyname(); ! 6: struct servent *getservbyname(); ! 7: ! 8: get_addrs(my_machine_name, his_machine_name) ! 9: char *my_machine_name; ! 10: char *his_machine_name; ! 11: { ! 12: struct hostent *hp; ! 13: struct servent *sp; ! 14: ! 15: msg.pid = getpid(); ! 16: ! 17: /* look up the address of the local host */ ! 18: ! 19: hp = gethostbyname(my_machine_name); ! 20: ! 21: if (hp == (struct hostent *) 0) { ! 22: printf("This machine doesn't exist. Boy, am I confused!\n"); ! 23: exit(-1); ! 24: } ! 25: ! 26: if (hp->h_addrtype != AF_INET) { ! 27: printf("Protocal mix up with local machine address\n"); ! 28: exit(-1); ! 29: } ! 30: ! 31: bcopy(hp->h_addr, (char *)&my_machine_addr, hp->h_length); ! 32: ! 33: /* if he is on the same machine, then simply copy */ ! 34: ! 35: if ( bcmp((char *)&his_machine_name, (char *)&my_machine_name, ! 36: sizeof(his_machine_name)) == 0) { ! 37: bcopy((char *)&my_machine_addr, (char *)&his_machine_addr, ! 38: sizeof(his_machine_name)); ! 39: } else { ! 40: ! 41: /* look up the address of the recipient's machine */ ! 42: ! 43: hp = gethostbyname(his_machine_name); ! 44: ! 45: if (hp == (struct hostent *) 0 ) { ! 46: printf("%s is an unknown host\n", his_machine_name); ! 47: exit(-1); ! 48: } ! 49: ! 50: if (hp->h_addrtype != AF_INET) { ! 51: printf("Protocol mix up with remote machine address\n"); ! 52: exit(-1); ! 53: } ! 54: ! 55: bcopy(hp->h_addr, (char *) &his_machine_addr, hp->h_length); ! 56: } ! 57: ! 58: /* find the daemon portal */ ! 59: ! 60: #ifdef NTALK ! 61: sp = getservbyname("ntalk", "udp"); ! 62: #else ! 63: sp = getservbyname("talk", "udp"); ! 64: #endif ! 65: ! 66: if (strcmp(sp->s_proto, "udp") != 0) { ! 67: printf("Protocol mix up with talk daemon\n"); ! 68: exit(-1); ! 69: } ! 70: ! 71: if (sp == 0) { ! 72: p_error("This machine doesn't support a tcp talk daemon"); ! 73: exit(-1); ! 74: } ! 75: ! 76: daemon_port = sp->s_port; ! 77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.