From 94f6f89ac1e8731a27c38b54b54348bc063fb6c3 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 11 Jun 2018 03:14:28 +0200 Subject: devip: do not icmp reply on multicast destination --- sys/src/9/ip/icmp6.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/src/9/ip/icmp6.c b/sys/src/9/ip/icmp6.c index cbbf3f182..bceb6aeff 100644 --- a/sys/src/9/ip/icmp6.c +++ b/sys/src/9/ip/icmp6.c @@ -430,7 +430,7 @@ icmphostunr6(Fs *f, Ipifc *ifc, Block *bp, int code, int tome) uchar ia[IPaddrlen]; p = (Ip6hdr *)bp->rp; - if(isv6mcast(p->src) || !ipv6local(ifc, ia, p->src)) + if(isv6mcast(p->dst) || isv6mcast(p->src) || !ipv6local(ifc, ia, p->src)) return; netlog(f, Logicmp, "send icmphostunr %I -> src %I dst %I\n", @@ -467,7 +467,7 @@ icmpttlexceeded6(Fs *f, Ipifc *ifc, Block *bp) uchar ia[IPaddrlen]; p = (Ip6hdr *)bp->rp; - if(isv6mcast(p->src) || !ipv6local(ifc, ia, p->src)) + if(isv6mcast(p->dst) || isv6mcast(p->src) || !ipv6local(ifc, ia, p->src)) return; netlog(f, Logicmp, "send icmpttlexceeded6 %I -> src %I dst %I\n", @@ -500,7 +500,7 @@ icmppkttoobig6(Fs *f, Ipifc *ifc, Block *bp) uchar ia[IPaddrlen]; p = (Ip6hdr *)bp->rp; - if(isv6mcast(p->src) || !ipv6local(ifc, ia, p->src)) + if(isv6mcast(p->dst) || isv6mcast(p->src) || !ipv6local(ifc, ia, p->src)) return; netlog(f, Logicmp, "send icmppkttoobig6 %I -> src %I dst %I\n", -- cgit v1.2.3