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