Lines Matching refs:ipvlan
5 #include "ipvlan.h"
10 struct ipvl_dev *ipvlan;
16 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
17 flags = ipvlan->dev->flags;
19 err = dev_change_flags(ipvlan->dev,
23 err = dev_change_flags(ipvlan->dev,
45 list_for_each_entry_continue_reverse(ipvlan, &port->ipvlans, pnode) {
46 flags = ipvlan->dev->flags;
49 dev_change_flags(ipvlan->dev, flags | IFF_NOARP,
52 dev_change_flags(ipvlan->dev, flags & ~IFF_NOARP,
129 struct ipvl_dev *ipvlan = netdev_priv(dev);
130 struct net_device *phy_dev = ipvlan->phy_dev;
147 ipvlan->pcpu_stats = netdev_alloc_pcpu_stats(struct ipvl_pcpu_stats);
148 if (!ipvlan->pcpu_stats)
154 free_percpu(ipvlan->pcpu_stats);
165 struct ipvl_dev *ipvlan = netdev_priv(dev);
166 struct net_device *phy_dev = ipvlan->phy_dev;
169 free_percpu(ipvlan->pcpu_stats);
179 struct ipvl_dev *ipvlan = netdev_priv(dev);
182 if (ipvlan->port->mode == IPVLAN_MODE_L3 ||
183 ipvlan->port->mode == IPVLAN_MODE_L3S)
189 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode)
190 ipvlan_ht_addr_add(ipvlan, addr);
198 struct ipvl_dev *ipvlan = netdev_priv(dev);
199 struct net_device *phy_dev = ipvlan->phy_dev;
206 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode)
216 const struct ipvl_dev *ipvlan = netdev_priv(dev);
224 pcptr = this_cpu_ptr(ipvlan->pcpu_stats);
231 this_cpu_inc(ipvlan->pcpu_stats->tx_drps);
239 struct ipvl_dev *ipvlan = netdev_priv(dev);
242 features &= (ipvlan->sfeatures | ~IPVLAN_FEATURES);
243 features = netdev_increment_features(ipvlan->phy_dev->features,
253 struct ipvl_dev *ipvlan = netdev_priv(dev);
254 struct net_device *phy_dev = ipvlan->phy_dev;
262 struct ipvl_dev *ipvlan = netdev_priv(dev);
265 bitmap_fill(ipvlan->mac_filters, IPVLAN_MAC_FILTER_SIZE);
280 bitmap_copy(ipvlan->mac_filters, mc_filters,
283 dev_uc_sync(ipvlan->phy_dev, dev);
284 dev_mc_sync(ipvlan->phy_dev, dev);
290 struct ipvl_dev *ipvlan = netdev_priv(dev);
292 if (ipvlan->pcpu_stats) {
300 pcptr = per_cpu_ptr(ipvlan->pcpu_stats, idx);
330 struct ipvl_dev *ipvlan = netdev_priv(dev);
331 struct net_device *phy_dev = ipvlan->phy_dev;
339 struct ipvl_dev *ipvlan = netdev_priv(dev);
340 struct net_device *phy_dev = ipvlan->phy_dev;
348 struct ipvl_dev *ipvlan = netdev_priv(dev);
350 return ipvlan->phy_dev->ifindex;
372 const struct ipvl_dev *ipvlan = netdev_priv(dev);
373 struct net_device *phy_dev = ipvlan->phy_dev;
390 static void ipvlan_adjust_mtu(struct ipvl_dev *ipvlan, struct net_device *dev)
392 ipvlan->dev->mtu = dev->mtu;
397 /* both ipvlan and ipvtap devices use the same netdev_ops */
404 const struct ipvl_dev *ipvlan = netdev_priv(dev);
406 return __ethtool_get_link_ksettings(ipvlan->phy_dev, cmd);
418 const struct ipvl_dev *ipvlan = netdev_priv(dev);
420 return ipvlan->msg_enable;
425 struct ipvl_dev *ipvlan = netdev_priv(dev);
427 ipvlan->msg_enable = value;
442 struct ipvl_dev *ipvlan = netdev_priv(dev);
443 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev);
448 if (!ns_capable(dev_net(ipvlan->phy_dev)->user_ns, CAP_NET_ADMIN))
512 struct ipvl_dev *ipvlan = netdev_priv(dev);
513 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev);
535 struct ipvl_dev *ipvlan = netdev_priv(dev);
569 ipvlan->phy_dev = phy_dev;
570 ipvlan->dev = dev;
571 ipvlan->sfeatures = IPVLAN_FEATURES;
573 ipvlan_adjust_mtu(ipvlan, phy_dev);
574 INIT_LIST_HEAD(&ipvlan->addrs);
575 spin_lock_init(&ipvlan->addrs_lock);
591 ipvlan->port = port;
634 list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans);
650 struct ipvl_dev *ipvlan = netdev_priv(dev);
653 spin_lock_bh(&ipvlan->addrs_lock);
654 list_for_each_entry_safe(addr, next, &ipvlan->addrs, anode) {
659 spin_unlock_bh(&ipvlan->addrs_lock);
661 ida_simple_remove(&ipvlan->port->ida, dev->dev_id);
662 list_del_rcu(&ipvlan->pnode);
664 netdev_upper_dev_unlink(ipvlan->phy_dev, dev);
690 struct ipvl_dev *ipvlan = netdev_priv(dev);
692 return dev_net(ipvlan->phy_dev);
696 .kind = "ipvlan",
723 struct ipvl_dev *ipvlan, *next;
735 list_for_each_entry(ipvlan, &port->ipvlans, pnode)
736 netif_stacked_transfer_operstate(ipvlan->phy_dev,
737 ipvlan->dev);
757 list_for_each_entry_safe(ipvlan, next, &port->ipvlans, pnode)
758 ipvlan->dev->rtnl_link_ops->dellink(ipvlan->dev,
764 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
765 ipvlan->dev->gso_max_size = dev->gso_max_size;
766 ipvlan->dev->gso_max_segs = dev->gso_max_segs;
767 netdev_update_features(ipvlan->dev);
772 list_for_each_entry(ipvlan, &port->ipvlans, pnode)
773 ipvlan_adjust_mtu(ipvlan, dev);
778 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
779 err = dev_pre_changeaddr_notify(ipvlan->dev,
788 list_for_each_entry(ipvlan, &port->ipvlans, pnode) {
789 ether_addr_copy(ipvlan->dev->dev_addr, dev->dev_addr);
790 call_netdevice_notifiers(NETDEV_CHANGEADDR, ipvlan->dev);
802 static int ipvlan_add_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6)
810 addr->master = ipvlan;
821 list_add_tail_rcu(&addr->anode, &ipvlan->addrs);
826 if (netif_running(ipvlan->dev))
827 ipvlan_ht_addr_add(ipvlan, addr);
832 static void ipvlan_del_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6)
836 spin_lock_bh(&ipvlan->addrs_lock);
837 addr = ipvlan_find_addr(ipvlan, iaddr, is_v6);
839 spin_unlock_bh(&ipvlan->addrs_lock);
845 spin_unlock_bh(&ipvlan->addrs_lock);
851 struct ipvl_dev *ipvlan = netdev_priv(dev);
856 if (!ipvlan || !ipvlan->port)
863 static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr)
867 spin_lock_bh(&ipvlan->addrs_lock);
868 if (ipvlan_addr_busy(ipvlan->port, ip6_addr, true))
869 netif_err(ipvlan, ifup, ipvlan->dev,
871 ip6_addr, ipvlan->dev->name);
873 ret = ipvlan_add_addr(ipvlan, ip6_addr, true);
874 spin_unlock_bh(&ipvlan->addrs_lock);
878 static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr)
880 return ipvlan_del_addr(ipvlan, ip6_addr, true);
888 struct ipvl_dev *ipvlan = netdev_priv(dev);
895 if (ipvlan_add_addr6(ipvlan, &if6->addr))
900 ipvlan_del_addr6(ipvlan, &if6->addr);
912 struct ipvl_dev *ipvlan = netdev_priv(dev);
919 if (ipvlan_addr_busy(ipvlan->port, &i6vi->i6vi_addr, true)) {
921 "Address already assigned to an ipvlan device");
931 static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr)
935 spin_lock_bh(&ipvlan->addrs_lock);
936 if (ipvlan_addr_busy(ipvlan->port, ip4_addr, false))
937 netif_err(ipvlan, ifup, ipvlan->dev,
939 ip4_addr, ipvlan->dev->name);
941 ret = ipvlan_add_addr(ipvlan, ip4_addr, false);
942 spin_unlock_bh(&ipvlan->addrs_lock);
946 static void ipvlan_del_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr)
948 return ipvlan_del_addr(ipvlan, ip4_addr, false);
956 struct ipvl_dev *ipvlan = netdev_priv(dev);
965 if (ipvlan_add_addr4(ipvlan, &ip4_addr))
971 ipvlan_del_addr4(ipvlan, &ip4_addr);
983 struct ipvl_dev *ipvlan = netdev_priv(dev);
990 if (ipvlan_addr_busy(ipvlan->port, &ivi->ivi_addr, false)) {
992 "Address already assigned to an ipvlan device");
1082 MODULE_ALIAS_RTNL_LINK("ipvlan");