Lines Matching full:remote
99 const struct vxlan_mdb_remote *remote, in vxlan_br_mdb_entry_fill() argument
108 if (remote->flags & VXLAN_MDB_REMOTE_F_BLOCKED) in vxlan_br_mdb_entry_fill()
126 const struct vxlan_mdb_remote *remote) in vxlan_mdb_entry_info_fill_srcs() argument
131 if (hlist_empty(&remote->src_list)) in vxlan_mdb_entry_info_fill_srcs()
138 hlist_for_each_entry(ent, &remote->src_list, node) { in vxlan_mdb_entry_info_fill_srcs()
165 const struct vxlan_mdb_remote *remote) in vxlan_mdb_entry_info_fill() argument
167 struct vxlan_rdst *rd = rtnl_dereference(remote->rd); in vxlan_mdb_entry_info_fill()
175 vxlan_br_mdb_entry_fill(vxlan, mdb_entry, remote, &e); in vxlan_mdb_entry_info_fill()
185 if (nla_put_u8(skb, MDBA_MDB_EATTR_RTPROT, remote->rt_protocol) || in vxlan_mdb_entry_info_fill()
186 nla_put_u8(skb, MDBA_MDB_EATTR_GROUP_MODE, remote->filter_mode) || in vxlan_mdb_entry_info_fill()
187 vxlan_mdb_entry_info_fill_srcs(skb, remote) || in vxlan_mdb_entry_info_fill()
224 struct vxlan_mdb_remote *remote; in vxlan_mdb_entry_fill() local
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()
503 NL_SET_ERR_MSG_MOD(extack, "Missing remote destination IP address"); in vxlan_mdb_config_attrs_init()
567 NL_SET_ERR_MSG_MOD(extack, "Invalid remote destination address"); in vxlan_mdb_config_attrs_init()
674 struct vxlan_mdb_remote *remote; in vxlan_mdb_remote_lookup() local
676 list_for_each_entry(remote, &mdb_entry->remotes, list) { in vxlan_mdb_remote_lookup()
677 struct vxlan_rdst *rd = rtnl_dereference(remote->rd); in vxlan_mdb_remote_lookup()
680 return remote; in vxlan_mdb_remote_lookup()
695 struct vxlan_mdb_remote *remote) in vxlan_mdb_remote_rdst_init() argument
712 rcu_assign_pointer(remote->rd, rd); in vxlan_mdb_remote_rdst_init()
727 struct vxlan_mdb_remote *remote) in vxlan_mdb_remote_init() argument
731 err = vxlan_mdb_remote_rdst_init(cfg, remote); in vxlan_mdb_remote_init()
735 remote->flags = cfg->flags; in vxlan_mdb_remote_init()
736 remote->filter_mode = cfg->filter_mode; in vxlan_mdb_remote_init()
737 remote->rt_protocol = cfg->rt_protocol; in vxlan_mdb_remote_init()
738 INIT_HLIST_HEAD(&remote->src_list); in vxlan_mdb_remote_init()
744 struct vxlan_mdb_remote *remote) in vxlan_mdb_remote_fini() argument
746 WARN_ON_ONCE(!hlist_empty(&remote->src_list)); in vxlan_mdb_remote_fini()
747 vxlan_mdb_remote_rdst_fini(rtnl_dereference(remote->rd)); in vxlan_mdb_remote_fini()
751 vxlan_mdb_remote_src_entry_lookup(const struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_src_entry_lookup() argument
756 hlist_for_each_entry(ent, &remote->src_list, node) { in vxlan_mdb_remote_src_entry_lookup()
765 vxlan_mdb_remote_src_entry_add(struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_src_entry_add() argument
775 hlist_add_head(&ent->node, &remote->src_list); in vxlan_mdb_remote_src_entry_add()
816 const struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_src_fwd_del() argument
819 struct vxlan_rdst *rd = rtnl_dereference(remote->rd); in vxlan_mdb_remote_src_fwd_del()
835 struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_src_add() argument
842 ent = vxlan_mdb_remote_src_entry_lookup(remote, &src->addr); in vxlan_mdb_remote_src_add()
844 ent = vxlan_mdb_remote_src_entry_add(remote, &src->addr); in vxlan_mdb_remote_src_add()
870 const struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_src_del() argument
873 vxlan_mdb_remote_src_fwd_del(vxlan, group, remote, &ent->addr); in vxlan_mdb_remote_src_del()
878 struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_srcs_add() argument
887 err = vxlan_mdb_remote_src_add(cfg, remote, src, extack); in vxlan_mdb_remote_srcs_add()
895 hlist_for_each_entry_safe(ent, tmp, &remote->src_list, node) in vxlan_mdb_remote_srcs_add()
896 vxlan_mdb_remote_src_del(cfg->vxlan, &cfg->group, remote, ent); in vxlan_mdb_remote_srcs_add()
902 struct vxlan_mdb_remote *remote) in vxlan_mdb_remote_srcs_del() argument
907 hlist_for_each_entry_safe(ent, tmp, &remote->src_list, node) in vxlan_mdb_remote_srcs_del()
908 vxlan_mdb_remote_src_del(vxlan, group, remote, ent); in vxlan_mdb_remote_srcs_del()
913 const struct vxlan_mdb_remote *remote) in vxlan_mdb_nlmsg_src_list_size() argument
918 if (hlist_empty(&remote->src_list)) in vxlan_mdb_nlmsg_src_list_size()
924 hlist_for_each_entry(ent, &remote->src_list, node) { in vxlan_mdb_nlmsg_src_list_size()
939 const struct vxlan_mdb_remote *remote) in vxlan_mdb_nlmsg_remote_size() argument
942 struct vxlan_rdst *rd = rtnl_dereference(remote->rd); in vxlan_mdb_nlmsg_remote_size()
956 nlmsg_size += vxlan_mdb_nlmsg_src_list_size(group, remote); in vxlan_mdb_nlmsg_remote_size()
979 const struct vxlan_mdb_remote *remote) in vxlan_mdb_nlmsg_size() argument
986 /* Remote entry */ in vxlan_mdb_nlmsg_size()
987 vxlan_mdb_nlmsg_remote_size(vxlan, mdb_entry, remote); in vxlan_mdb_nlmsg_size()
993 const struct vxlan_mdb_remote *remote, in vxlan_mdb_nlmsg_fill() argument
1016 if (vxlan_mdb_entry_info_fill(vxlan, skb, mdb_entry, remote)) in vxlan_mdb_nlmsg_fill()
1032 const struct vxlan_mdb_remote *remote, 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()
1059 struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_srcs_replace() argument
1067 hlist_for_each_entry(ent, &remote->src_list, node) in vxlan_mdb_remote_srcs_replace()
1070 err = vxlan_mdb_remote_srcs_add(cfg, remote, extack); in vxlan_mdb_remote_srcs_replace()
1074 hlist_for_each_entry_safe(ent, tmp, &remote->src_list, node) { in vxlan_mdb_remote_srcs_replace()
1076 vxlan_mdb_remote_src_del(vxlan, &mdb_entry->key, remote, in vxlan_mdb_remote_srcs_replace()
1083 hlist_for_each_entry(ent, &remote->src_list, node) in vxlan_mdb_remote_srcs_replace()
1090 struct vxlan_mdb_remote *remote, in vxlan_mdb_remote_replace() argument
1093 struct vxlan_rdst *new_rd, *old_rd = rtnl_dereference(remote->rd); in vxlan_mdb_remote_replace()
1097 err = vxlan_mdb_remote_rdst_init(cfg, remote); in vxlan_mdb_remote_replace()
1100 new_rd = rtnl_dereference(remote->rd); in vxlan_mdb_remote_replace()
1102 err = vxlan_mdb_remote_srcs_replace(cfg, mdb_entry, remote, extack); in vxlan_mdb_remote_replace()
1106 WRITE_ONCE(remote->flags, cfg->flags); in vxlan_mdb_remote_replace()
1107 WRITE_ONCE(remote->filter_mode, cfg->filter_mode); in vxlan_mdb_remote_replace()
1108 remote->rt_protocol = cfg->rt_protocol; in vxlan_mdb_remote_replace()
1109 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_NEWMDB); in vxlan_mdb_remote_replace()
1116 rcu_assign_pointer(remote->rd, old_rd); in vxlan_mdb_remote_replace()
1125 struct vxlan_mdb_remote *remote; in vxlan_mdb_remote_add() local
1128 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip); in vxlan_mdb_remote_add()
1129 if (remote) { in vxlan_mdb_remote_add()
1131 NL_SET_ERR_MSG_MOD(extack, "Replace not specified and MDB remote entry already exists"); in vxlan_mdb_remote_add()
1134 return vxlan_mdb_remote_replace(cfg, mdb_entry, remote, extack); in vxlan_mdb_remote_add()
1142 remote = kzalloc(sizeof(*remote), GFP_KERNEL); in vxlan_mdb_remote_add()
1143 if (!remote) in vxlan_mdb_remote_add()
1146 err = vxlan_mdb_remote_init(cfg, remote); in vxlan_mdb_remote_add()
1148 NL_SET_ERR_MSG_MOD(extack, "Failed to initialize remote MDB entry"); in vxlan_mdb_remote_add()
1152 err = vxlan_mdb_remote_srcs_add(cfg, 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()
1162 vxlan_mdb_remote_fini(cfg->vxlan, remote); in vxlan_mdb_remote_add()
1164 kfree(remote); in vxlan_mdb_remote_add()
1170 struct vxlan_mdb_remote *remote) in vxlan_mdb_remote_del() argument
1172 vxlan_mdb_remote_notify(vxlan, mdb_entry, remote, RTM_DELMDB); in vxlan_mdb_remote_del()
1173 list_del_rcu(&remote->list); in vxlan_mdb_remote_del()
1174 vxlan_mdb_remote_srcs_del(vxlan, &mdb_entry->key, remote); in vxlan_mdb_remote_del()
1175 vxlan_mdb_remote_fini(vxlan, remote); in vxlan_mdb_remote_del()
1176 kfree_rcu(remote, rcu); in vxlan_mdb_remote_del()
1259 struct vxlan_mdb_remote *remote; in __vxlan_mdb_del() local
1267 remote = vxlan_mdb_remote_lookup(mdb_entry, &cfg->remote_ip); in __vxlan_mdb_del()
1268 if (!remote) { in __vxlan_mdb_del()
1269 NL_SET_ERR_MSG_MOD(extack, "Did not find MDB remote entry"); in __vxlan_mdb_del()
1273 vxlan_mdb_remote_del(vxlan, mdb_entry, remote); in __vxlan_mdb_del()
1391 struct vxlan_mdb_remote *remote, *tmp; in vxlan_mdb_remotes_flush() local
1393 list_for_each_entry_safe(remote, tmp, &mdb_entry->remotes, list) { in vxlan_mdb_remotes_flush()
1394 struct vxlan_rdst *rd = rtnl_dereference(remote->rd); in vxlan_mdb_remotes_flush()
1401 /* Encapsulation is performed with source VNI if remote VNI in vxlan_mdb_remotes_flush()
1412 desc->rt_protocol != remote->rt_protocol) in vxlan_mdb_remotes_flush()
1415 vxlan_mdb_remote_del(vxlan, mdb_entry, remote); in vxlan_mdb_remotes_flush()
1504 struct vxlan_mdb_remote *remote; in vxlan_mdb_get_reply_alloc() local
1513 list_for_each_entry(remote, &mdb_entry->remotes, list) in vxlan_mdb_get_reply_alloc()
1515 remote); in vxlan_mdb_get_reply_alloc()
1527 struct vxlan_mdb_remote *remote; in vxlan_mdb_get_reply_fill() local
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()
1689 struct vxlan_mdb_remote *remote, *fremote = NULL; in vxlan_mdb_xmit() local
1692 list_for_each_entry_rcu(remote, &mdb_entry->remotes, list) { in vxlan_mdb_xmit()
1696 READ_ONCE(remote->filter_mode) == MCAST_INCLUDE) || in vxlan_mdb_xmit()
1697 (READ_ONCE(remote->flags) & VXLAN_MDB_REMOTE_F_BLOCKED)) in vxlan_mdb_xmit()
1701 fremote = remote; in vxlan_mdb_xmit()
1708 rcu_dereference(remote->rd), false); in vxlan_mdb_xmit()