--- zzzz-none-000/linux-2.6.19.2/net/ipv6/ip6_flowlabel.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/net/ipv6/ip6_flowlabel.c 2007-01-11 07:38:19.000000000 +0000 @@ -330,10 +330,8 @@ fl->share = freq->flr_share; addr_type = ipv6_addr_type(&freq->flr_dst); if ((addr_type&IPV6_ADDR_MAPPED) - || addr_type == IPV6_ADDR_ANY) { - err = -EINVAL; + || addr_type == IPV6_ADDR_ANY) goto done; - } ipv6_addr_copy(&fl->dst, &freq->flr_dst); atomic_set(&fl->users, 1); switch (fl->share) { @@ -589,8 +587,6 @@ while (!fl) { if (++state->bucket <= FL_HASH_MASK) fl = fl_ht[state->bucket]; - else - break; } return fl; } @@ -627,13 +623,9 @@ read_unlock_bh(&ip6_fl_lock); } -static int ip6fl_seq_show(struct seq_file *seq, void *v) +static void ip6fl_fl_seq_show(struct seq_file *seq, struct ip6_flowlabel *fl) { - if (v == SEQ_START_TOKEN) - seq_printf(seq, "%-5s %-1s %-6s %-6s %-6s %-8s %-32s %s\n", - "Label", "S", "Owner", "Users", "Linger", "Expires", "Dst", "Opt"); - else { - struct ip6_flowlabel *fl = v; + while(fl) { seq_printf(seq, "%05X %-1d %-6d %-6d %-6ld %-8ld " NIP6_SEQFMT " %-4d\n", (unsigned)ntohl(fl->label), @@ -644,7 +636,17 @@ (long)(fl->expires - jiffies)/HZ, NIP6(fl->dst), fl->opt ? fl->opt->opt_nflen : 0); + fl = fl->next; } +} + +static int ip6fl_seq_show(struct seq_file *seq, void *v) +{ + if (v == SEQ_START_TOKEN) + seq_printf(seq, "%-5s %-1s %-6s %-6s %-6s %-8s %-32s %s\n", + "Label", "S", "Owner", "Users", "Linger", "Expires", "Dst", "Opt"); + else + ip6fl_fl_seq_show(seq, v); return 0; }