Lines Matching refs:mdb_entry
90 const struct vxlan_mdb_entry *mdb_entry,
94 const union vxlan_addr *dst = &mdb_entry->key.dst;
156 const struct vxlan_mdb_entry *mdb_entry,
167 vxlan_br_mdb_entry_fill(vxlan, mdb_entry, remote, &e);
173 if (!vxlan_addr_any(&mdb_entry->key.src) &&
174 vxlan_nla_put_addr(skb, MDBA_MDB_EATTR_SOURCE, &mdb_entry->key.src))
197 mdb_entry->key.vni && nla_put_u32(skb, MDBA_MDB_EATTR_SRC_VNI,
198 be32_to_cpu(mdb_entry->key.vni)))
213 const struct vxlan_mdb_entry *mdb_entry)
224 list_for_each_entry(remote, &mdb_entry->remotes, list) {
228 err = vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote);
244 struct vxlan_mdb_entry *mdb_entry;
252 hlist_for_each_entry(mdb_entry, &vxlan->mdb_list, mdb_node) {
256 err = vxlan_mdb_entry_fill(vxlan, skb, ctx, mdb_entry);
665 vxlan_mdb_remote_lookup(const struct vxlan_mdb_entry *mdb_entry,
670 list_for_each_entry(remote, &mdb_entry->remotes, list) {
931 const struct vxlan_mdb_entry *mdb_entry,
934 const struct vxlan_mdb_entry_key *group = &mdb_entry->key;
976 const struct vxlan_mdb_entry *mdb_entry,
1000 if (vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote))
1015 const struct vxlan_mdb_entry *mdb_entry,
1023 skb = nlmsg_new(vxlan_mdb_nlmsg_size(vxlan, mdb_entry, remote),
1028 err = vxlan_mdb_nlmsg_fill(vxlan, skb, mdb_entry, remote, type);
1042 const struct vxlan_mdb_entry *mdb_entry,
1060 vxlan_mdb_remote_src_del(vxlan, &mdb_entry->key, remote,
1073 const struct vxlan_mdb_entry *mdb_entry,
1086 err = vxlan_mdb_remote_srcs_replace(cfg, mdb_entry, remote, extack);
1093 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_NEWMDB);
1106 struct vxlan_mdb_entry *mdb_entry,
1112 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip);
1118 return vxlan_mdb_remote_replace(cfg, mdb_entry, remote, extack);
1140 list_add_rcu(&remote->list, &mdb_entry->remotes);
1141 vxlan_mdb_remote_notify(cfg->vxlan, mdb_entry, remote, RTM_NEWMDB);
1153 struct vxlan_mdb_entry *mdb_entry,
1156 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_DELMDB);
1158 vxlan_mdb_remote_srcs_del(vxlan, &mdb_entry->key, remote);
1167 struct vxlan_mdb_entry *mdb_entry;
1170 mdb_entry = vxlan_mdb_entry_lookup(vxlan, group);
1171 if (mdb_entry)
1172 return mdb_entry;
1174 mdb_entry = kzalloc(sizeof(*mdb_entry), GFP_KERNEL);
1175 if (!mdb_entry)
1178 INIT_LIST_HEAD(&mdb_entry->remotes);
1179 memcpy(&mdb_entry->key, group, sizeof(mdb_entry->key));
1180 hlist_add_head(&mdb_entry->mdb_node, &vxlan->mdb_list);
1183 &mdb_entry->rhnode,
1188 if (hlist_is_singular_node(&mdb_entry->mdb_node, &vxlan->mdb_list))
1191 return mdb_entry;
1194 hlist_del(&mdb_entry->mdb_node);
1195 kfree(mdb_entry);
1200 struct vxlan_mdb_entry *mdb_entry)
1202 if (!list_empty(&mdb_entry->remotes))
1205 if (hlist_is_singular_node(&mdb_entry->mdb_node, &vxlan->mdb_list))
1208 rhashtable_remove_fast(&vxlan->mdb_tbl, &mdb_entry->rhnode,
1210 hlist_del(&mdb_entry->mdb_node);
1211 kfree_rcu(mdb_entry, rcu);
1218 struct vxlan_mdb_entry *mdb_entry;
1221 mdb_entry = vxlan_mdb_entry_get(vxlan, &cfg->group);
1222 if (IS_ERR(mdb_entry))
1223 return PTR_ERR(mdb_entry);
1225 err = vxlan_mdb_remote_add(cfg, mdb_entry, extack);
1234 vxlan_mdb_entry_put(vxlan, mdb_entry);
1242 struct vxlan_mdb_entry *mdb_entry;
1245 mdb_entry = vxlan_mdb_entry_lookup(vxlan, &cfg->group);
1246 if (!mdb_entry) {
1251 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip);
1257 vxlan_mdb_remote_del(vxlan, mdb_entry, remote);
1258 vxlan_mdb_entry_put(vxlan, mdb_entry);
1305 struct vxlan_mdb_entry *mdb_entry;
1344 mdb_entry = vxlan_mdb_entry_lookup(vxlan, &group);
1345 if (mdb_entry)
1346 return mdb_entry;
1349 mdb_entry = vxlan_mdb_entry_lookup(vxlan, &group);
1350 if (mdb_entry)
1351 return mdb_entry;
1381 const struct vxlan_mdb_entry *mdb_entry,
1385 __be32 src_vni = mdb_entry->key.vni;
1387 list_for_each_entry_rcu(remote, &mdb_entry->remotes, list) {
1390 if ((vxlan_mdb_is_star_g(&mdb_entry->key) &&
1421 struct vxlan_mdb_entry *mdb_entry)
1425 list_for_each_entry_safe(remote, tmp, &mdb_entry->remotes, list)
1426 vxlan_mdb_remote_del(vxlan, mdb_entry, remote);
1431 struct vxlan_mdb_entry *mdb_entry;
1437 hlist_for_each_entry_safe(mdb_entry, tmp, &vxlan->mdb_list, mdb_node) {
1438 vxlan_mdb_remotes_flush(vxlan, mdb_entry);
1439 vxlan_mdb_entry_put(vxlan, mdb_entry);