diff options
-rw-r--r-- | sys/netinet/ip_input.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index cd38a1e..7dae1d0 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -1738,8 +1738,21 @@ ip_forward(struct mbuf *m, int srcrt, struct sockaddr_in *next_hop) } } + { + struct m_hdr tag; + + if (next_hop) { + /* Pass IPFORWARD info if available */ + + tag.mh_type = MT_TAG; + tag.mh_flags = PACKET_TAG_IPFORWARD; + tag.mh_data = (caddr_t)next_hop; + tag.mh_next = m; + m = (struct mbuf *)&tag; + } error = ip_output(m, (struct mbuf *)0, &ipforward_rt, IP_FORWARDING, 0); + } if (error) ipstat.ips_cantforward++; else { |