ref: c6a36ab6d9b98948f6dae8526d02bb19952a149d
parent: 992a92858b89b1c7efedc4c5a473227225d14604
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Mar 12 18:07:58 EST 2016
devip: handle ignoreadvice flag for all protocols
--- a/sys/src/9/ip/esp.c
+++ b/sys/src/9/ip/esp.c
@@ -595,7 +595,7 @@
qlock(esp);
c = convlookup(esp, vers.spi);
- if(c != nil) {+ if(c != nil && !c->ignoreadvice) {qhangup(c->rq, msg);
qhangup(c->wq, msg);
}
--- a/sys/src/9/ip/icmp.c
+++ b/sys/src/9/ip/icmp.c
@@ -449,6 +449,8 @@
s = *c;
if(s->lport == recid)
if(ipcmp(s->raddr, dst) == 0){+ if(s->ignoreadvice)
+ break;
qhangup(s->rq, msg);
qhangup(s->wq, msg);
break;
--- a/sys/src/9/ip/icmp6.c
+++ b/sys/src/9/ip/icmp6.c
@@ -224,6 +224,8 @@
for(c = icmp->conv; *c; c++) {s = *c;
if(s->lport == recid && ipcmp(s->raddr, p->dst) == 0){+ if(s->ignoreadvice)
+ break;
qhangup(s->rq, msg);
qhangup(s->wq, msg);
break;
--- a/sys/src/9/ip/il.c
+++ b/sys/src/9/ip/il.c
@@ -1334,6 +1334,8 @@
if(s->lport == psource)
if(ipcmp(s->laddr, source) == 0)
if(ipcmp(s->raddr, dest) == 0){+ if(s->ignoreadvice)
+ break;
qunlock(il);
ic = (Ilcb*)s->ptcl;
switch(ic->state){--- a/sys/src/9/ip/rudp.c
+++ b/sys/src/9/ip/rudp.c
@@ -648,6 +648,8 @@
if(s->lport == psource)
if(ipcmp(s->raddr, dest) == 0)
if(ipcmp(s->laddr, source) == 0){+ if(s->ignoreadvice)
+ break;
qhangup(s->rq, msg);
qhangup(s->wq, msg);
break;
--- a/sys/src/9/ip/tcp.c
+++ b/sys/src/9/ip/tcp.c
@@ -3254,6 +3254,8 @@
if(tcb->state != Closed)
if(ipcmp(s->raddr, dest) == 0)
if(ipcmp(s->laddr, source) == 0){+ if(s->ignoreadvice)
+ break;
qlock(s);
qunlock(tcp);
switch(tcb->state){--
⑨