Merge tag 'v3.10.108' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / ipv4 / fib_frontend.c
index bcd0a05d600298ec0bb466768f0b14dcadbca754..7cea8eef192112ba86d9a13a208d5056cf158725 100644 (file)
@@ -413,6 +413,9 @@ static int rtentry_to_fib_config(struct net *net, int cmd, struct rtentry *rt,
                colon = strchr(devname, ':');
                if (colon)
                        *colon = 0;
+        #ifdef CONFIG_MTK_NET_LOGGING  
+               printk(KERN_INFO "[mtk_net][RTlog info]  ip_rt_ioctl   rt.dev =%s \n",devname); 
+               #endif          
                dev = __dev_get_by_name(net, devname);
                if (!dev)
                        return -ENODEV;
@@ -491,6 +494,9 @@ int ip_rt_ioctl(struct net *net, unsigned int cmd, void __user *arg)
 
                if (copy_from_user(&rt, arg, sizeof(rt)))
                        return -EFAULT;
+               #ifdef CONFIG_MTK_NET_LOGGING  
+               printk(KERN_INFO "[mtk_net][RTlog info]ip_rt_ioctl rt.flags =%08x, rt.rt_dst =%08x rt.rt_gateway =%08x \n",rt.rt_flags,sk_extract_addr(&(rt.rt_dst)),sk_extract_addr(&(rt.rt_gateway)));
+               #endif
 
                rtnl_lock();
                err = rtentry_to_fib_config(net, cmd, &rt, &cfg);
@@ -498,12 +504,18 @@ int ip_rt_ioctl(struct net *net, unsigned int cmd, void __user *arg)
                        struct fib_table *tb;
 
                        if (cmd == SIOCDELRT) {
+                               #ifdef CONFIG_MTK_NET_LOGGING 
+                               printk(KERN_INFO "[mtk_net][RTlog delete]  p_rt_ioctl: cmd == SIOCDELRT! >>\n");
+                               #endif
                                tb = fib_get_table(net, cfg.fc_table);
                                if (tb)
                                        err = fib_table_delete(tb, &cfg);
                                else
                                        err = -ESRCH;
                        } else {
+                               #ifdef CONFIG_MTK_NET_LOGGING 
+                               printk(KERN_INFO "[mtk_net][RTlog insert]  p_rt_ioctl: cmd == SIOCADDRT! >>\n");
+                               #endif
                                tb = fib_new_table(net, cfg.fc_table);
                                if (tb)
                                        err = fib_table_insert(tb, &cfg);
@@ -531,6 +543,7 @@ const struct nla_policy rtm_ipv4_policy[RTA_MAX + 1] = {
        [RTA_METRICS]           = { .type = NLA_NESTED },
        [RTA_MULTIPATH]         = { .len = sizeof(struct rtnexthop) },
        [RTA_FLOW]              = { .type = NLA_U32 },
+       [RTA_UID]               = { .type = NLA_U32 },
 };
 
 static int rtm_to_fib_config(struct net *net, struct sk_buff *skb,
@@ -610,11 +623,15 @@ static int inet_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh)
        struct fib_config cfg;
        struct fib_table *tb;
        int err;
-
+    #ifdef CONFIG_MTK_NET_LOGGING 
+       printk(KERN_INFO "[mtk_net][RTlog delete] inet_rtm_delroute !\n");
+       #endif
        err = rtm_to_fib_config(net, skb, nlh, &cfg);
        if (err < 0)
                goto errout;
-
+       #ifdef CONFIG_MTK_NET_LOGGING 
+       printk(KERN_INFO "[mtk_net][RTlog info]  inet_rtm_delroute  cfg.fc_dst =%08x, cfg.fc_gw =%08x\n",cfg.fc_dst,cfg.fc_gw);
+    #endif
        tb = fib_get_table(net, cfg.fc_table);
        if (tb == NULL) {
                err = -ESRCH;
@@ -632,10 +649,16 @@ static int inet_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh)
        struct fib_config cfg;
        struct fib_table *tb;
        int err;
+       #ifdef CONFIG_MTK_NET_LOGGING 
+       printk(KERN_INFO "[mtk_net][RTlog insert] inet_rtm_newroute !\n");
+       #endif
 
        err = rtm_to_fib_config(net, skb, nlh, &cfg);
        if (err < 0)
                goto errout;
+       #ifdef CONFIG_MTK_NET_LOGGING 
+       printk(KERN_INFO "[mtk_net][RTlog info]  inet_rtm_newroute  cfg.fc_dst =%08x,cfg.fc_gw =%08x \n",cfg.fc_dst,cfg.fc_gw);
+       #endif
 
        tb = fib_new_table(net, cfg.fc_table);
        if (tb == NULL) {
@@ -759,10 +782,16 @@ void fib_add_ifaddr(struct in_ifaddr *ifa)
 
        if (!ipv4_is_zeronet(prefix) && !(ifa->ifa_flags & IFA_F_SECONDARY) &&
            (prefix != addr || ifa->ifa_prefixlen < 32)) {
+           /* MTK_NET_CHANGES */
+           if(0 == strncmp(dev->name, "ccmni", 2)){
+           #ifdef CONFIG_MTK_NET_LOGGING 
+               printk(KERN_INFO "[mtk_net][RTlog] ignore ccmni subnet route\n");
+               #endif
+               } else {
                fib_magic(RTM_NEWROUTE,
                          dev->flags & IFF_LOOPBACK ? RTN_LOCAL : RTN_UNICAST,
                          prefix, ifa->ifa_prefixlen, prim);
-
+               }
                /* Add network specific broadcasts, when it takes a sense */
                if (ifa->ifa_prefixlen < 31) {
                        fib_magic(RTM_NEWROUTE, RTN_BROADCAST, prefix, 32, prim);
@@ -1014,6 +1043,9 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
 
        switch (event) {
        case NETDEV_UP:
+               #ifdef CONFIG_MTK_NET_LOGGING 
+               printk(KERN_INFO "[mtk_net][RTlog insert]   fib_inetaddr_event()  %s NETDEV_UP!\n", ifa->ifa_dev->dev->name);
+               #endif
                fib_add_ifaddr(ifa);
 #ifdef CONFIG_IP_ROUTE_MULTIPATH
                fib_sync_up(dev);
@@ -1022,6 +1054,9 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
                rt_cache_flush(dev_net(dev));
                break;
        case NETDEV_DOWN:
+               #ifdef CONFIG_MTK_NET_LOGGING 
+               printk(KERN_INFO "[mtk_net][RTlog delete]   fib_inetaddr_event()  %s NETDEV_DOWN!\n", ifa->ifa_dev->dev->name);
+               #endif
                fib_del_ifaddr(ifa, NULL);
                atomic_inc(&net->ipv4.dev_addr_genid);
                if (ifa->ifa_dev->ifa_list == NULL) {
@@ -1055,6 +1090,9 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
 
        switch (event) {
        case NETDEV_UP:
+               #ifdef CONFIG_MTK_NET_LOGGING 
+               printk(KERN_INFO "[mtk_net][RTlog insert]   fib_netdev_event()  %s NETDEV_UP!\n", dev->name);
+               #endif
                for_ifa(in_dev) {
                        fib_add_ifaddr(ifa);
                } endfor_ifa(in_dev);
@@ -1065,6 +1103,9 @@ static int fib_netdev_event(struct notifier_block *this, unsigned long event, vo
                rt_cache_flush(net);
                break;
        case NETDEV_DOWN:
+               #ifdef CONFIG_MTK_NET_LOGGING 
+               printk(KERN_INFO "[mtk_net][RTlog delete]   fib_netdev_event()  %s NETDEV_DOWN!\n", dev->name);
+               #endif
                fib_disable_ip(dev, 0);
                break;
        case NETDEV_CHANGEMTU: