free_netdev(dev);
 }
 
+static const struct net_device_ops veth_netdev_ops = {
+       .ndo_init       = veth_dev_init,
+       .ndo_open       = veth_open,
+       .ndo_get_stats  = veth_get_stats,
+};
+
 static void veth_setup(struct net_device *dev)
 {
        ether_setup(dev);
 
+       dev->netdev_ops = &veth_netdev_ops;
        dev->hard_start_xmit = veth_xmit;
-       dev->get_stats = veth_get_stats;
-       dev->open = veth_open;
        dev->ethtool_ops = &veth_ethtool_ops;
        dev->features |= NETIF_F_LLTX;
-       dev->init = veth_dev_init;
        dev->destructor = veth_dev_free;
 }
 
 {
        struct net_device *dev = ptr;
 
-       if (dev->open != veth_open)
+       if (dev->netdev_ops->ndo_open != veth_open)
                goto out;
 
        switch (event) {