br_fdb.c (e5451c8f8330e03ad3cfa16048b4daf961af434f) | br_fdb.c (472681d57a5dde7c6d16b05469be57f1c4ed9d99) |
---|---|
1/* 2 * Forwarding database 3 * Linux ethernet bridge 4 * 5 * Authors: 6 * Lennert Buytenhek <buytenh@gnu.org> 7 * 8 * This program is free software; you can redistribute it and/or --- 709 unchanged lines hidden (view full) --- 718 719 if (!filter_dev) 720 idx = ndo_dflt_fdb_dump(skb, cb, dev, NULL, idx); 721 722 for (i = 0; i < BR_HASH_SIZE; i++) { 723 struct net_bridge_fdb_entry *f; 724 725 hlist_for_each_entry_rcu(f, &br->hash[i], hlist) { | 1/* 2 * Forwarding database 3 * Linux ethernet bridge 4 * 5 * Authors: 6 * Lennert Buytenhek <buytenh@gnu.org> 7 * 8 * This program is free software; you can redistribute it and/or --- 709 unchanged lines hidden (view full) --- 718 719 if (!filter_dev) 720 idx = ndo_dflt_fdb_dump(skb, cb, dev, NULL, idx); 721 722 for (i = 0; i < BR_HASH_SIZE; i++) { 723 struct net_bridge_fdb_entry *f; 724 725 hlist_for_each_entry_rcu(f, &br->hash[i], hlist) { |
726 int err; 727 |
|
726 if (idx < cb->args[0]) 727 goto skip; 728 729 if (filter_dev && 730 (!f->dst || f->dst->dev != filter_dev)) { 731 if (filter_dev != dev) 732 goto skip; 733 /* !f->dst is a special case for bridge 734 * It means the MAC belongs to the bridge 735 * Therefore need a little more filtering 736 * we only want to dump the !f->dst case 737 */ 738 if (f->dst) 739 goto skip; 740 } 741 if (!filter_dev && f->dst) 742 goto skip; 743 | 728 if (idx < cb->args[0]) 729 goto skip; 730 731 if (filter_dev && 732 (!f->dst || f->dst->dev != filter_dev)) { 733 if (filter_dev != dev) 734 goto skip; 735 /* !f->dst is a special case for bridge 736 * It means the MAC belongs to the bridge 737 * Therefore need a little more filtering 738 * we only want to dump the !f->dst case 739 */ 740 if (f->dst) 741 goto skip; 742 } 743 if (!filter_dev && f->dst) 744 goto skip; 745 |
744 if (fdb_fill_info(skb, br, f, 745 NETLINK_CB(cb->skb).portid, 746 cb->nlh->nlmsg_seq, 747 RTM_NEWNEIGH, 748 NLM_F_MULTI) < 0) | 746 err = fdb_fill_info(skb, br, f, 747 NETLINK_CB(cb->skb).portid, 748 cb->nlh->nlmsg_seq, 749 RTM_NEWNEIGH, 750 NLM_F_MULTI); 751 if (err < 0) { 752 cb->args[1] = err; |
749 break; | 753 break; |
754 } |
|
750skip: 751 ++idx; 752 } 753 } 754 755out: 756 return idx; 757} --- 390 unchanged lines hidden --- | 755skip: 756 ++idx; 757 } 758 } 759 760out: 761 return idx; 762} --- 390 unchanged lines hidden --- |