static int make_r8a66597_device(struct r8a66597 *r8a66597, struct urb *urb, u8 addr) { struct r8a66597_device *dev; int usb_address = urb->setup_packet[2]; /* urb->pipe is address 0 */ dev = kzalloc(sizeof(struct r8a66597_device), GFP_ATOMIC); if (dev == NULL) return -ENOMEM; dev_set_drvdata(&urb->dev->dev, dev); dev->udev = urb->dev; dev->address = addr; dev->usb_address = usb_address; dev->state = USB_STATE_ADDRESS; dev->ep_in_toggle = 0; dev->ep_out_toggle = 0; INIT_LIST_HEAD(&dev->device_list); list_add_tail(&dev->device_list, &r8a66597->child_device); get_port_number(r8a66597, urb->dev->devpath, &dev->root_port, &dev->hub_port); if (!is_child_device(urb->dev->devpath)) r8a66597->root_hub[dev->root_port].dev = dev; set_devadd_reg(r8a66597, dev->address, get_r8a66597_usb_speed(urb->dev->speed), get_parent_r8a66597_address(r8a66597, urb->dev), dev->hub_port, dev->root_port); return 0; }
int main(int argc, char *argv[]) { struct sockaddr_in master, from; char *ep, ip[INET_ADDRSTRLEN]; int i, port_number, sock, fromlength; u_short port; /* if the number of args aren't as expected, print usage info */ check_number_of_args(argc); /* safe to do this */ port = get_port_number(argv[1]); /* Check file and logs */ check_file_directory(argv[2]); check_log_file(argv[3]); /* time to set up and listen on the socket */ memset(&master, 0, sizeof(master)); master.sin_family = AF_INET; master.sin_addr.s_addr = htonl(INADDR_ANY); master.sin_port = htons(port); sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { fprintf(stderr, "Server: cannot open master socket\n"); exit(1); } /* Bind to the socket */ if (bind(sock, (struct sockaddr*) &master, sizeof(master))){ fprintf(stderr, "Server: cannot open master socket\n"); exit(1); } /* We are now bound and listing to connections on sock * to a connected client */ if (listen(sock, 5) == -1){ fprintf(stderr, "listen failed\n"); } printf("Server up and listening for connections on port %u\n", port); while(1){ int fromsd; fromlength = sizeof(from); fromsd = accept(sock, (struct sockaddr *) &from, &fromlength); if (fromsd == -1){ fprintf(stderr, "accept failed\n"); } /* get the ip of the request to be used in logging later */ inet_ntop(AF_INET, &(from.sin_addr), ip, INET_ADDRSTRLEN); /* Now ready to service the new request */ service_request(fromsd, ip); } return(0); }
int ls_initrex(int num, int options) { struct servent *sv; if (geteuid() == 0) rootuid_ = TRUE; if (initenv_(NULL, NULL)<0) { if (rootuid_ && !(options & KEEPUID)) lsfSetUid(getuid()); return(-1); } inithostsock_(); lsQueueInit_(&requestQ, lsReqCmp_, NULL); if (requestQ == NULL) { lserrno = LSE_MALLOC; return(-1); } res_addr_.sin_family = AF_INET; if (genParams_[LSF_RES_PORT].paramValue) { if ((res_addr_.sin_port = atoi(genParams_[LSF_RES_PORT].paramValue)) != 0) res_addr_.sin_port = htons(res_addr_.sin_port); else goto res_init_fail; } else if (genParams_[LSF_RES_DEBUG].paramValue) { res_addr_.sin_port = htons(RES_PORT); } else { # if defined(_COMPANY_X_) if ((res_addr_.sin_port = get_port_number(RES_SERVICE,(char *)NULL)) == -1) { # else if ((sv = getservbyname("res", "tcp")) != NULL) res_addr_.sin_port = sv->s_port; else { # endif res_init_fail: lserrno = LSE_RES_NREG; if (rootuid_ && !(options & KEEPUID)) lsfSetUid(getuid()); return (-1); } } initconntbl_(); FD_ZERO(&connection_ok_); if ((rootuid_) && (genParams_[LSF_AUTH].paramValue == NULL)) { int i; i = opensocks_(num); if (!(options & KEEPUID)) lsfSetUid(getuid()); return (i); } else { return (num); } } int opensocks_(int num) { static char fname[] = "opensocks_"; int s; int nextdescr; int i; totsockets_ = (num <= 0 || num > MAXCONNECT) ? LSF_DEFAULT_SOCKS : num; if (logclass & LC_COMM) ls_syslog(LOG_DEBUG,"%s: try to allocate num <%d> of socks",fname,num); nextdescr = FIRST_RES_SOCK; for (i = 0; i < totsockets_; i++) { if ((s = CreateSock_(SOCK_STREAM)) < 0) { if (logclass & LC_COMM) ls_syslog(LOG_DEBUG, "%s: CreateSock_ failed, iter:<%d> %s", fname,i,strerror(errno)); totsockets_ = i; if (i > 0) { break; } else { return(-1); } } if (s != nextdescr) { if (dup2(s,nextdescr) < 0) { if (logclass & LC_COMM) ls_syslog(LOG_DEBUG, "%s: dup2() failed, old:<%d>, new<%d>, iter:<%d> %s", fname,s,nextdescr,i,strerror(errno)); close(s); lserrno = LSE_SOCK_SYS; totsockets_ = i; if (i > 0) break; else return (-1); } #if defined(FD_CLOEXEC) fcntl(nextdescr, F_SETFD, (fcntl(nextdescr, F_GETFD) | FD_CLOEXEC)) ; #else #if defined(FIOCLEX) (void)ioctl(nextdescr, FIOCLEX, (char *)NULL); #endif #endif close(s); } nextdescr++; } currentsocket_ = FIRST_RES_SOCK; if (logclass & LC_COMM) ls_syslog(LOG_DEBUG,"%s: returning num=<%d>",fname,totsockets_); return (totsockets_); } /* ls_fdbusy() */ int ls_fdbusy(int fd) { sTab hashSearchPtr; hEnt *hEntPtr; if (fd == chanSock_(limchans_[PRIMARY]) || fd == chanSock_(limchans_[MASTER]) || fd == chanSock_(limchans_[UNBOUND])) return TRUE; if (fd == cli_nios_fd[0]) return TRUE; hEntPtr = h_firstEnt_(&conn_table, &hashSearchPtr); while (hEntPtr) { int *pfd; pfd = hEntPtr->hData; if (fd == pfd[0] || fd == pfd[1]) return (TRUE); hEntPtr = h_nextEnt_(&hashSearchPtr); } if (rootuid_ && fd >= currentsocket_ && fd < FIRST_RES_SOCK + totsockets_) return TRUE; return FALSE; }
int main(int argc, char *argv[]) { struct sockaddr_in master, from; char *ep, ip[INET_ADDRSTRLEN]; int i, port_number, sock, fromlength; u_short port; /* for pthread stuff */ pthread_t threads[NUM_THREADS]; pthread_attr_t attr; struct request_info thread_data[NUM_THREADS]; int rc, t; void *status; /* if the number of args aren't as expected, print usage info */ check_number_of_args(argc); /* safe to do this */ port = get_port_number(argv[1]); /* Check file and logs */ check_file_directory(argv[2]); check_log_file(argv[3]); /* don't daemonize if we compile with -DDEBUG */ if (daemon(1, 0) == -1) err(1, "daemon() failed"); /* time to set up and listen on the socket */ memset(&master, 0, sizeof(master)); master.sin_family = AF_INET; master.sin_addr.s_addr = htonl(INADDR_ANY); master.sin_port = htons(port); sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { fprintf(stderr, "Server: cannot open master socket\n"); exit(1); } /* Bind to the socket */ if (bind(sock, (struct sockaddr*) &master, sizeof(master))){ fprintf(stderr, "Server: cannot open master socket\n"); exit(1); } /* We are now bound and listing to connections on sock * to a connected client */ if (listen(sock, 5) == -1){ fprintf(stderr, "listen failed\n"); } /* init and set thread detached attributes */ pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); /* initialize mutex lock */ if (pthread_mutex_init(&mutex, NULL) != 0){ fprintf(stderr, "Init of mutex lock failed\n"); exit(1); } t = 0; while(1){ int fromsd; fromlength = sizeof(from); fromsd = accept(sock, (struct sockaddr *) &from, &fromlength); if (fromsd == -1){ fprintf(stderr, "accept failed\n"); } /* get the ip of the request to be used in logging later */ inet_ntop(AF_INET, &(from.sin_addr), ip, INET_ADDRSTRLEN); /* initialize thread data for this thread */ thread_data[t].fromsd = fromsd; thread_data[t].ip = ip; if (t == NUM_THREADS){ t = 0; } /* Now ready to service the new request */ rc = pthread_create(&threads[t], NULL, service_request, (void *)&thread_data[t]); t++; if (rc){ fprintf(stderr, "Error; return code from " "pthread_create is: %d\n", rc); exit(1); } } pthread_exit(NULL); return(0); }
int main (int argc, char *argv[]) { const char *result; int c; while ((c = getopt (argc, argv, "fdiqp:v")) != -1) { switch (c) { case 'd': isDaemon = 1; verbose = 0; break; case 'v': verbose = 1; break; case 'f': ftp = 1; break; case 'q': verbose = 0; break; case 'p': portnum = atoi (optarg); break; case 'i': inetd_started = 1; break; case 'r': r_auth = 1; break; default: fprintf (stderr, "Usage is: mcserv [options] [-p portnum]\n\n" "options are:\n" "-d become a daemon (sets -q)\n" "-q quiet mode\n" /* "-r use rhost based authentication\n" */ #ifndef HAVE_PAM "-f force ftp authentication\n" #endif "-v verbose mode\n" "-p to specify a port number to listen\n"); exit (0); } } if (isDaemon && fork ()) exit (0); if (portnum == 0) portnum = get_port_number (); if (portnum != -1) { register_port (portnum, 0); if (verbose) printf ("Using port %d\n", portnum); if ((result = get_client (portnum))) perror (result); #ifdef HAVE_PMAP_SET if (!isDaemon) pmap_unset (RPC_PROGNUM, RPC_PROGVER); #endif } exit (return_code); }