Date: Fri, 22 Nov 2002 01:05:32 +0000 From: Ian Dowse <iedowse@maths.tcd.ie> To: Julian Elischer <julian@elischer.org> Cc: Scot Loach <sloach@SANDVINE.com>, "'freebsd-net@freebsd.org'" <freebsd-net@freebsd.org> Subject: Re: Using ipfw to forward udp Message-ID: <200211220105.aa75973@salmon.maths.tcd.ie> In-Reply-To: Your message of "Thu, 21 Nov 2002 11:10:00 PST." <Pine.BSF.4.21.0211211109300.4293-100000@InterJet.elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <Pine.BSF.4.21.0211211109300.4293-100000@InterJet.elischer.org>, Jul
ian Elischer writes:
>the local fwd command is only implemented for TCP
Here is a patch against -stable that I did a while ago, but I never
got around to doing a -current version - the code there is quite
different.
Ian
Index: udp_usrreq.c
===================================================================
RCS file: /home/iedowse/CVS/src/sys/netinet/udp_usrreq.c,v
retrieving revision 1.64.2.16
diff -u -r1.64.2.16 udp_usrreq.c
--- udp_usrreq.c 7 Aug 2002 16:14:47 -0000 1.64.2.16
+++ udp_usrreq.c 22 Nov 2002 01:02:14 -0000
@@ -34,6 +34,7 @@
* $FreeBSD: src/sys/netinet/udp_usrreq.c,v 1.64.2.16 2002/08/07 16:14:47 luigi Exp $
*/
+#include "opt_ipfw.h"
#include "opt_ipsec.h"
#include "opt_inet6.h"
@@ -339,6 +340,22 @@
/*
* Locate pcb for datagram.
*/
+#ifdef IPFIREWALL_FORWARD
+ if (ip_fw_fwd_addr != NULL) {
+ /* Diverted. Use the divert addr/port in the lookup. */
+ if (!ip_fw_fwd_addr->sin_port) {
+ inp = in_pcblookup_hash(&udbinfo, ip->ip_src,
+ uh->uh_sport, ip_fw_fwd_addr->sin_addr,
+ uh->uh_dport, 1, m->m_pkthdr.rcvif);
+ } else {
+ inp = in_pcblookup_hash(&udbinfo, ip->ip_src,
+ uh->uh_sport, ip_fw_fwd_addr->sin_addr,
+ ntohs(ip_fw_fwd_addr->sin_port), 1,
+ m->m_pkthdr.rcvif);
+ }
+ ip_fw_fwd_addr = NULL;
+ } else
+#endif /* IPFIREWALL_FORWARD */
inp = in_pcblookup_hash(&udbinfo, ip->ip_src, uh->uh_sport,
ip->ip_dst, uh->uh_dport, 1, m->m_pkthdr.rcvif);
if (inp == NULL) {
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200211220105.aa75973>
