diff -u --recursive --new-file linux/net/ipv4/ip_masq.c linux-msqsrv/net/ipv4/ip_masq.c
--- linux/net/ipv4/ip_masq.c	Fri Jan  1 21:55:06 1999
+++ linux-msqsrv/net/ipv4/ip_masq.c	Wed Jan  6 23:38:18 1999
@@ -773,6 +773,10 @@
         ip_masq_hash(ms);
         restore_flags(flags);
 
+	/* fwded port may be a protocol that needs an app-specific helper */
+	if (proto != IPPROTO_ICMP)
+		ip_masq_bind_app(ms);
+
         return ms;
 }
 #endif /* CONFIG_IP_MASQUERADE_IPPORTFW */
diff -u --recursive --new-file linux/net/ipv4/ip_masq_app.c linux-msqsrv/net/ipv4/ip_masq_app.c
--- linux/net/ipv4/ip_masq_app.c	Tue Aug 12 11:30:33 1997
+++ linux-msqsrv/net/ipv4/ip_masq_app.c	Tue Jan 12 18:26:52 1999
@@ -188,7 +188,7 @@
 {
         struct ip_masq_app * mapp;
 	mapp = ip_masq_app_get(ms->protocol, ms->dport);
-#ifdef CONFIG_IP_MASQUERADE_IPAUTOFW
+#if defined(CONFIG_IP_MASQUERADE_IPAUTOFW) || defined(CONFIG_IP_MASQUERADE_IPPORTFW)
 	if (mapp == NULL)
 		mapp = ip_masq_app_get(ms->protocol, ms->sport);
 #endif
