Lines Matching refs:remote

91 				    const struct vxlan_mdb_remote *remote,
100 if (remote->flags & VXLAN_MDB_REMOTE_F_BLOCKED)
118 const struct vxlan_mdb_remote *remote)
123 if (hlist_empty(&remote->src_list))
130 hlist_for_each_entry(ent, &remote->src_list, node) {
157 const struct vxlan_mdb_remote *remote)
159 struct vxlan_rdst *rd = rtnl_dereference(remote->rd);
167 vxlan_br_mdb_entry_fill(vxlan, mdb_entry, remote, &e);
177 if (nla_put_u8(skb, MDBA_MDB_EATTR_RTPROT, remote->rt_protocol) ||
178 nla_put_u8(skb, MDBA_MDB_EATTR_GROUP_MODE, remote->filter_mode) ||
179 vxlan_mdb_entry_info_fill_srcs(skb, remote) ||
216 struct vxlan_mdb_remote *remote;
224 list_for_each_entry(remote, &mdb_entry->remotes, list) {
228 err = vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote);
497 NL_SET_ERR_MSG_MOD(extack, "Missing remote destination IP address");
561 NL_SET_ERR_MSG_MOD(extack, "Invalid remote destination address");
668 struct vxlan_mdb_remote *remote;
670 list_for_each_entry(remote, &mdb_entry->remotes, list) {
671 struct vxlan_rdst *rd = rtnl_dereference(remote->rd);
674 return remote;
689 struct vxlan_mdb_remote *remote)
706 rcu_assign_pointer(remote->rd, rd);
721 struct vxlan_mdb_remote *remote)
725 err = vxlan_mdb_remote_rdst_init(cfg, remote);
729 remote->flags = cfg->flags;
730 remote->filter_mode = cfg->filter_mode;
731 remote->rt_protocol = cfg->rt_protocol;
732 INIT_HLIST_HEAD(&remote->src_list);
738 struct vxlan_mdb_remote *remote)
740 WARN_ON_ONCE(!hlist_empty(&remote->src_list));
741 vxlan_mdb_remote_rdst_fini(rtnl_dereference(remote->rd));
745 vxlan_mdb_remote_src_entry_lookup(const struct vxlan_mdb_remote *remote,
750 hlist_for_each_entry(ent, &remote->src_list, node) {
759 vxlan_mdb_remote_src_entry_add(struct vxlan_mdb_remote *remote,
769 hlist_add_head(&ent->node, &remote->src_list);
810 const struct vxlan_mdb_remote *remote,
813 struct vxlan_rdst *rd = rtnl_dereference(remote->rd);
829 struct vxlan_mdb_remote *remote,
836 ent = vxlan_mdb_remote_src_entry_lookup(remote, &src->addr);
838 ent = vxlan_mdb_remote_src_entry_add(remote, &src->addr);
864 const struct vxlan_mdb_remote *remote,
867 vxlan_mdb_remote_src_fwd_del(vxlan, group, remote, &ent->addr);
872 struct vxlan_mdb_remote *remote,
881 err = vxlan_mdb_remote_src_add(cfg, remote, src, extack);
889 hlist_for_each_entry_safe(ent, tmp, &remote->src_list, node)
890 vxlan_mdb_remote_src_del(cfg->vxlan, &cfg->group, remote, ent);
896 struct vxlan_mdb_remote *remote)
901 hlist_for_each_entry_safe(ent, tmp, &remote->src_list, node)
902 vxlan_mdb_remote_src_del(vxlan, group, remote, ent);
907 const struct vxlan_mdb_remote *remote)
912 if (hlist_empty(&remote->src_list))
918 hlist_for_each_entry(ent, &remote->src_list, node) {
932 const struct vxlan_mdb_remote *remote)
935 struct vxlan_rdst *rd = rtnl_dereference(remote->rd);
953 nlmsg_size += vxlan_mdb_nlmsg_src_list_size(group, remote);
977 const struct vxlan_mdb_remote *remote,
1000 if (vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote))
1016 const struct vxlan_mdb_remote *remote,
1023 skb = nlmsg_new(vxlan_mdb_nlmsg_size(vxlan, mdb_entry, remote),
1028 err = vxlan_mdb_nlmsg_fill(vxlan, skb, mdb_entry, remote, type);
1043 struct vxlan_mdb_remote *remote,
1051 hlist_for_each_entry(ent, &remote->src_list, node)
1054 err = vxlan_mdb_remote_srcs_add(cfg, remote, extack);
1058 hlist_for_each_entry_safe(ent, tmp, &remote->src_list, node) {
1060 vxlan_mdb_remote_src_del(vxlan, &mdb_entry->key, remote,
1067 hlist_for_each_entry(ent, &remote->src_list, node)
1074 struct vxlan_mdb_remote *remote,
1077 struct vxlan_rdst *new_rd, *old_rd = rtnl_dereference(remote->rd);
1081 err = vxlan_mdb_remote_rdst_init(cfg, remote);
1084 new_rd = rtnl_dereference(remote->rd);
1086 err = vxlan_mdb_remote_srcs_replace(cfg, mdb_entry, remote, extack);
1090 WRITE_ONCE(remote->flags, cfg->flags);
1091 WRITE_ONCE(remote->filter_mode, cfg->filter_mode);
1092 remote->rt_protocol = cfg->rt_protocol;
1093 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_NEWMDB);
1100 rcu_assign_pointer(remote->rd, old_rd);
1109 struct vxlan_mdb_remote *remote;
1112 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip);
1113 if (remote) {
1115 NL_SET_ERR_MSG_MOD(extack, "Replace not specified and MDB remote entry already exists");
1118 return vxlan_mdb_remote_replace(cfg, mdb_entry, remote, extack);
1126 remote = kzalloc(sizeof(*remote), GFP_KERNEL);
1127 if (!remote)
1130 err = vxlan_mdb_remote_init(cfg, remote);
1132 NL_SET_ERR_MSG_MOD(extack, "Failed to initialize remote MDB entry");
1136 err = vxlan_mdb_remote_srcs_add(cfg, remote, extack);
1140 list_add_rcu(&remote->list, &mdb_entry->remotes);
1141 vxlan_mdb_remote_notify(cfg->vxlan, mdb_entry, remote, RTM_NEWMDB);
1146 vxlan_mdb_remote_fini(cfg->vxlan, remote);
1148 kfree(remote);
1154 struct vxlan_mdb_remote *remote)
1156 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_DELMDB);
1157 list_del_rcu(&remote->list);
1158 vxlan_mdb_remote_srcs_del(vxlan, &mdb_entry->key, remote);
1159 vxlan_mdb_remote_fini(vxlan, remote);
1160 kfree_rcu(remote, rcu);
1243 struct vxlan_mdb_remote *remote;
1251 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip);
1252 if (!remote) {
1253 NL_SET_ERR_MSG_MOD(extack, "Did not find MDB remote entry");
1257 vxlan_mdb_remote_del(vxlan, mdb_entry, remote);
1384 struct vxlan_mdb_remote *remote, *fremote = NULL;
1387 list_for_each_entry_rcu(remote, &mdb_entry->remotes, list) {
1391 READ_ONCE(remote->filter_mode) == MCAST_INCLUDE) ||
1392 (READ_ONCE(remote->flags) & VXLAN_MDB_REMOTE_F_BLOCKED))
1396 fremote = remote;
1403 rcu_dereference(remote->rd), false);
1423 struct vxlan_mdb_remote *remote, *tmp;
1425 list_for_each_entry_safe(remote, tmp, &mdb_entry->remotes, list)
1426 vxlan_mdb_remote_del(vxlan, mdb_entry, remote);