devbridge: fix runt packets going through the bridge (thanks cinap)

linux will send small, unpadded arp packets which may arrive over
wifi, so allow small packets into the bridge and pad any packets that
are too small when going out.
This commit is contained in:
mischief 2018-11-17 17:23:56 -08:00
parent fbfa249c63
commit a25418fddc

View file

@ -965,7 +965,7 @@ etherread(void *a)
if(bp == nil)
break;
n = BLEN(bp);
if(port->closed || n < ETHERMINTU){
if(port->closed || n < ETHERHDRSIZE){
freeb(bp);
continue;
}
@ -1056,6 +1056,9 @@ etherwrite(Port *port, Block *bp)
epkt = (Etherpkt*)bp->rp;
if(port->type != Ttun || !fragment(epkt, n)) {
if(!waserror()){
/* don't generate small packets */
if(n < ETHERMINTU)
bp = adjustblock(bp, ETHERMINTU);
devtab[port->data[1]->type]->bwrite(port->data[1], bp, 0);
poperror();
}