<div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>&gt; + &nbsp; &nbsp;char name[9];<br>
<br>
</div>Using IFNAMSIZ would be better here.<br>
<br>
</blockquote><div><br>
Thanks Tino!<br><br>
Any other comment please?<br>
This applies to 2.6.x also.<br>
<br>
Regards,<br>
-hiren<br><br>---------updated patch-----------<br><br>--- net/ipsec/ipsec_rcv.c.orig&nbsp;&nbsp;&nbsp; Tue Dec 23 13:10:46 2008<br>+++ net/ipsec/ipsec_rcv.c&nbsp;&nbsp;&nbsp; Tue Dec 23 15:29:00 2008<br>@@ -1619,18 +1619,44 @@ int klips26_rcv_encap(struct sk_buff *sk<br>
&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; struct ipsec_rcv_state nirs, *irs = &amp;nirs;<br>&nbsp;&nbsp;&nbsp;&nbsp; struct iphdr *ipp;<br>+&nbsp;&nbsp;&nbsp; char name[IFNAMSIZ];<br>+&nbsp;&nbsp;&nbsp; struct net_device *ipsecdev = NULL, *prvdev = NULL;<br>+&nbsp;&nbsp;&nbsp; struct ipsecpriv *prv = NULL;<br>+&nbsp;&nbsp;&nbsp; int i;<br>
&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; /* Don&#39;t unlink in the middle of a turnaround */<br>&nbsp;&nbsp;&nbsp;&nbsp; KLIPS_INC_USE;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; memset(irs, 0, sizeof(*irs));<br>&nbsp;<br>-&nbsp;&nbsp;&nbsp; /* XXX fudge it so that all nat-t stuff comes from ipsec0&nbsp;&nbsp;&nbsp; */<br>-&nbsp;&nbsp;&nbsp; /*&nbsp;&nbsp;&nbsp;&nbsp; eventually, the SA itself will determine which device<br>
-&nbsp;&nbsp;&nbsp; &nbsp;*&nbsp;&nbsp;&nbsp;&nbsp; it comes from<br>-&nbsp;&nbsp;&nbsp; &nbsp;*/ <br>-&nbsp;&nbsp;&nbsp; {<br>-&nbsp;&nbsp;&nbsp; &nbsp; skb-&gt;dev = ipsec_get_device(0);<br>+&nbsp;&nbsp;&nbsp; if(skb-&gt;dev) {<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; KLIPS_PRINT(debug_rcv,<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;klips_debug:klips26_rcv_encap: &quot;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;&lt;&lt;&lt; Info -- &quot;);<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; KLIPS_PRINTMORE(debug_rcv, &quot;skb-&gt;dev=%s &quot;,<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; skb-&gt;dev-&gt;name ? skb-&gt;dev-&gt;name : &quot;NULL&quot;);<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; KLIPS_PRINTMORE(debug_rcv, &quot;\n&quot;);<br>
+<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(skb-&gt;dev-&gt;name) {<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(i = 0; i &lt; IPSEC_NUM_IF; i++) {<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; sprintf(name, IPSEC_DEV_FORMAT, i);<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ipsecdev = __ipsec_dev_get(name);<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; prv = ipsecdev ? (struct ipsecpriv *)(ipsecdev-&gt;priv) : NULL;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; prvdev = prv ? (struct net_device *)(prv-&gt;dev) : NULL;<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(prvdev &amp;&amp; !strcmp(prvdev-&gt;name, skb-&gt;dev-&gt;name)) {<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; skb-&gt;dev = ipsecdev;<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; KLIPS_PRINT(debug_rcv &amp;&amp; prvdev,<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;klips_debug:klips26_rcv_encap: &quot;<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;assigning packet ownership to virtual device %s from physical device %s.\n&quot;,<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; name, prvdev-&gt;name);<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>+&nbsp;&nbsp;&nbsp; } else {<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; KLIPS_PRINT(debug_rcv,<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;klips_debug:klips26_rcv_encap: &quot;<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;device supplied with skb is NULL\n&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; /* set up for decap loop */<br>
</div></div>