aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/route.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r--net/ipv6/route.c49
1 files changed, 1 insertions, 48 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index f54e3a101098..5dc6ca6b6686 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -1160,7 +1160,6 @@ void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu,
1160 memset(&fl6, 0, sizeof(fl6)); 1160 memset(&fl6, 0, sizeof(fl6));
1161 fl6.flowi6_oif = oif; 1161 fl6.flowi6_oif = oif;
1162 fl6.flowi6_mark = mark; 1162 fl6.flowi6_mark = mark;
1163 fl6.flowi6_flags = 0;
1164 fl6.daddr = iph->daddr; 1163 fl6.daddr = iph->daddr;
1165 fl6.saddr = iph->saddr; 1164 fl6.saddr = iph->saddr;
1166 fl6.flowlabel = ip6_flowinfo(iph); 1165 fl6.flowlabel = ip6_flowinfo(iph);
@@ -1259,7 +1258,6 @@ void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark)
1259 memset(&fl6, 0, sizeof(fl6)); 1258 memset(&fl6, 0, sizeof(fl6));
1260 fl6.flowi6_oif = oif; 1259 fl6.flowi6_oif = oif;
1261 fl6.flowi6_mark = mark; 1260 fl6.flowi6_mark = mark;
1262 fl6.flowi6_flags = 0;
1263 fl6.daddr = iph->daddr; 1261 fl6.daddr = iph->daddr;
1264 fl6.saddr = iph->saddr; 1262 fl6.saddr = iph->saddr;
1265 fl6.flowlabel = ip6_flowinfo(iph); 1263 fl6.flowlabel = ip6_flowinfo(iph);
@@ -1281,7 +1279,6 @@ void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif,
1281 memset(&fl6, 0, sizeof(fl6)); 1279 memset(&fl6, 0, sizeof(fl6));
1282 fl6.flowi6_oif = oif; 1280 fl6.flowi6_oif = oif;
1283 fl6.flowi6_mark = mark; 1281 fl6.flowi6_mark = mark;
1284 fl6.flowi6_flags = 0;
1285 fl6.daddr = msg->dest; 1282 fl6.daddr = msg->dest;
1286 fl6.saddr = iph->daddr; 1283 fl6.saddr = iph->daddr;
1287 1284
@@ -2828,56 +2825,12 @@ static int ip6_route_dev_notify(struct notifier_block *this,
2828 2825
2829#ifdef CONFIG_PROC_FS 2826#ifdef CONFIG_PROC_FS
2830 2827
2831struct rt6_proc_arg
2832{
2833 char *buffer;
2834 int offset;
2835 int length;
2836 int skip;
2837 int len;
2838};
2839
2840static int rt6_info_route(struct rt6_info *rt, void *p_arg)
2841{
2842 struct seq_file *m = p_arg;
2843
2844 seq_printf(m, "%pi6 %02x ", &rt->rt6i_dst.addr, rt->rt6i_dst.plen);
2845
2846#ifdef CONFIG_IPV6_SUBTREES
2847 seq_printf(m, "%pi6 %02x ", &rt->rt6i_src.addr, rt->rt6i_src.plen);
2848#else
2849 seq_puts(m, "00000000000000000000000000000000 00 ");
2850#endif
2851 if (rt->rt6i_flags & RTF_GATEWAY) {
2852 seq_printf(m, "%pi6", &rt->rt6i_gateway);
2853 } else {
2854 seq_puts(m, "00000000000000000000000000000000");
2855 }
2856 seq_printf(m, " %08x %08x %08x %08x %8s\n",
2857 rt->rt6i_metric, atomic_read(&rt->dst.__refcnt),
2858 rt->dst.__use, rt->rt6i_flags,
2859 rt->dst.dev ? rt->dst.dev->name : "");
2860 return 0;
2861}
2862
2863static int ipv6_route_show(struct seq_file *m, void *v)
2864{
2865 struct net *net = (struct net *)m->private;
2866 fib6_clean_all_ro(net, rt6_info_route, 0, m);
2867 return 0;
2868}
2869
2870static int ipv6_route_open(struct inode *inode, struct file *file)
2871{
2872 return single_open_net(inode, file, ipv6_route_show);
2873}
2874
2875static const struct file_operations ipv6_route_proc_fops = { 2828static const struct file_operations ipv6_route_proc_fops = {
2876 .owner = THIS_MODULE, 2829 .owner = THIS_MODULE,
2877 .open = ipv6_route_open, 2830 .open = ipv6_route_open,
2878 .read = seq_read, 2831 .read = seq_read,
2879 .llseek = seq_lseek, 2832 .llseek = seq_lseek,
2880 .release = single_release_net, 2833 .release = seq_release_net,
2881}; 2834};
2882 2835
2883static int rt6_stats_seq_show(struct seq_file *seq, void *v) 2836static int rt6_stats_seq_show(struct seq_file *seq, void *v)