patch-2.4.23 linux-2.4.23/net/ipv4/ipmr.c

Next file: linux-2.4.23/net/ipv4/ipvs/Config.in
Previous file: linux-2.4.23/net/ipv4/ipip.c
Back to the patch index
Back to the overall index

diff -urN linux-2.4.22/net/ipv4/ipmr.c linux-2.4.23/net/ipv4/ipmr.c
@@ -1096,6 +1096,7 @@
 
 	skb->h.ipiph = skb->nh.iph;
 	skb->nh.iph = iph;
+	memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
 #ifdef CONFIG_NETFILTER
 	nf_conntrack_put(skb->nfct);
 	skb->nfct = NULL;
@@ -1104,8 +1105,12 @@
 
 static inline int ipmr_forward_finish(struct sk_buff *skb)
 {
+	struct ip_options *opt = &(IPCB(skb)->opt);
 	struct dst_entry *dst = skb->dst;
 
+	if (unlikely(opt->optlen))
+		ip_forward_options(skb);
+
 	if (skb->len <= dst->pmtu)
 		return dst->output(skb);
 	else

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)