From patchwork Mon Nov 17 23:42:25 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: stephen hemminger X-Patchwork-Id: 9295 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 58DE1DDED8 for ; Tue, 18 Nov 2008 11:01:32 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752340AbYKRAB0 (ORCPT ); Mon, 17 Nov 2008 19:01:26 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752398AbYKRABW (ORCPT ); Mon, 17 Nov 2008 19:01:22 -0500 Received: from suva.vyatta.com ([76.74.103.44]:55085 "EHLO suva.vyatta.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752207AbYKRAAL (ORCPT ); Mon, 17 Nov 2008 19:00:11 -0500 Received: from suva.vyatta.com (suva [127.0.0.1]) by suva.vyatta.com (8.13.7/8.13.7) with ESMTP id mAI009HV018173; Mon, 17 Nov 2008 16:00:09 -0800 Received: (from shemminger@localhost) by suva.vyatta.com (8.13.7/8.13.7/Submit) id mAI008RI018172; Mon, 17 Nov 2008 16:00:08 -0800 Message-Id: <20081117234356.327503270@vyatta.com> References: <20081117234207.854110282@vyatta.com> User-Agent: quilt/0.46-1 Date: Mon, 17 Nov 2008 15:42:25 -0800 From: Stephen Hemminger To: David Miller Cc: netdev@vger.kernel.org Subject: [PATCH 18/33] tun: convert to net_device_ops Content-Disposition: inline; filename=tun-netdev_ops.patch Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Convert the TUN/TAP tunnel driver to net_device_ops. Split the ops in two, and retain compatability. Signed-off-by: Stephen Hemminger --- a/drivers/net/tun.c 2008-11-17 14:03:49.000000000 -0800 +++ b/drivers/net/tun.c 2008-11-17 14:43:57.000000000 -0800 @@ -305,6 +305,22 @@ tun_net_change_mtu(struct net_device *de return 0; } +static const struct net_device_ops tun_netdev_ops = { + .open = tun_net_open, + .stop = tun_net_close, + .change_mtu = tun_net_change_mtu, + +}; + +static const struct net_device_ops tap_netdev_ops = { + .open = tun_net_open, + .stop = tun_net_close, + .change_mtu = tun_net_change_mtu, + .set_multicast_list = tun_net_mclist, + .set_mac_address = eth_mac_addr, + .validate_addr = eth_validate_addr, +}; + /* Initialize net device. */ static void tun_net_init(struct net_device *dev) { @@ -312,11 +328,12 @@ static void tun_net_init(struct net_devi switch (tun->flags & TUN_TYPE_MASK) { case TUN_TUN_DEV: + dev->netdev_ops = &tun_netdev_ops; + /* Point-to-Point TUN Device */ dev->hard_header_len = 0; dev->addr_len = 0; dev->mtu = 1500; - dev->change_mtu = tun_net_change_mtu; /* Zero header length */ dev->type = ARPHRD_NONE; @@ -325,10 +342,9 @@ static void tun_net_init(struct net_devi break; case TUN_TAP_DEV: + dev->netdev_ops = &tun_netdev_ops; /* Ethernet TAP Device */ ether_setup(dev); - dev->change_mtu = tun_net_change_mtu; - dev->set_multicast_list = tun_net_mclist; random_ether_addr(dev->dev_addr); @@ -675,9 +691,7 @@ static void tun_setup(struct net_device tun->owner = -1; tun->group = -1; - dev->open = tun_net_open; dev->hard_start_xmit = tun_net_xmit; - dev->stop = tun_net_close; dev->ethtool_ops = &tun_ethtool_ops; dev->destructor = free_netdev; dev->features |= NETIF_F_NETNS_LOCAL; @@ -749,6 +763,7 @@ static int tun_set_iff(struct net *net, return -ENOMEM; dev_net_set(dev, net); + tun = netdev_priv(dev); tun->dev = dev; tun->flags = flags;