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 ---