Lines Matching refs:entry
166 struct br_mdb_entry *entry, u32 pid, in nlmsg_populate_mdb_fill() argument
188 if (nla_put(skb, MDBA_MDB_ENTRY_INFO, sizeof(*entry), entry)) in nlmsg_populate_mdb_fill()
209 static void __br_mdb_notify(struct net_device *dev, struct br_mdb_entry *entry, in __br_mdb_notify() argument
220 err = nlmsg_populate_mdb_fill(skb, dev, entry, 0, 0, type, NTF_SELF); in __br_mdb_notify()
235 struct br_mdb_entry entry; in br_mdb_notify() local
237 memset(&entry, 0, sizeof(entry)); in br_mdb_notify()
238 entry.ifindex = port->dev->ifindex; in br_mdb_notify()
239 entry.addr.proto = group->proto; in br_mdb_notify()
240 entry.addr.u.ip4 = group->u.ip4; in br_mdb_notify()
242 entry.addr.u.ip6 = group->u.ip6; in br_mdb_notify()
244 __br_mdb_notify(dev, &entry, type); in br_mdb_notify()
247 static bool is_valid_mdb_entry(struct br_mdb_entry *entry) in is_valid_mdb_entry() argument
249 if (entry->ifindex == 0) in is_valid_mdb_entry()
252 if (entry->addr.proto == htons(ETH_P_IP)) { in is_valid_mdb_entry()
253 if (!ipv4_is_multicast(entry->addr.u.ip4)) in is_valid_mdb_entry()
255 if (ipv4_is_local_multicast(entry->addr.u.ip4)) in is_valid_mdb_entry()
258 } else if (entry->addr.proto == htons(ETH_P_IPV6)) { in is_valid_mdb_entry()
259 if (ipv6_addr_is_ll_all_nodes(&entry->addr.u.ip6)) in is_valid_mdb_entry()
264 if (entry->state != MDB_PERMANENT && entry->state != MDB_TEMPORARY) in is_valid_mdb_entry()
274 struct br_mdb_entry *entry; in br_mdb_parse() local
309 entry = nla_data(tb[MDBA_SET_ENTRY]); in br_mdb_parse()
310 if (!is_valid_mdb_entry(entry)) { in br_mdb_parse()
315 *pentry = entry; in br_mdb_parse()
355 struct br_mdb_entry *entry) in __br_mdb_add() argument
365 dev = __dev_get_by_index(net, entry->ifindex); in __br_mdb_add()
374 ip.proto = entry->addr.proto; in __br_mdb_add()
376 ip.u.ip4 = entry->addr.u.ip4; in __br_mdb_add()
379 ip.u.ip6 = entry->addr.u.ip6; in __br_mdb_add()
383 ret = br_mdb_add_group(br, p, &ip, entry->state); in __br_mdb_add()
391 struct br_mdb_entry *entry; in br_mdb_add() local
396 err = br_mdb_parse(skb, nlh, &dev, &entry); in br_mdb_add()
402 err = __br_mdb_add(net, br, entry); in br_mdb_add()
404 __br_mdb_notify(dev, entry, RTM_NEWMDB); in br_mdb_add()
408 static int __br_mdb_del(struct net_bridge *br, struct br_mdb_entry *entry) in __br_mdb_del() argument
421 ip.proto = entry->addr.proto; in __br_mdb_del()
426 ip.u.ip4 = entry->addr.u.ip4; in __br_mdb_del()
432 ip.u.ip6 = entry->addr.u.ip6; in __br_mdb_del()
446 if (!p->port || p->port->dev->ifindex != entry->ifindex) in __br_mdb_del()
472 struct br_mdb_entry *entry; in br_mdb_del() local
476 err = br_mdb_parse(skb, nlh, &dev, &entry); in br_mdb_del()
482 err = __br_mdb_del(br, entry); in br_mdb_del()
484 __br_mdb_notify(dev, entry, RTM_DELMDB); in br_mdb_del()