|
|
1.1 ! root 1: # include <stdio.h> ! 2: # include <sys/types.h> ! 3: # include <sys/socket.h> ! 4: # include <sys/ioctl.h> ! 5: # include <netinet/in.h> ! 6: # include <netdb.h> ! 7: # include <signal.h> ! 8: # include <sccs.h> ! 9: ! 10: SCCSID(@(#)initsocket.c 8.1 12/31/84) ! 11: ! 12: /* ! 13: ** init_socket ! 14: ** initilize the socket to the socket server ! 15: */ ! 16: init_socket() ! 17: { ! 18: register int from_socket; /* file descriptor to attach to socket server */ ! 19: int to_ioctl = 1; /* used in ioctl call */ ! 20: struct sockaddr_in addr; /* address where socket server is */ ! 21: char hostname[BUFSIZ]; /* hostname */ ! 22: struct servent *server; ! 23: struct hostent *myhost; ! 24: auto int len; ! 25: extern int errno; ! 26: ! 27: if ( (len = fork()) != 0 ) ! 28: { ! 29: # ifdef DEBUG ! 30: printf("lock driver becomes %d\n",len); ! 31: # endif DEBUG ! 32: if ( len == -1 ) ! 33: { ! 34: perror("ingres lock driver, fork"); ! 35: exit(errno); ! 36: } ! 37: exit(0); ! 38: } ! 39: if ( (from_socket = socket(AF_INET,SOCK_STREAM,0)) == -1 ) ! 40: { ! 41: # ifdef DEBUG ! 42: perror("INIT_S socket"); ! 43: # endif DEBUG ! 44: exit(errno); ! 45: } ! 46: len = BUFSIZ; ! 47: gethostname(hostname,&len); ! 48: ! 49: if ( (server = getservbyname("ingreslock",(char *)0)) == 0 ) ! 50: exit(errno); ! 51: ! 52: if ( (myhost = gethostbyname(hostname)) == 0 ) ! 53: exit(errno); ! 54: bzero((char *) &addr,sizeof (addr)); ! 55: bcopy(myhost->h_addr,(char *)&addr.sin_addr,myhost->h_length); ! 56: addr.sin_family = AF_INET; ! 57: addr.sin_port = server->s_port; ! 58: len = sizeof (addr); ! 59: if ( bind(from_socket,&addr,len) == -1 ) ! 60: { ! 61: # ifdef DEBUG ! 62: perror("INIT_S bind, assuming driver already running"); ! 63: # endif DEBUG ! 64: exit(0); ! 65: } ! 66: ! 67: if ( listen(from_socket,10) == -1 ) ! 68: { ! 69: perror("Ingres lock, can't listen on port"); ! 70: exit(errno); ! 71: } ! 72: ioctl(from_socket,FIONBIO,&to_ioctl); ! 73: return ( from_socket ); ! 74: }/* init_socket */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.