Lines Matching refs:entry

167 				   struct br_mdb_entry *entry, u32 pid,  in nlmsg_populate_mdb_fill()  argument
189 if (nla_put(skb, MDBA_MDB_ENTRY_INFO, sizeof(*entry), entry)) in nlmsg_populate_mdb_fill()
210 static void __br_mdb_notify(struct net_device *dev, struct br_mdb_entry *entry, in __br_mdb_notify() argument
221 err = nlmsg_populate_mdb_fill(skb, dev, entry, 0, 0, type, NTF_SELF); in __br_mdb_notify()
236 struct br_mdb_entry entry; in br_mdb_notify() local
238 memset(&entry, 0, sizeof(entry)); in br_mdb_notify()
239 entry.ifindex = port->dev->ifindex; in br_mdb_notify()
240 entry.addr.proto = group->proto; in br_mdb_notify()
241 entry.addr.u.ip4 = group->u.ip4; in br_mdb_notify()
243 entry.addr.u.ip6 = group->u.ip6; in br_mdb_notify()
245 entry.state = state; in br_mdb_notify()
246 entry.vid = group->vid; in br_mdb_notify()
247 __br_mdb_notify(dev, &entry, type); in br_mdb_notify()
317 static bool is_valid_mdb_entry(struct br_mdb_entry *entry) in is_valid_mdb_entry() argument
319 if (entry->ifindex == 0) in is_valid_mdb_entry()
322 if (entry->addr.proto == htons(ETH_P_IP)) { in is_valid_mdb_entry()
323 if (!ipv4_is_multicast(entry->addr.u.ip4)) in is_valid_mdb_entry()
325 if (ipv4_is_local_multicast(entry->addr.u.ip4)) in is_valid_mdb_entry()
328 } else if (entry->addr.proto == htons(ETH_P_IPV6)) { in is_valid_mdb_entry()
329 if (ipv6_addr_is_ll_all_nodes(&entry->addr.u.ip6)) in is_valid_mdb_entry()
334 if (entry->state != MDB_PERMANENT && entry->state != MDB_TEMPORARY) in is_valid_mdb_entry()
336 if (entry->vid >= VLAN_VID_MASK) in is_valid_mdb_entry()
346 struct br_mdb_entry *entry; in br_mdb_parse() local
381 entry = nla_data(tb[MDBA_SET_ENTRY]); in br_mdb_parse()
382 if (!is_valid_mdb_entry(entry)) { in br_mdb_parse()
387 *pentry = entry; in br_mdb_parse()
430 struct br_mdb_entry *entry) in __br_mdb_add() argument
440 dev = __dev_get_by_index(net, entry->ifindex); in __br_mdb_add()
449 ip.vid = entry->vid; in __br_mdb_add()
450 ip.proto = entry->addr.proto; in __br_mdb_add()
452 ip.u.ip4 = entry->addr.u.ip4; in __br_mdb_add()
455 ip.u.ip6 = entry->addr.u.ip6; in __br_mdb_add()
459 ret = br_mdb_add_group(br, p, &ip, entry->state); in __br_mdb_add()
469 struct br_mdb_entry *entry; in br_mdb_add() local
475 err = br_mdb_parse(skb, nlh, &dev, &entry); in br_mdb_add()
484 pdev = __dev_get_by_index(net, entry->ifindex); in br_mdb_add()
493 if (br_vlan_enabled(br) && vg && entry->vid == 0) { in br_mdb_add()
495 entry->vid = v->vid; in br_mdb_add()
496 err = __br_mdb_add(net, br, entry); in br_mdb_add()
499 __br_mdb_notify(dev, entry, RTM_NEWMDB); in br_mdb_add()
502 err = __br_mdb_add(net, br, entry); in br_mdb_add()
504 __br_mdb_notify(dev, entry, RTM_NEWMDB); in br_mdb_add()
510 static int __br_mdb_del(struct net_bridge *br, struct br_mdb_entry *entry) in __br_mdb_del() argument
523 ip.vid = entry->vid; in __br_mdb_del()
524 ip.proto = entry->addr.proto; in __br_mdb_del()
526 ip.u.ip4 = entry->addr.u.ip4; in __br_mdb_del()
529 ip.u.ip6 = entry->addr.u.ip6; in __br_mdb_del()
542 if (!p->port || p->port->dev->ifindex != entry->ifindex) in __br_mdb_del()
548 entry->state = p->state; in __br_mdb_del()
571 struct br_mdb_entry *entry; in br_mdb_del() local
577 err = br_mdb_parse(skb, nlh, &dev, &entry); in br_mdb_del()
586 pdev = __dev_get_by_index(net, entry->ifindex); in br_mdb_del()
595 if (br_vlan_enabled(br) && vg && entry->vid == 0) { in br_mdb_del()
597 entry->vid = v->vid; in br_mdb_del()
598 err = __br_mdb_del(br, entry); in br_mdb_del()
600 __br_mdb_notify(dev, entry, RTM_DELMDB); in br_mdb_del()
603 err = __br_mdb_del(br, entry); in br_mdb_del()
605 __br_mdb_notify(dev, entry, RTM_DELMDB); in br_mdb_del()