ip: simplify code as packblock() and concatblock() will never error

This commit is contained in:
cinap_lenrek 2016-10-23 00:31:42 +02:00
parent 75c6ab45e0
commit 055f837043
6 changed files with 13 additions and 38 deletions

View file

@ -647,17 +647,7 @@ greiput(Proto *proto, Ipifc *, Block *bp)
return; return;
} }
/* qpass(c->rq, bp);
* Can't delimit packet so pull it all into one block.
*/
if(qlen(c->rq) > GREqlen)
freeb(bp);
else{
bp = concatblock(bp);
if(bp == 0)
panic("greiput");
qpass(c->rq, bp);
}
} }
int int

View file

@ -923,17 +923,12 @@ ilpullup(Conv *s)
bp->list = nil; bp->list = nil;
dlen = nhgets(oh->illen)-IL_HDRSIZE; dlen = nhgets(oh->illen)-IL_HDRSIZE;
bp = trimblock(bp, IL_IPSIZE+IL_HDRSIZE, dlen); bp = trimblock(bp, IL_IPSIZE+IL_HDRSIZE, dlen);
/* /*
* Upper levels don't know about multiple-block * Upper levels don't know about multiple-block
* messages so copy all into one (yick). * messages so copy all into one (yick).
*/ */
bp = concatblock(bp); qpass(s->rq, packblock(concatblock(bp)));
if(bp == 0)
panic("ilpullup");
bp = packblock(bp);
if(bp == 0)
panic("ilpullup2");
qpass(s->rq, bp);
} }
qunlock(&ic->outo); qunlock(&ic->outo);
} }

View file

@ -745,10 +745,7 @@ yes:
/* tack on interface address */ /* tack on interface address */
bp = padblock(bp, IPaddrlen); bp = padblock(bp, IPaddrlen);
ipmove(bp->rp, ifc->lifc->local); ipmove(bp->rp, ifc->lifc->local);
bp = concatblock(bp); qpass(c->rq, concatblock(bp));
if(bp != nil)
if(qpass(c->rq, bp) < 0)
print("Q");
return; return;
} }

View file

@ -574,17 +574,16 @@ rudpiput(Proto *rudp, Ipifc *ifc, Block *bp)
} }
break; break;
} }
if(bp->next)
bp = concatblock(bp);
if(qfull(c->rq)) { if(qfull(c->rq)) {
netlog(f, Logrudp, "rudp: qfull %I.%d -> %I.%d\n", raddr, rport, netlog(f, Logrudp, "rudp: qfull %I.%d -> %I.%d\n", raddr, rport,
laddr, lport); laddr, lport);
freeblist(bp); freeblist(bp);
} } else {
else if(bp->next)
bp = concatblock(bp);
qpass(c->rq, bp); qpass(c->rq, bp);
}
qunlock(ucb); qunlock(ucb);
} }

View file

@ -2437,10 +2437,7 @@ reset:
* receive queue * receive queue
*/ */
if(bp) { if(bp) {
bp = packblock(bp); qpassnolim(s->rq, packblock(bp));
if(bp == nil)
panic("tcp packblock");
qpassnolim(s->rq, bp);
bp = nil; bp = nil;
} }
tcb->rcv.nxt += length; tcb->rcv.nxt += length;

View file

@ -495,18 +495,15 @@ udpiput(Proto *udp, Ipifc *ifc, Block *bp)
break; break;
} }
if(bp->next)
bp = concatblock(bp);
if(qfull(c->rq)){ if(qfull(c->rq)){
qunlock(c);
netlog(f, Logudp, "udp: qfull %I.%d -> %I.%d\n", raddr, rport, netlog(f, Logudp, "udp: qfull %I.%d -> %I.%d\n", raddr, rport,
laddr, lport); laddr, lport);
freeblist(bp); freeblist(bp);
return; } else {
if(bp->next)
bp = concatblock(bp);
qpass(c->rq, bp);
} }
qpass(c->rq, bp);
qunlock(c); qunlock(c);
} }