- {
- int fd;
- struct sockaddr_in sin;
-
- if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
- id_conn(-1, i);
- else {
- memset(&sin, 0, sizeof(sin));
- sin.sin_family = AF_INET;
- sin.sin_addr = q->lsin.sin_addr;
- sin.sin_port = 0;
- if (bind(fd, (struct sockaddr *)&sin, sizeof(sin))) {
- close(fd);
- id_conn(-1, i);
- } else {
- int opt = 1;
- sin.sin_family = AF_INET;
- sin.sin_addr = q->rsin.sin_addr;
- sin.sin_port = htons(113);
- setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, &opt, sizeof(opt));
- conn_init(&i->c, sel, fd,
- (struct sockaddr *)&sin, sizeof(sin),
- id_conn, i);
- }
- }
- }
+ ident(&i->i, sel, &q->lsin, &q->rsin, id_ident, i);