| plan 9 kernel history: overview | file list | diff list |
1992/0313/port/devip.c (diff list | history)
| 1992/0307/sys/src/9/port/devip.c:160,177 – 1992/0313/sys/src/9/port/devip.c:160,177 (short | long | prev | next) | ||
| 1991/1023 | etab = &base[conf.ip]; for(new = base; new < etab; new++) { | |
| 1991/0424 | if(new->ref == 0 && canqlock(new)) { | |
| 1991/12171 |
| |
| 1991/1015 |
| |
| 1992/0313 | if(new->ref || ipconbusy(new)) { | |
| 1991/0424 | qunlock(new); continue; } | |
| 1991/1115 | if(from) /* copy ownership from listening channel */ | |
| 1991/1126 |
| |
| 1992/0313 | netown(new->net, new->index, new->net->prot[from->index].owner, 0); | |
| 1991/1115 | else /* current user becomes owner */ | |
| 1991/1126 | netown(new->net, new->index, u->p->user, 0); | |
| 1992/0313 | ||
| 1991/1114 | new->ref = 1; | |
| 1992/0306 | new->newcon = 0; | |
| 1991/0424 | qunlock(new); | |
| 1992/0307/sys/src/9/port/devip.c:242,250 – 1992/0313/sys/src/9/port/devip.c:242,249 | ||
| 1992/0111 | error(Ebadarg); | |
| 1991/0424 | ||
| 1991/1024 | if(strcmp(field[0], "connect") == 0) { | |
| 1991/12171 |
| |
| 1991/1024 |
| |
| 1992/0111 |
| |
| 1992/0313 | if(ipconbusy(cp)) error(Enetbusy); | |
| 1991/0424 | ||
| 1991/1024 | if(m != 2) error(Ebadarg); | |
| 1992/0307/sys/src/9/port/devip.c:284,292 – 1992/0313/sys/src/9/port/devip.c:283,290 | ||
| 1991/1125 | cp->pdst = 0; } | |
| 1991/1104 | else if(strcmp(field[0], "announce") == 0) { | |
| 1991/12171 |
| |
| 1991/1024 |
| |
| 1992/0111 |
| |
| 1992/0313 | if(ipconbusy(cp)) error(Enetbusy); | |
| 1991/0424 | ||
| 1991/1024 | if(m != 2) error(Ebadarg); | |
| 1992/0307/sys/src/9/port/devip.c:325,331 – 1992/0313/sys/src/9/port/devip.c:323,342 | ||
| 1991/1024 | return n; | |
| 1991/0424 | } | |
| 1992/0313 | int ipconbusy(Ipconv *cp) { if(cp->stproto == &tcpinfo) if(cp->tcpctl.state != Closed) return 1; | |
| 1991/0424 | ||
| 1992/0313 | if(cp->stproto == &ilinfo) if(cp->ilctl.state != Ilclosed) return 1; return 0; } | |
| 1991/0424 | void udpstiput(Queue *q, Block *bp) { | |
| 1992/0307/sys/src/9/port/devip.c:369,376 – 1992/0313/sys/src/9/port/devip.c:380,388 | ||
| 1991/0424 | /* Look for a conversation structure for this port */ etab = &muxed[conf.ip]; for(ifc = muxed; ifc < etab; ifc++) { | |
| 1991/1125 |
| |
| 1992/0313 | if(ifc->ref) if(ifc->psrc == dport) if(ifc->pdst == 0 || ifc->pdst == sport) { | |
| 1991/0424 | /* Trim the packet down to data size */ len = len - (UDP_HDRSIZE-UDP_PHDRSIZE); bp = btrim(bp, UDP_EHSIZE+UDP_HDRSIZE, len); | |
| 1992/0307/sys/src/9/port/devip.c:512,517 – 1992/0313/sys/src/9/port/devip.c:524,530 | ||
| 1991/0424 | tcb->flags |= ACTIVE; send_syn(tcb); | |
| 1991/12171 | setstate(s, Syn_sent); | |
| 1992/0313 | ||
| 1991/0424 | /* No break */ | |
| 1991/12171 | case Syn_sent: case Syn_received: | |
| 1992/0307/sys/src/9/port/devip.c:530,535 – 1992/0313/sys/src/9/port/devip.c:543,549 | ||
| 1991/0424 | tcp_output(s); qunlock(tcb); break; | |
| 1992/0313 | ||
| 1991/0424 | default: freeb(bp); error(Ehungup); | |
| 1992/0307/sys/src/9/port/devip.c:629,638 – 1992/0313/sys/src/9/port/devip.c:643,656 | ||
| 1991/1114 | s = &ipconv[c->dev][connection]; base = ipconv[c->dev]; | |
| 1991/12171 |
| |
| 1991/1114 |
| |
| 1992/0313 | if(s->stproto == &tcpinfo) if(s->tcpctl.state != Listen) | |
| 1992/0112 | error(Enolisten); | |
| 1991/1114 | ||
| 1992/0313 | if(s->stproto == &ilinfo) if(s->ilctl.state != Illistening) error(Enolisten); | |
| 1991/0424 | qlock(&s->listenq); | |
| 1991/1025 | if(waserror()) { qunlock(&s->listenq); | |
| 1992/0307/sys/src/9/port/devip.c:677,682 – 1992/0313/sys/src/9/port/devip.c:695,701 | ||
| 1991/12171 | case Syn_sent: | |
| 1991/0424 | close_self(s, 0); break; | |
| 1992/0313 | ||
| 1991/12171 | case Syn_received: case Established: | |
| 1991/0424 | tcb->sndcnt++; | |
| 1992/0307/sys/src/9/port/devip.c:683,688 – 1992/0313/sys/src/9/port/devip.c:702,708 | ||
| 1991/0424 | tcb->snd.nxt++; | |
| 1991/12171 | setstate(s, Finwait1); | |
| 1991/0424 | goto output; | |
| 1992/0313 | ||
| 1991/12171 | case Close_wait: | |
| 1991/0424 | tcb->sndcnt++; tcb->snd.nxt++; | |