Lines Matching refs:ipvlan
7 #include "ipvlan.h"
12 struct ipvl_dev *ipvlan;
18 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
19 flags = ipvlan->dev->flags;
21 err = dev_change_flags(ipvlan->dev,
25 err = dev_change_flags(ipvlan->dev,
47 list_for_each_entry_continue_reverse(ipvlan, &port->ipvlans, pnode) {
48 flags = ipvlan->dev->flags;
51 dev_change_flags(ipvlan->dev, flags | IFF_NOARP,
54 dev_change_flags(ipvlan->dev, flags & ~IFF_NOARP,
132 struct ipvl_dev *ipvlan = netdev_priv(dev);
133 struct net_device *phy_dev = ipvlan->phy_dev;
149 ipvlan->pcpu_stats = netdev_alloc_pcpu_stats(struct ipvl_pcpu_stats);
150 if (!ipvlan->pcpu_stats)
156 free_percpu(ipvlan->pcpu_stats);
167 struct ipvl_dev *ipvlan = netdev_priv(dev);
168 struct net_device *phy_dev = ipvlan->phy_dev;
171 free_percpu(ipvlan->pcpu_stats);
181 struct ipvl_dev *ipvlan = netdev_priv(dev);
184 if (ipvlan->port->mode == IPVLAN_MODE_L3 ||
185 ipvlan->port->mode == IPVLAN_MODE_L3S)
191 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode)
192 ipvlan_ht_addr_add(ipvlan, addr);
200 struct ipvl_dev *ipvlan = netdev_priv(dev);
201 struct net_device *phy_dev = ipvlan->phy_dev;
208 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode)
218 const struct ipvl_dev *ipvlan = netdev_priv(dev);
226 pcptr = this_cpu_ptr(ipvlan->pcpu_stats);
233 this_cpu_inc(ipvlan->pcpu_stats->tx_drps);
241 struct ipvl_dev *ipvlan = netdev_priv(dev);
244 features &= (ipvlan->sfeatures | ~IPVLAN_FEATURES);
245 features = netdev_increment_features(ipvlan->phy_dev->features,
255 struct ipvl_dev *ipvlan = netdev_priv(dev);
256 struct net_device *phy_dev = ipvlan->phy_dev;
264 struct ipvl_dev *ipvlan = netdev_priv(dev);
267 bitmap_fill(ipvlan->mac_filters, IPVLAN_MAC_FILTER_SIZE);
282 bitmap_copy(ipvlan->mac_filters, mc_filters,
285 dev_uc_sync(ipvlan->phy_dev, dev);
286 dev_mc_sync(ipvlan->phy_dev, dev);
292 struct ipvl_dev *ipvlan = netdev_priv(dev);
294 if (ipvlan->pcpu_stats) {
302 pcptr = per_cpu_ptr(ipvlan->pcpu_stats, idx);
332 struct ipvl_dev *ipvlan = netdev_priv(dev);
333 struct net_device *phy_dev = ipvlan->phy_dev;
341 struct ipvl_dev *ipvlan = netdev_priv(dev);
342 struct net_device *phy_dev = ipvlan->phy_dev;
350 struct ipvl_dev *ipvlan = netdev_priv(dev);
352 return ipvlan->phy_dev->ifindex;
374 const struct ipvl_dev *ipvlan = netdev_priv(dev);
375 struct net_device *phy_dev = ipvlan->phy_dev;
392 static void ipvlan_adjust_mtu(struct ipvl_dev *ipvlan, struct net_device *dev)
394 ipvlan->dev->mtu = dev->mtu;
399 /* both ipvlan and ipvtap devices use the same netdev_ops */
406 const struct ipvl_dev *ipvlan = netdev_priv(dev);
408 return __ethtool_get_link_ksettings(ipvlan->phy_dev, cmd);
420 const struct ipvl_dev *ipvlan = netdev_priv(dev);
422 return ipvlan->msg_enable;
427 struct ipvl_dev *ipvlan = netdev_priv(dev);
429 ipvlan->msg_enable = value;
444 struct ipvl_dev *ipvlan = netdev_priv(dev);
445 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev);
450 if (!ns_capable(dev_net(ipvlan->phy_dev)->user_ns, CAP_NET_ADMIN))
514 struct ipvl_dev *ipvlan = netdev_priv(dev);
515 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev);
537 struct ipvl_dev *ipvlan = netdev_priv(dev);
571 ipvlan->phy_dev = phy_dev;
572 ipvlan->dev = dev;
573 ipvlan->sfeatures = IPVLAN_FEATURES;
575 ipvlan_adjust_mtu(ipvlan, phy_dev);
576 INIT_LIST_HEAD(&ipvlan->addrs);
577 spin_lock_init(&ipvlan->addrs_lock);
593 ipvlan->port = port;
636 list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans);
652 struct ipvl_dev *ipvlan = netdev_priv(dev);
655 spin_lock_bh(&ipvlan->addrs_lock);
656 list_for_each_entry_safe(addr, next, &ipvlan->addrs, anode) {
661 spin_unlock_bh(&ipvlan->addrs_lock);
663 ida_simple_remove(&ipvlan->port->ida, dev->dev_id);
664 list_del_rcu(&ipvlan->pnode);
666 netdev_upper_dev_unlink(ipvlan->phy_dev, dev);
692 struct ipvl_dev *ipvlan = netdev_priv(dev);
694 return dev_net(ipvlan->phy_dev);
698 .kind = "ipvlan",
725 struct ipvl_dev *ipvlan, *next;
738 list_for_each_entry(ipvlan, &port->ipvlans, pnode)
739 netif_stacked_transfer_operstate(ipvlan->phy_dev,
740 ipvlan->dev);
760 list_for_each_entry_safe(ipvlan, next, &port->ipvlans, pnode)
761 ipvlan->dev->rtnl_link_ops->dellink(ipvlan->dev,
767 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
768 netif_inherit_tso_max(ipvlan->dev, dev);
769 netdev_update_features(ipvlan->dev);
774 list_for_each_entry(ipvlan, &port->ipvlans, pnode)
775 ipvlan_adjust_mtu(ipvlan, dev);
780 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
781 err = dev_pre_changeaddr_notify(ipvlan->dev,
790 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
791 eth_hw_addr_set(ipvlan->dev, dev->dev_addr);
792 call_netdevice_notifiers(NETDEV_CHANGEADDR, ipvlan->dev);
804 static int ipvlan_add_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6)
812 addr->master = ipvlan;
823 list_add_tail_rcu(&addr->anode, &ipvlan->addrs);
828 if (netif_running(ipvlan->dev))
829 ipvlan_ht_addr_add(ipvlan, addr);
834 static void ipvlan_del_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6)
838 spin_lock_bh(&ipvlan->addrs_lock);
839 addr = ipvlan_find_addr(ipvlan, iaddr, is_v6);
841 spin_unlock_bh(&ipvlan->addrs_lock);
847 spin_unlock_bh(&ipvlan->addrs_lock);
853 struct ipvl_dev *ipvlan = netdev_priv(dev);
858 if (!ipvlan || !ipvlan->port)
865 static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr)
869 spin_lock_bh(&ipvlan->addrs_lock);
870 if (ipvlan_addr_busy(ipvlan->port, ip6_addr, true))
871 netif_err(ipvlan, ifup, ipvlan->dev,
873 ip6_addr, ipvlan->dev->name);
875 ret = ipvlan_add_addr(ipvlan, ip6_addr, true);
876 spin_unlock_bh(&ipvlan->addrs_lock);
880 static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr)
882 return ipvlan_del_addr(ipvlan, ip6_addr, true);
890 struct ipvl_dev *ipvlan = netdev_priv(dev);
897 if (ipvlan_add_addr6(ipvlan, &if6->addr))
902 ipvlan_del_addr6(ipvlan, &if6->addr);
914 struct ipvl_dev *ipvlan = netdev_priv(dev);
921 if (ipvlan_addr_busy(ipvlan->port, &i6vi->i6vi_addr, true)) {
923 "Address already assigned to an ipvlan device");
933 static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr)
937 spin_lock_bh(&ipvlan->addrs_lock);
938 if (ipvlan_addr_busy(ipvlan->port, ip4_addr, false))
939 netif_err(ipvlan, ifup, ipvlan->dev,
941 ip4_addr, ipvlan->dev->name);
943 ret = ipvlan_add_addr(ipvlan, ip4_addr, false);
944 spin_unlock_bh(&ipvlan->addrs_lock);
948 static void ipvlan_del_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr)
950 return ipvlan_del_addr(ipvlan, ip4_addr, false);
958 struct ipvl_dev *ipvlan = netdev_priv(dev);
967 if (ipvlan_add_addr4(ipvlan, &ip4_addr))
973 ipvlan_del_addr4(ipvlan, &ip4_addr);
985 struct ipvl_dev *ipvlan = netdev_priv(dev);
992 if (ipvlan_addr_busy(ipvlan->port, &ivi->ivi_addr, false)) {
994 "Address already assigned to an ipvlan device");
1084 MODULE_ALIAS_RTNL_LINK("ipvlan");