| plan 9 kernel history: overview | file list | diff list |
1992/0128/port/devip.c (diff list | history)
| 1992/0112/sys/src/9/port/devip.c:212,220 – 1992/0128/sys/src/9/port/devip.c:212,220 (short | long | prev | next) | ||
| 1991/0424 | long ipwrite(Chan *c, char *a, long n, ulong offset) { | |
| 1992/0128 | int m, backlog, type, priv; | |
| 1991/1024 | char *field[5], *ctlarg[5], buf[256]; | |
| 1991/0424 |
| |
| 1992/0128 | Port port; | |
| 1991/1024 | Ipconv *cp; | |
| 1991/0424 | type = STREAMTYPE(c->qid.path); | |
| 1992/0112/sys/src/9/port/devip.c:248,259 – 1992/0128/sys/src/9/port/devip.c:248,259 | ||
| 1991/1024 | default: error(Ebadarg); case 2: | |
| 1992/0128 | priv = 0; | |
| 1991/1024 | break; case 3: if(strcmp(ctlarg[2], "r") != 0) error(Eperm); | |
| 1992/0128 | priv = 1; | |
| 1991/1024 | break; | |
| 1991/0424 | } | |
| 1991/1024 | cp->dst = ipparse(ctlarg[0]); | |
| 1992/0112/sys/src/9/port/devip.c:262,268 – 1992/0128/sys/src/9/port/devip.c:262,268 | ||
| 1991/1024 | /* If we have no local port assign one */ qlock(&ipalloc); if(cp->psrc == 0) | |
| 1992/0128 | cp->psrc = nextport(ipconv[c->dev], priv); | |
| 1991/1024 | qunlock(&ipalloc); | |
| 1991/0424 | ||
| 1991/1114 | if(cp->stproto == &tcpinfo) | |
| 1992/0112/sys/src/9/port/devip.c:557,562 – 1992/0128/sys/src/9/port/devip.c:557,563 | ||
| 1991/0424 | ipc->readq = RD(q); ipc->readq->rp = &tcpflowr; | |
| 1992/0128 | ipc->err = 0; | |
| 1991/0424 | RD(q)->ptr = (void *)ipc; WR(q)->next->ptr = (void *)ipc->ipinterface; | |
| 1992/0112/sys/src/9/port/devip.c:852,865 – 1992/0128/sys/src/9/port/devip.c:853,884 | ||
| 1991/0424 | return 0; } | |
| 1992/0128 | static Port lastport[2] = { PORTALLOC-1, PRIVPORTALLOC-1 }; | |
| 1991/0424 | Port | |
| 1992/0128 | nextport(Ipconv *ic, int priv) | |
| 1991/0424 | { | |
| 1992/0128 | Port base; Port max; Port *p; | |
| 1991/0424 | Port i; | |
| 1991/12171 |
| |
| 1992/0128 | if(priv){ base = PRIVPORTALLOC; max = PORTALLOC; p = &lastport[1]; } else { base = PORTALLOC; max = PORTMAX; p = &lastport[0]; } for(i = *p + 1; i < max; i++) | |
| 1991/0424 | if(!portused(ic, i)) | |
| 1992/0128 | return(*p = i); for(i = base ; i <= *p; i++) if(!portused(ic, i)) return(*p = i); | |
| 1991/12171 | ||
| 1991/0424 | return(0); } | |