VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / net / ipv4 / ipmr.c
index a25e560..9079766 100644 (file)
@@ -109,7 +109,9 @@ static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local
 static int ipmr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert);
 static int ipmr_fill_mroute(struct sk_buff *skb, struct mfc_cache *c, struct rtmsg *rtm);
 
-static struct inet_protocol pim_protocol;
+#ifdef CONFIG_IP_PIMSM_V2
+static struct net_protocol pim_protocol;
+#endif
 
 static struct timer_list ipmr_expire_timer;
 
@@ -1105,17 +1107,14 @@ static void ip_encap(struct sk_buff *skb, u32 saddr, u32 daddr)
        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;
-#endif
+       nf_reset(skb);
 }
 
 static inline int ipmr_forward_finish(struct sk_buff *skb)
 {
        struct ip_options * opt = &(IPCB(skb)->opt);
 
-       IP_INC_STATS_BH(OutForwDatagrams);
+       IP_INC_STATS_BH(IPSTATS_MIB_OUTFORWDATAGRAMS);
 
        if (unlikely(opt->optlen))
                ip_forward_options(skb);
@@ -1178,7 +1177,7 @@ static void ipmr_queue_xmit(struct sk_buff *skb, struct mfc_cache *c, int vifi)
                   to blackhole.
                 */
 
-               IP_INC_STATS_BH(FragFails);
+               IP_INC_STATS_BH(IPSTATS_MIB_FRAGFAILS);
                ip_rt_put(rt);
                goto out_free;
        }
@@ -1461,10 +1460,7 @@ int pim_rcv_v1(struct sk_buff * skb)
        skb->dst = NULL;
        ((struct net_device_stats*)reg_dev->priv)->rx_bytes += skb->len;
        ((struct net_device_stats*)reg_dev->priv)->rx_packets++;
-#ifdef CONFIG_NETFILTER
-       nf_conntrack_put(skb->nfct);
-       skb->nfct = NULL;
-#endif
+       nf_reset(skb);
        netif_rx(skb);
        dev_put(reg_dev);
        return 0;
@@ -1520,10 +1516,7 @@ static int pim_rcv(struct sk_buff * skb)
        ((struct net_device_stats*)reg_dev->priv)->rx_bytes += skb->len;
        ((struct net_device_stats*)reg_dev->priv)->rx_packets++;
        skb->dst = NULL;
-#ifdef CONFIG_NETFILTER
-       nf_conntrack_put(skb->nfct);
-       skb->nfct = NULL;
-#endif
+       nf_reset(skb);
        netif_rx(skb);
        dev_put(reg_dev);
        return 0;
@@ -1711,7 +1704,7 @@ static struct file_operations ipmr_vif_fops = {
        .open    = ipmr_vif_open,
        .read    = seq_read,
        .llseek  = seq_lseek,
-       .release = seq_release,
+       .release = seq_release_private,
 };
 
 struct ipmr_mfc_iter {
@@ -1746,6 +1739,9 @@ static struct mfc_cache *ipmr_mfc_seq_idx(struct ipmr_mfc_iter *it, loff_t pos)
 
 static void *ipmr_mfc_seq_start(struct seq_file *seq, loff_t *pos)
 {
+       struct ipmr_mfc_iter *it = seq->private;
+       it->cache = NULL;
+       it->ct = 0;
        return *pos ? ipmr_mfc_seq_idx(seq->private, *pos - 1) 
                : SEQ_START_TOKEN;
 }
@@ -1855,7 +1851,6 @@ static int ipmr_mfc_open(struct inode *inode, struct file *file)
        if (rc)
                goto out_kfree;
 
-       memset(s, 0, sizeof(*s));
        seq = file->private_data;
        seq->private = s;
 out:
@@ -1871,12 +1866,12 @@ static struct file_operations ipmr_mfc_fops = {
        .open    = ipmr_mfc_open,
        .read    = seq_read,
        .llseek  = seq_lseek,
-       .release = seq_release,
+       .release = seq_release_private,
 };
 #endif 
 
 #ifdef CONFIG_IP_PIMSM_V2
-static struct inet_protocol pim_protocol = {
+static struct net_protocol pim_protocol = {
        .handler        =       pim_rcv,
 };
 #endif