-#ifdef SIOCETHTOOL
- struct ethtool_cmd ecmd;
-
- if (cmd != SIOCETHTOOL)
- return -EOPNOTSUPP;
- if (copy_from_user(&ecmd, ifr->ifr_data, sizeof (ecmd)))
- return -EFAULT;
- switch (ecmd.cmd) {
- case ETHTOOL_GSET:
- ecmd.supported = (SUPPORTED_1000baseT_Full
- | SUPPORTED_Autoneg | SUPPORTED_FIBRE);
- ecmd.advertising = (SUPPORTED_1000baseT_Full
- | SUPPORTED_Autoneg | SUPPORTED_FIBRE);
-
- ecmd.port = PORT_FIBRE;
- ecmd.transceiver = XCVR_INTERNAL;
- ecmd.phy_address = 0;
- ecmd.speed = SPEED_1000;
- ecmd.duplex = DUPLEX_FULL;
- ecmd.autoneg = AUTONEG_ENABLE;
- ecmd.maxtxpkt = 120;
- ecmd.maxrxpkt = 120;
- if (copy_to_user(ifr->ifr_data, &ecmd, sizeof(ecmd)))
- return -EFAULT;
- return 0;
-
- case ETHTOOL_GDRVINFO:{
- struct ethtool_drvinfo info = { ETHTOOL_GDRVINFO };
- strncpy(info.driver, "veth", sizeof(info.driver) - 1);
- info.driver[sizeof(info.driver) - 1] = '\0';
- strncpy(info.version, "1.0", sizeof(info.version) - 1);
- if (copy_to_user(ifr->ifr_data, &info, sizeof(info)))
- return -EFAULT;
- return 0;
- }
- /* get link status */
- case ETHTOOL_GLINK:{
- struct ethtool_value edata = { ETHTOOL_GLINK };
- edata.data = 1;
- if (copy_to_user(ifr->ifr_data, &edata, sizeof(edata)))
- return -EFAULT;
- return 0;
- }
+ strncpy(info->driver, "veth", sizeof(info->driver) - 1);
+ info->driver[sizeof(info->driver) - 1] = '\0';
+ strncpy(info->version, "1.0", sizeof(info->version) - 1);
+}