Lines Matching refs:entry

71 static void __mdb_entry_to_br_ip(struct br_mdb_entry *entry, struct br_ip *ip,
75 ip->vid = entry->vid;
76 ip->proto = entry->addr.proto;
79 ip->dst.ip4 = entry->addr.u.ip4;
85 ip->dst.ip6 = entry->addr.u.ip6;
672 static bool is_valid_mdb_entry(struct br_mdb_entry *entry,
675 if (entry->ifindex == 0) {
676 NL_SET_ERR_MSG_MOD(extack, "Zero entry ifindex is not allowed");
680 if (entry->addr.proto == htons(ETH_P_IP)) {
681 if (!ipv4_is_multicast(entry->addr.u.ip4)) {
682 NL_SET_ERR_MSG_MOD(extack, "IPv4 entry group address is not multicast");
685 if (ipv4_is_local_multicast(entry->addr.u.ip4)) {
686 NL_SET_ERR_MSG_MOD(extack, "IPv4 entry group address is local multicast");
690 } else if (entry->addr.proto == htons(ETH_P_IPV6)) {
691 if (ipv6_addr_is_ll_all_nodes(&entry->addr.u.ip6)) {
692 NL_SET_ERR_MSG_MOD(extack, "IPv6 entry group address is link-local all nodes");
697 NL_SET_ERR_MSG_MOD(extack, "Unknown entry protocol");
701 if (entry->state != MDB_PERMANENT && entry->state != MDB_TEMPORARY) {
702 NL_SET_ERR_MSG_MOD(extack, "Unknown entry state");
705 if (entry->vid >= VLAN_VID_MASK) {
706 NL_SET_ERR_MSG_MOD(extack, "Invalid entry VLAN id");
762 struct br_mdb_entry *entry;
801 entry = nla_data(tb[MDBA_SET_ENTRY]);
802 if (!is_valid_mdb_entry(entry, extack))
804 *pentry = entry;
814 entry->addr.proto, extack))
825 struct br_mdb_entry *entry,
837 __mdb_entry_to_br_ip(entry, &group, mdb_attrs);
842 if (entry->state) {
887 p = br_multicast_new_port_group(port, &group, *pp, entry->state, NULL,
894 if (entry->state == MDB_TEMPORARY)
922 struct br_mdb_entry *entry,
929 ret = br_mdb_add_group(br, p, entry, mdb_attrs, extack);
943 struct br_mdb_entry *entry;
948 err = br_mdb_parse(skb, nlh, &dev, &entry, mdb_attrs, extack);
964 if (entry->ifindex != br->dev->ifindex) {
965 pdev = __dev_get_by_index(net, entry->ifindex);
991 * install mdb entry on all vlans configured on the port.
993 if (br_vlan_enabled(br->dev) && vg && entry->vid == 0) {
995 entry->vid = v->vid;
996 err = __br_mdb_add(net, br, p, entry, mdb_attrs, extack);
1001 err = __br_mdb_add(net, br, p, entry, mdb_attrs, extack);
1007 static int __br_mdb_del(struct net_bridge *br, struct br_mdb_entry *entry,
1019 __mdb_entry_to_br_ip(entry, &ip, mdb_attrs);
1027 if (entry->ifindex == mp->br->dev->ifindex && mp->host_joined) {
1039 if (!p->key.port || p->key.port->dev->ifindex != entry->ifindex)
1063 struct br_mdb_entry *entry;
1068 err = br_mdb_parse(skb, nlh, &dev, &entry, mdb_attrs, extack);
1074 if (entry->ifindex != br->dev->ifindex) {
1075 pdev = __dev_get_by_index(net, entry->ifindex);
1088 * delete mdb entry on all vlans configured on the port.
1090 if (br_vlan_enabled(br->dev) && vg && entry->vid == 0) {
1092 entry->vid = v->vid;
1093 err = __br_mdb_del(br, entry, mdb_attrs);
1096 err = __br_mdb_del(br, entry, mdb_attrs);