- merge revision 1.12
authorMark Huang <mlhuang@cs.princeton.edu>
Fri, 4 Mar 2005 13:59:59 +0000 (13:59 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Fri, 4 Mar 2005 13:59:59 +0000 (13:59 +0000)
date: 2005/02/01 03:19:52;  author: mlhuang;  state: Exp;  lines: +9 -4
- bound vnet mods by #ifdef
- bound runtime vnet code by if (vnet_active)

net/ipv4/udp.c

index 41b0117..6dbb6be 100644 (file)
@@ -1164,11 +1164,16 @@ int udp_rcv(struct sk_buff *skb)
        if (udp_checksum_complete(skb))
                goto csum_error;
 
-       /* VNET: Suppress ICMP Unreachable if the port was bound to a (presumably raw) socket */
-       if (!skb->sk) {
-               UDP_INC_STATS_BH(UDP_MIB_NOPORTS);
-               icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
+#if defined(CONFIG_VNET) || defined(CONFIG_VNET_MODULE)
+       if (vnet_active && skb->sk) {
+               /* VNET: Suppress ICMP Unreachable if the port was bound to a (presumably raw) socket */
+               kfree_skb(skb);
+               return 0;
        }
+#endif
+
+       UDP_INC_STATS_BH(UDP_MIB_NOPORTS);
+       icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
 
        /*
         * Hmm.  We got an UDP packet to a port to which we