Lines Matching refs:mdb_entry
98 const struct vxlan_mdb_entry *mdb_entry, in vxlan_br_mdb_entry_fill() argument
102 const union vxlan_addr *dst = &mdb_entry->key.dst; in vxlan_br_mdb_entry_fill()
164 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_entry_info_fill() argument
175 vxlan_br_mdb_entry_fill(vxlan, mdb_entry, remote, &e); in vxlan_mdb_entry_info_fill()
181 if (!vxlan_addr_any(&mdb_entry->key.src) && in vxlan_mdb_entry_info_fill()
182 vxlan_nla_put_addr(skb, MDBA_MDB_EATTR_SOURCE, &mdb_entry->key.src)) in vxlan_mdb_entry_info_fill()
205 mdb_entry->key.vni && nla_put_u32(skb, MDBA_MDB_EATTR_SRC_VNI, in vxlan_mdb_entry_info_fill()
206 be32_to_cpu(mdb_entry->key.vni))) in vxlan_mdb_entry_info_fill()
221 const struct vxlan_mdb_entry *mdb_entry) in vxlan_mdb_entry_fill() argument
232 list_for_each_entry(remote, &mdb_entry->remotes, list) { in vxlan_mdb_entry_fill()
236 err = vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote); in vxlan_mdb_entry_fill()
252 struct vxlan_mdb_entry *mdb_entry; in vxlan_mdb_fill() local
260 hlist_for_each_entry(mdb_entry, &vxlan->mdb_list, mdb_node) { in vxlan_mdb_fill()
264 err = vxlan_mdb_entry_fill(vxlan, skb, ctx, mdb_entry); in vxlan_mdb_fill()
671 vxlan_mdb_remote_lookup(const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_remote_lookup() argument
676 list_for_each_entry(remote, &mdb_entry->remotes, list) { in vxlan_mdb_remote_lookup()
938 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_nlmsg_remote_size() argument
941 const struct vxlan_mdb_entry_key *group = &mdb_entry->key; in vxlan_mdb_nlmsg_remote_size()
978 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_nlmsg_size() argument
987 vxlan_mdb_nlmsg_remote_size(vxlan, mdb_entry, remote); in vxlan_mdb_nlmsg_size()
992 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_nlmsg_fill() argument
1016 if (vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote)) in vxlan_mdb_nlmsg_fill()
1031 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_remote_notify() argument
1039 skb = nlmsg_new(vxlan_mdb_nlmsg_size(vxlan, mdb_entry, remote), in vxlan_mdb_remote_notify()
1044 err = vxlan_mdb_nlmsg_fill(vxlan, skb, mdb_entry, remote, type); in vxlan_mdb_remote_notify()
1058 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_remote_srcs_replace() argument
1076 vxlan_mdb_remote_src_del(vxlan, &mdb_entry->key, remote, in vxlan_mdb_remote_srcs_replace()
1089 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_remote_replace() argument
1102 err = vxlan_mdb_remote_srcs_replace(cfg, mdb_entry, remote, extack); in vxlan_mdb_remote_replace()
1109 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_NEWMDB); in vxlan_mdb_remote_replace()
1122 struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_remote_add() argument
1128 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip); in vxlan_mdb_remote_add()
1134 return vxlan_mdb_remote_replace(cfg, mdb_entry, remote, extack); in vxlan_mdb_remote_add()
1156 list_add_rcu(&remote->list, &mdb_entry->remotes); in vxlan_mdb_remote_add()
1157 vxlan_mdb_remote_notify(cfg->vxlan, mdb_entry, remote, RTM_NEWMDB); in vxlan_mdb_remote_add()
1169 struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_remote_del() argument
1172 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_DELMDB); in vxlan_mdb_remote_del()
1174 vxlan_mdb_remote_srcs_del(vxlan, &mdb_entry->key, remote); in vxlan_mdb_remote_del()
1183 struct vxlan_mdb_entry *mdb_entry; in vxlan_mdb_entry_get() local
1186 mdb_entry = vxlan_mdb_entry_lookup(vxlan, group); in vxlan_mdb_entry_get()
1187 if (mdb_entry) in vxlan_mdb_entry_get()
1188 return mdb_entry; in vxlan_mdb_entry_get()
1190 mdb_entry = kzalloc(sizeof(*mdb_entry), GFP_KERNEL); in vxlan_mdb_entry_get()
1191 if (!mdb_entry) in vxlan_mdb_entry_get()
1194 INIT_LIST_HEAD(&mdb_entry->remotes); in vxlan_mdb_entry_get()
1195 memcpy(&mdb_entry->key, group, sizeof(mdb_entry->key)); in vxlan_mdb_entry_get()
1196 hlist_add_head(&mdb_entry->mdb_node, &vxlan->mdb_list); in vxlan_mdb_entry_get()
1199 &mdb_entry->rhnode, in vxlan_mdb_entry_get()
1204 if (hlist_is_singular_node(&mdb_entry->mdb_node, &vxlan->mdb_list)) in vxlan_mdb_entry_get()
1207 return mdb_entry; in vxlan_mdb_entry_get()
1210 hlist_del(&mdb_entry->mdb_node); in vxlan_mdb_entry_get()
1211 kfree(mdb_entry); in vxlan_mdb_entry_get()
1216 struct vxlan_mdb_entry *mdb_entry) in vxlan_mdb_entry_put() argument
1218 if (!list_empty(&mdb_entry->remotes)) in vxlan_mdb_entry_put()
1221 if (hlist_is_singular_node(&mdb_entry->mdb_node, &vxlan->mdb_list)) in vxlan_mdb_entry_put()
1224 rhashtable_remove_fast(&vxlan->mdb_tbl, &mdb_entry->rhnode, in vxlan_mdb_entry_put()
1226 hlist_del(&mdb_entry->mdb_node); in vxlan_mdb_entry_put()
1227 kfree_rcu(mdb_entry, rcu); in vxlan_mdb_entry_put()
1234 struct vxlan_mdb_entry *mdb_entry; in __vxlan_mdb_add() local
1237 mdb_entry = vxlan_mdb_entry_get(vxlan, &cfg->group); in __vxlan_mdb_add()
1238 if (IS_ERR(mdb_entry)) in __vxlan_mdb_add()
1239 return PTR_ERR(mdb_entry); in __vxlan_mdb_add()
1241 err = vxlan_mdb_remote_add(cfg, mdb_entry, extack); in __vxlan_mdb_add()
1250 vxlan_mdb_entry_put(vxlan, mdb_entry); in __vxlan_mdb_add()
1258 struct vxlan_mdb_entry *mdb_entry; in __vxlan_mdb_del() local
1261 mdb_entry = vxlan_mdb_entry_lookup(vxlan, &cfg->group); in __vxlan_mdb_del()
1262 if (!mdb_entry) { in __vxlan_mdb_del()
1267 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip); in __vxlan_mdb_del()
1273 vxlan_mdb_remote_del(vxlan, mdb_entry, remote); in __vxlan_mdb_del()
1274 vxlan_mdb_entry_put(vxlan, mdb_entry); in __vxlan_mdb_del()
1388 struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_remotes_flush() argument
1393 list_for_each_entry_safe(remote, tmp, &mdb_entry->remotes, list) { in vxlan_mdb_remotes_flush()
1404 remote_vni = rd->remote_vni ? : mdb_entry->key.vni; in vxlan_mdb_remotes_flush()
1415 vxlan_mdb_remote_del(vxlan, mdb_entry, remote); in vxlan_mdb_remotes_flush()
1422 struct vxlan_mdb_entry *mdb_entry; in vxlan_mdb_flush() local
1428 hlist_for_each_entry_safe(mdb_entry, tmp, &vxlan->mdb_list, mdb_node) { in vxlan_mdb_flush()
1429 if (desc->src_vni && desc->src_vni != mdb_entry->key.vni) in vxlan_mdb_flush()
1432 vxlan_mdb_remotes_flush(vxlan, mdb_entry, desc); in vxlan_mdb_flush()
1434 vxlan_mdb_entry_put(vxlan, mdb_entry); in vxlan_mdb_flush()
1502 const struct vxlan_mdb_entry *mdb_entry) in vxlan_mdb_get_reply_alloc() argument
1513 list_for_each_entry(remote, &mdb_entry->remotes, list) in vxlan_mdb_get_reply_alloc()
1514 nlmsg_size += vxlan_mdb_nlmsg_remote_size(vxlan, mdb_entry, in vxlan_mdb_get_reply_alloc()
1523 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_get_reply_fill() argument
1551 list_for_each_entry(remote, &mdb_entry->remotes, list) { in vxlan_mdb_get_reply_fill()
1552 err = vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote); in vxlan_mdb_get_reply_fill()
1572 struct vxlan_mdb_entry *mdb_entry; in vxlan_mdb_get() local
1583 mdb_entry = vxlan_mdb_entry_lookup(vxlan, &group); in vxlan_mdb_get()
1584 if (!mdb_entry) { in vxlan_mdb_get()
1589 skb = vxlan_mdb_get_reply_alloc(vxlan, mdb_entry); in vxlan_mdb_get()
1593 err = vxlan_mdb_get_reply_fill(vxlan, skb, mdb_entry, portid, seq); in vxlan_mdb_get()
1610 struct vxlan_mdb_entry *mdb_entry; in vxlan_mdb_entry_skb_get() local
1649 mdb_entry = vxlan_mdb_entry_lookup(vxlan, &group); in vxlan_mdb_entry_skb_get()
1650 if (mdb_entry) in vxlan_mdb_entry_skb_get()
1651 return mdb_entry; in vxlan_mdb_entry_skb_get()
1654 mdb_entry = vxlan_mdb_entry_lookup(vxlan, &group); in vxlan_mdb_entry_skb_get()
1655 if (mdb_entry) in vxlan_mdb_entry_skb_get()
1656 return mdb_entry; in vxlan_mdb_entry_skb_get()
1686 const struct vxlan_mdb_entry *mdb_entry, in vxlan_mdb_xmit() argument
1690 __be32 src_vni = mdb_entry->key.vni; in vxlan_mdb_xmit()
1692 list_for_each_entry_rcu(remote, &mdb_entry->remotes, list) { in vxlan_mdb_xmit()
1695 if ((vxlan_mdb_is_star_g(&mdb_entry->key) && in vxlan_mdb_xmit()