|
Lines 706-721
Link Here
|
| 706 |
/* Or forward to some other address? */ |
706 |
/* Or forward to some other address? */ |
| 707 |
fwd_tag = m_tag_find(m, PACKET_TAG_IPFORWARD, NULL); |
707 |
fwd_tag = m_tag_find(m, PACKET_TAG_IPFORWARD, NULL); |
| 708 |
if (fwd_tag) { |
708 |
if (fwd_tag) { |
| 709 |
if (!in_localip(ip->ip_src) && !in_localaddr(ip->ip_dst)) { |
709 |
dst = (struct sockaddr_in *)&ro->ro_dst; |
| 710 |
dst = (struct sockaddr_in *)&ro->ro_dst; |
710 |
bcopy((fwd_tag+1), dst, sizeof(struct sockaddr_in)); |
| 711 |
bcopy((fwd_tag+1), dst, sizeof(struct sockaddr_in)); |
711 |
m->m_flags |= M_SKIP_FIREWALL; |
| 712 |
m->m_flags |= M_SKIP_FIREWALL; |
712 |
m_tag_delete(m, fwd_tag); |
| 713 |
m_tag_delete(m, fwd_tag); |
713 |
goto again; |
| 714 |
goto again; |
|
|
| 715 |
} else { |
| 716 |
m_tag_delete(m, fwd_tag); |
| 717 |
/* Continue. */ |
| 718 |
} |
| 719 |
} |
714 |
} |
| 720 |
#endif |
715 |
#endif |