summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2014-01-05 13:55:33 +0000
committerglebius <glebius@FreeBSD.org>2014-01-05 13:55:33 +0000
commite3ce8ac51cdbc777c2e1d9b988232c3dd95251a1 (patch)
treeeba36cbd0e910caca7d7cdebc66956e6057fbd7a
parentc0b3920273edc3d87f06a5f4c97ed9a1a4755d5b (diff)
downloadFreeBSD-src-e3ce8ac51cdbc777c2e1d9b988232c3dd95251a1.zip
FreeBSD-src-e3ce8ac51cdbc777c2e1d9b988232c3dd95251a1.tar.gz
Merge r260188 from head:
Fix regression from r249894. Now we pass "gw" as argument to if_output method, thus for multicast case we need it to point at "dst". PR: 185395
-rw-r--r--sys/netinet/ip_output.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index 464c852..2838e76 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -331,6 +331,12 @@ again:
if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
m->m_flags |= M_MCAST;
/*
+ * IP destination address is multicast. Make sure "gw"
+ * still points to the address in "ro". (It may have been
+ * changed to point to a gateway address, above.)
+ */
+ gw = dst;
+ /*
* See if the caller provided any multicast options
*/
if (imo != NULL) {
OpenPOWER on IntegriCloud