--- ipt_SYNPROXY.c.orig	2015-04-17 19:28:10.515930957 +0200
+++ ipt_SYNPROXY.c	2015-04-17 19:31:38.633981882 +0200
@@ -42,7 +42,7 @@
 synproxy_send_tcp(const struct sk_buff *skb, struct sk_buff *nskb,
 		  struct nf_conntrack *nfct, enum ip_conntrack_info ctinfo,
 		  struct iphdr *niph, struct tcphdr *nth,
-		  unsigned int tcp_hdr_size)
+		  unsigned int tcp_hdr_size, bool response)
 {
 	nth->check = ~tcp_v4_check(tcp_hdr_size, niph->saddr, niph->daddr, 0);
 	nskb->ip_summed   = CHECKSUM_PARTIAL;
@@ -60,7 +60,32 @@
 		nf_conntrack_get(nfct);
 	}
 
-	ip_local_out(nskb);
+
+	if (skb->nf_bridge) {
+		struct ethhdr *oeth = eth_hdr(skb);
+		struct net_device *odev;
+		const char *src, *dst;
+
+		if (!response) {
+			src  = oeth->h_source;
+			dst  = oeth->h_dest;
+			odev = skb->nf_bridge->phsyoutdev;
+		} else {
+			src = oeth->h_dest;
+			dst = oeth->h_source;
+			odev = skb->nf_bridge->phsyindev;
+		}
+
+		nskb->dev = dev;
+		niph->tot_len = htons(nskb->len);
+		ip_send_check(niph);
+
+		if (dev_hard_header(nskb, nskb->dev, ntohs(nskb->protocol),
+				    dst, src, nskb->len) < 0)
+			goto free_nskb;
+		dev_queue_xmit(nskb);
+	} else 
+		ip_local_out(nskb);
 	return;
 
 free_nskb:
@@ -105,7 +130,7 @@
 	synproxy_build_options(nth, opts);
 
 	synproxy_send_tcp(skb, nskb, skb->nfct, IP_CT_ESTABLISHED_REPLY,
-			  niph, nth, tcp_hdr_size);
+			  niph, nth, tcp_hdr_size, true);
 }
 
 static void
@@ -149,7 +174,7 @@
 	synproxy_build_options(nth, opts);
 
 	synproxy_send_tcp(skb, nskb, &snet->tmpl->ct_general, IP_CT_NEW,
-			  niph, nth, tcp_hdr_size);
+			  niph, nth, tcp_hdr_size, false);
 }
 
 static void
@@ -188,7 +213,7 @@
 
 	synproxy_build_options(nth, opts);
 
-	synproxy_send_tcp(skb, nskb, NULL, 0, niph, nth, tcp_hdr_size);
+	synproxy_send_tcp(skb, nskb, NULL, 0, niph, nth, tcp_hdr_size, true);
 }
 
 static void
@@ -226,7 +251,7 @@
 
 	synproxy_build_options(nth, opts);
 
-	synproxy_send_tcp(skb, nskb, NULL, 0, niph, nth, tcp_hdr_size);
+	synproxy_send_tcp(skb, nskb, NULL, 0, niph, nth, tcp_hdr_size, false);
 }
 
 static bool
