parent
5066cc88c8
commit
724487e8ec
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,3 +1 @@
|
||||
ether-wake.8
|
||||
ipmaddr.8
|
||||
iptunnel.8
|
||||
net-tools-1.60.tar.bz2
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH ETHERWAKE 8 "March 31, 2003" "Scyld"
|
||||
.TH ETHER-WAKE 8 "March 31, 2003" "Scyld"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -16,9 +16,9 @@
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
etherwake \- A tool to send a Wake-On-LAN "Magic Packet"
|
||||
ether-wake \- A tool to send a Wake-On-LAN "Magic Packet"
|
||||
.SH SYNOPSIS
|
||||
.B etherwake
|
||||
.B ether-wake
|
||||
.RI [ options ] " Host-ID"
|
||||
.SH DESCRIPTION
|
||||
This manual page documents the usage of the
|
||||
@ -28,7 +28,7 @@ command.
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||
.\" respectively.
|
||||
\fBetherwake\fP is a program that generates and transmits a Wake-On-LAN
|
||||
\fBether-wake\fP is a program that generates and transmits a Wake-On-LAN
|
||||
(WOL) "Magic Packet", used for restarting machines that have been
|
||||
soft-powered-down (ACPI D3-warm state). It generates the standard
|
||||
AMD Magic Packet format, optionally with a password included. The
|
||||
@ -39,7 +39,7 @@ database specified in
|
||||
.BR nsswitch.conf (5)
|
||||
.
|
||||
.SH OPTIONS
|
||||
\fBetherwake\fP needs a single dash (´-´) in front of options.
|
||||
\fBether-wake\fP needs a single dash (´-´) in front of options.
|
||||
A summary of options is included below.
|
||||
.TP
|
||||
.B \-b
|
34
ipmaddr.8
Normal file
34
ipmaddr.8
Normal file
@ -0,0 +1,34 @@
|
||||
.\" Process this file with
|
||||
.\" groff -man -Tascii iptstate.8
|
||||
.\"
|
||||
.TH IPMADDR 8 "SEPTEMBER 2009" "" ""
|
||||
.\"
|
||||
.\" Man page written by Jiri Popelka <jpopelka AT redhat DOT com>
|
||||
.\"
|
||||
.SH NAME
|
||||
.B ipmaddr
|
||||
\- adds, deletes, and displays multicast addresses
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B /usr/sbin/ipmaddr
|
||||
.RB [< operation >]
|
||||
.RB [< args >]
|
||||
|
||||
.SH NOTE
|
||||
.P
|
||||
This program is obsolete. For replacement check \fBip maddress\fR.
|
||||
|
||||
.SH DESCRIPTION
|
||||
The \fBipmaddr\fR command can perform one of the following operations:
|
||||
|
||||
.B add
|
||||
\- add a multicast address
|
||||
|
||||
.B del
|
||||
- delete a multicast address
|
||||
|
||||
.B show
|
||||
- list multicast addresses
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR ip (8).
|
42
iptunnel.8
Normal file
42
iptunnel.8
Normal file
@ -0,0 +1,42 @@
|
||||
.\" Process this file with
|
||||
.\" groff -man -Tascii iptstate.8
|
||||
.\"
|
||||
.TH IPTUNNEL 8 "SEPTEMBER 2009" "" ""
|
||||
.\"
|
||||
.\" Man page written by Jiri Popelka <jpopelka AT redhat DOT com>
|
||||
.\"
|
||||
.SH NAME
|
||||
|
||||
.B iptunnel
|
||||
\- creates, deletes, and displays configured tunnels
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B /usr/sbin/iptunnel
|
||||
.RB [< operation >]
|
||||
.RB [< args >]
|
||||
|
||||
.SH NOTE
|
||||
.P
|
||||
This program is obsolete. For replacement check \fBip tunnel\fR.
|
||||
|
||||
.SH DESCRIPTION
|
||||
The \fBiptunnel\fR
|
||||
command creates configured tunnels for sending and receiving
|
||||
IPV6 or IPV4 packets that are encapsulated as the payload of an IPV4
|
||||
datagram.
|
||||
|
||||
The
|
||||
.B iptunnel
|
||||
command can perform one of the following operations:
|
||||
|
||||
.B create
|
||||
\- create a tunnel interface, which you must subsequently configure.
|
||||
|
||||
.B delete
|
||||
\- delete a tunnel interface. You must disable the tunnel before you can delete it.
|
||||
|
||||
.B show
|
||||
\- show the tunnel attributes (name, tunnel end points, next hop for tunneled packets).
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR ip (8).
|
160
mii-diag.8
Normal file
160
mii-diag.8
Normal file
@ -0,0 +1,160 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.\" $Revision: 1.1 $ $Date: 2003/09/06 17:20:17 $
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH MII-DIAG 8 "September 9, 2003" "Scyld Beowulf\*(Tm"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
.\" .nh disable hyphenation
|
||||
.\" .hy enable hyphenation
|
||||
.\" .ad l left justify
|
||||
.\" .ad b justify to both left and right margins
|
||||
.\" .nf disable filling
|
||||
.\" .fi enable filling
|
||||
.\" .br insert line break
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
mii-diag \- Network adapter control and monitoring
|
||||
.SH SYNOPSIS
|
||||
.B mii-diag
|
||||
.RI [ options ] <interface>
|
||||
.SH DESCRIPTION
|
||||
This manual page documents briefly the
|
||||
.B mii-diag
|
||||
network adapter control and monitoring command.
|
||||
Addition documentation is available from http://scyld.com/diag/index.html.
|
||||
|
||||
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||
.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
|
||||
.\" respectively.
|
||||
.PP
|
||||
This \fBmii-diag\fP command configures, controls and monitors the
|
||||
transceiver management registers for network interfaces, and configures
|
||||
driver operational parameters. For transceiver control \fBmii-diag\fP
|
||||
uses the Media Independent Interface (MII) standard (thus the command name).
|
||||
It also has additional Linux-specific controls to communicate parameters
|
||||
such as message enable settings and buffer sizes to the underlying device
|
||||
driver.
|
||||
.PP
|
||||
The MII standard defines registers that control and report network
|
||||
transceiver capabilities, link settings and errors. Examples are link
|
||||
speed, duplex, capabilities advertised to the link partner, status LED
|
||||
indications and link error counters.
|
||||
|
||||
.SH OPTIONS
|
||||
The \fBmii-diag\fP command supports both single character and long
|
||||
option names. Short options use a single dash (´-´) in front of the option
|
||||
character. For options without parameters, multiple options may be
|
||||
concatenated after a single dash. Long options are prefixed by two
|
||||
dashes (´--´), and may be abbreviated with a unique prefix.
|
||||
A long option may take a parameter of the form --arg=param or --arg param.
|
||||
|
||||
.PP
|
||||
A summary of options is as follows.
|
||||
|
||||
.TP
|
||||
.B \-A, --advertise <speed|setting>
|
||||
.BR
|
||||
.B \-F, --fixed-speed <speed|setting>
|
||||
|
||||
Speed is one of: 100baseT4, 100baseTx, 100baseTx-FD, 100baseTx-HD, 10baseT,
|
||||
10baseT-FD, 10baseT-HD. For more precise control an explicit numeric
|
||||
register setting is also allowed.
|
||||
|
||||
|
||||
.TP
|
||||
.B \-a, \--all-interfaces
|
||||
Show the status of all interfaces. This option is not recommended with
|
||||
any other option, especially ones that change settings.
|
||||
|
||||
.TP
|
||||
.B \-s,\--status
|
||||
Return exit status 2 if there is no link beat.
|
||||
|
||||
.TP
|
||||
.B \-D
|
||||
Increase the debugging level. This may be used to understand the
|
||||
actions the command is taking.
|
||||
|
||||
.TP
|
||||
.B \-g, \--read-parameters
|
||||
Show driver-specific parameters.
|
||||
|
||||
.TP
|
||||
.B \-G, \--set-parameters value[,value...]
|
||||
Set driver-specific parameters.
|
||||
Set a adapter-specific parameters.
|
||||
Parameters are comma separated, with missing elements retaining the
|
||||
existing value.
|
||||
|
||||
.TP
|
||||
.B \-v
|
||||
Increase the verbosity level. Additional "-v" options increase the
|
||||
level further.
|
||||
|
||||
.TP
|
||||
.B \-V
|
||||
Show the program version information.
|
||||
|
||||
.TP
|
||||
.B \-w, \--watch
|
||||
Continuously monitor the transceiver and report changes.
|
||||
|
||||
.TP
|
||||
.B \-?
|
||||
Emit usage information.
|
||||
|
||||
.SH DESCRIPTION
|
||||
|
||||
.PP
|
||||
Calling the command with just the interface name (which defaults to
|
||||
'eth0' if missing) produces extensive output describing the transceiver
|
||||
capabilities, configuration and current status.
|
||||
|
||||
.PP
|
||||
The '--monitor' option allows scripting link beat changes.
|
||||
.PP
|
||||
This option is similar to --watch, but with lower overhead and simplified
|
||||
output. It polls the interface only once a second and the output format
|
||||
is a single line per link change with three fixed words
|
||||
<unknown|down||negotiating|up> <STATUS> <PARTNER-CAP>
|
||||
.PP
|
||||
Example output: mii-diag --monitor eth0
|
||||
down 0x7809 0x0000
|
||||
negotiating 0x7829 0x45e1
|
||||
up 0x782d 0x45e1
|
||||
down 0x7809 0x0000
|
||||
|
||||
.PP
|
||||
This may be used as
|
||||
mii-diag --monitor eth0 |
|
||||
while read linkstatus bmsr linkpar; do
|
||||
case $linkstatus in
|
||||
up) ifup eth0 ;;
|
||||
down) ifdown eth0 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
.PP
|
||||
It may be useful to shorten the DHCP client daemon timeout if it does
|
||||
not receive an address by adding the following setting to
|
||||
/etc/sysconfig/network:
|
||||
DHCPCDARGS="-t 3"
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR ether-wake (8), net-diag (8), mii-tool (8).
|
||||
.br
|
||||
Addition documentation is available from http://scyld.com/diag/index.html.
|
||||
|
||||
.SH KNOWN BUGS
|
||||
The --all-interfaces option is quirky. There are very few settings that
|
||||
are usefully applied to all interfaces.
|
||||
|
||||
.SH AUTHOR
|
||||
The manual pages, diagnostic commands, and many of the underlying Linux
|
||||
network drivers were written by Donald Becker for the Scyld
|
||||
Beowulf(\*(Tm) cluster system.
|
||||
|
650
mii-diag.c
Normal file
650
mii-diag.c
Normal file
@ -0,0 +1,650 @@
|
||||
/* Mode: C;
|
||||
* mii-diag.c: Examine and set the MII registers of a network interfaces.
|
||||
|
||||
Usage: mii-diag [-vw] interface.
|
||||
|
||||
This program reads and writes the Media Independent Interface (MII)
|
||||
management registers on network transceivers. The registers control
|
||||
and report network link settings and errors. Examples are link speed,
|
||||
duplex, capabilities advertised to the link partner, status LED
|
||||
indications and link error counters.
|
||||
|
||||
Notes:
|
||||
The compile-command is at the end of this source file.
|
||||
This program works with drivers that implement MII ioctl() calls.
|
||||
|
||||
Written/copyright 1997-2003 by Donald Becker <becker@scyld.com>
|
||||
|
||||
This program is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation.
|
||||
|
||||
The author may be reached as becker@scyld.com, or C/O
|
||||
Scyld Computing Corporation
|
||||
914 Bay Ridge Road, Suite 220
|
||||
Annapolis MD 21403
|
||||
|
||||
References
|
||||
http://scyld.com/expert/mii-status.html
|
||||
http://scyld.com/expert/NWay.html
|
||||
http://www.national.com/pf/DP/DP83840.html
|
||||
*/
|
||||
|
||||
static char version[] =
|
||||
"mii-diag.c:v2.11 3/21/2005 Donald Becker (becker@scyld.com)\n"
|
||||
" http://www.scyld.com/diag/index.html\n";
|
||||
|
||||
static const char usage_msg[] =
|
||||
"Usage: %s [--help] [-aDfrRvVw] [-AF <speed+duplex>] [--watch] <interface>.\n";
|
||||
static const char long_usage_msg[] =
|
||||
"Usage: %s [-aDfrRvVw] [-AF <speed+duplex>] [--watch] <interface>.\n\
|
||||
\n\
|
||||
This program configures and monitors the transceiver management registers\n\
|
||||
for network interfaces. It uses the Media Independent Interface (MII)\n\
|
||||
standard with additional Linux-specific controls to communicate with the\n\
|
||||
underlying device driver. The MII registers control and report network\n\
|
||||
link settings and errors. Examples are link speed, duplex, capabilities\n\
|
||||
advertised to the link partner, status LED indications and link error\n\
|
||||
counters.\n\
|
||||
\n\
|
||||
The common usage is\n\
|
||||
mii-diag eth0\n\
|
||||
\n\
|
||||
The default interface is \"eth0\".\n\
|
||||
Frequently used options are\n\
|
||||
-A --advertise <speed|setting>\n\
|
||||
-F --fixed-speed <speed>\n\
|
||||
Speed is one of: 100baseT4, 100baseTx, 100baseTx-FD, 100baseTx-HD,\n\
|
||||
10baseT, 10baseT-FD, 10baseT-HD\n\
|
||||
-s --status Return exit status 2 if there is no link beat.\n\
|
||||
\n\
|
||||
Less frequently used options are\n\
|
||||
-a --all-interfaces Show the status all interfaces\n\
|
||||
(Not recommended with options that change settings.)\n\
|
||||
-D --debug\n\
|
||||
-g --read-parameters Get driver-specific parameters.\n\
|
||||
-G --set-parameters PARMS Set driver-specific parameters.\n\
|
||||
Parameters are comma separated, missing parameters retain\n\
|
||||
their previous values.\n\
|
||||
-M --msg-level LEVEL Set the driver message bit map.\n\
|
||||
-p --phy ADDR Set the PHY (MII address) to report.\n\
|
||||
-r --restart Restart the link autonegotiation.\n\
|
||||
-R --reset Reset the transceiver.\n\
|
||||
-v --verbose Report each action taken.\n\
|
||||
-V --version Emit version information.\n\
|
||||
-w --watch Continuously monitor the transceiver and report changes.\n\
|
||||
\n\
|
||||
This command returns success (zero) if the interface information can be\n\
|
||||
read. If the --status option is passed, a zero return means that the\n\
|
||||
interface has link beat.\n\
|
||||
";
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <getopt.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <net/if.h>
|
||||
#ifdef use_linux_libc5
|
||||
#include <linux/if_arp.h>
|
||||
#include <linux/if_ether.h>
|
||||
#endif
|
||||
|
||||
typedef u_int32_t u32;
|
||||
typedef u_int16_t u16;
|
||||
typedef u_int8_t u8;
|
||||
|
||||
#if defined(SIOCGPARAMS) && SIOCGPARAMS != SIOCDEVPRIVATE+3
|
||||
#error Changed definition for SIOCGPARAMS
|
||||
#else
|
||||
#define SIOCGPARAMS (SIOCDEVPRIVATE+3) /* Read operational parameters. */
|
||||
#define SIOCSPARAMS (SIOCDEVPRIVATE+4) /* Set operational parameters. */
|
||||
#endif
|
||||
|
||||
const char shortopts[] = "aA:C:DfF:gG:hmM:p:rRsvVw?";
|
||||
struct option longopts[] = {
|
||||
/* { name has_arg *flag val } */
|
||||
{"all-interfaces", 0, 0, 'a'}, /* Show all interfaces. */
|
||||
{"advertise", 1, 0, 'A'}, /* Change the capabilities advertised. */
|
||||
{"BMCR", 1, 0, 'C'}, /* Set the control register. */
|
||||
{"debug", 0, 0, 'D'}, /* Increase the debug level. */
|
||||
{"force", 0, 0, 'f'}, /* Force the operation. */
|
||||
{"fixed-speed", 1, 0, 'F'}, /* Fixed speed name. */
|
||||
{"read-parameters", 0, 0, 'g'}, /* Show general settings values. */
|
||||
{"set-parameters", 1, 0, 'G'}, /* Write general settings values. */
|
||||
{"help", 0, 0, 'h'}, /* Print a long usage message. */
|
||||
{"monitor", 0, 0, 'm'}, /* Monitor status register. */
|
||||
{"msg-level", 1, 0, 'M'}, /* Set the driver message level. */
|
||||
{"phy", 1, 0, 'p'}, /* Set the PHY (MII address) to report. */
|
||||
{"restart", 0, 0, 'r'}, /* Restart the link negotiation */
|
||||
{"reset", 0, 0, 'R'}, /* Reset the transceiver. */
|
||||
{"status", 0, 0, 's'}, /* Non-zero exit status w/ no link beat. */
|
||||
{"verbose", 0, 0, 'v'}, /* Report each action taken. */
|
||||
{"version", 0, 0, 'V'}, /* Emit version information. */
|
||||
{"watch", 0, 0, 'w'}, /* Constantly monitor the port. */
|
||||
{"error", 0, 0, '?'}, /* Return the error message. */
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
/* Usually in libmii.c, but trivial substitions are below. */
|
||||
extern int show_mii_details(long ioaddr, int phy_id);
|
||||
extern void monitor_mii(long ioaddr, int phy_id);
|
||||
int show_mii_details(long ioaddr, int phy_id) __attribute__((weak));
|
||||
void monitor_mii(long ioaddr, int phy_id) __attribute__((weak));
|
||||
|
||||
|
||||
/* Command-line flags. */
|
||||
unsigned int opt_a = 0, /* Show-all-interfaces flag. */
|
||||
opt_f = 0, /* Force the operation. */
|
||||
opt_g = 0,
|
||||
opt_G = 0,
|
||||
verbose = 0, /* Verbose flag. */
|
||||
debug = 0,
|
||||
opt_version = 0,
|
||||
opt_restart = 0,
|
||||
opt_reset = 0,
|
||||
opt_status = 0,
|
||||
opt_watch = 0;
|
||||
static int msg_level = -1;
|
||||
static int set_BMCR = -1;
|
||||
static int nway_advertise = 0;
|
||||
static int fixed_speed = -1;
|
||||
static int override_phy = -1;
|
||||
char *opt_G_string = NULL;
|
||||
|
||||
/* Internal values. */
|
||||
int new_ioctl_nums;
|
||||
int skfd = -1; /* AF_INET socket for ioctl() calls. */
|
||||
struct ifreq ifr;
|
||||
|
||||
int do_one_xcvr(int skfd);
|
||||
int show_basic_mii(long ioaddr, int phy_id);
|
||||
int mdio_read(int skfd, int phy_id, int location);
|
||||
void mdio_write(int skfd, int phy_id, int location, int value);
|
||||
static int parse_advertise(const char *capabilities);
|
||||
static void monitor_status(long ioaddr, int phy_id);
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int c, errflag = 0;
|
||||
char **spp, *ifname;
|
||||
char *progname = rindex(argv[0], '/') ? rindex(argv[0], '/')+1 : argv[0];
|
||||
|
||||
while ((c = getopt_long(argc, argv, shortopts, longopts, 0)) != EOF)
|
||||
switch (c) {
|
||||
case 'a': opt_a++; break;
|
||||
case 'A': nway_advertise |= parse_advertise(optarg);
|
||||
if (nway_advertise == -1) errflag++;
|
||||
break;
|
||||
case 'C': set_BMCR = strtoul(optarg, NULL, 16); break;
|
||||
case 'D': debug++; break;
|
||||
case 'f': opt_f++; break;
|
||||
case 'F': fixed_speed = parse_advertise(optarg);
|
||||
if (fixed_speed == -1) errflag++;
|
||||
break;
|
||||
case 'g': opt_g++; break;
|
||||
case 'G': opt_G++; opt_G_string = strdup(optarg); break;
|
||||
case 'm': opt_watch++; opt_status++; break;
|
||||
case 'M': msg_level = strtoul(optarg, NULL, 0); break;
|
||||
case 'h': fprintf(stderr, long_usage_msg, progname); return 0;
|
||||
case 'p': override_phy = atoi(optarg); break;
|
||||
case 'r': opt_restart++; break;
|
||||
case 'R': opt_reset++; break;
|
||||
case 's': opt_status++; break;
|
||||
case 'v': verbose++; break;
|
||||
case 'V': opt_version++; break;
|
||||
case 'w': opt_watch++; break;
|
||||
case '?': errflag++; break;
|
||||
}
|
||||
if (errflag) {
|
||||
fprintf(stderr, usage_msg, progname);
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (verbose || opt_version)
|
||||
printf(version);
|
||||
|
||||
/* Open a basic socket. */
|
||||
if ((skfd = socket(AF_INET, SOCK_DGRAM,0)) < 0) {
|
||||
perror("socket");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (debug)
|
||||
fprintf(stderr, "DEBUG: argc=%d, optind=%d and argv[optind] is %s.\n",
|
||||
argc, optind, argv[optind]);
|
||||
|
||||
/* No remaining args means show all interfaces. */
|
||||
if (optind == argc) {
|
||||
ifname = "eth0";
|
||||
fprintf(stderr, "Using the default interface 'eth0'.\n");
|
||||
} else {
|
||||
/* Copy the interface name. */
|
||||
spp = argv + optind;
|
||||
ifname = *spp++;
|
||||
}
|
||||
|
||||
if (ifname == NULL) {
|
||||
ifname = "eth0";
|
||||
fprintf(stderr, "Using the default interface 'eth0'.\n");
|
||||
}
|
||||
|
||||
/* Verify that the interface supports the ioctl(), and if
|
||||
it is using the new or old SIOCGMIIPHY value (grrr...).
|
||||
*/
|
||||
{
|
||||
u16 *data = (u16 *)(&ifr.ifr_data);
|
||||
|
||||
strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
|
||||
data[0] = 0;
|
||||
|
||||
if (ioctl(skfd, 0x8947, &ifr) >= 0) {
|
||||
new_ioctl_nums = 1;
|
||||
} else if (ioctl(skfd, SIOCDEVPRIVATE, &ifr) >= 0) {
|
||||
new_ioctl_nums = 0;
|
||||
} else {
|
||||
fprintf(stderr, "SIOCGMIIPHY on %s failed: %s\n", ifname,
|
||||
strerror(errno));
|
||||
(void) close(skfd);
|
||||
return 1;
|
||||
}
|
||||
if (verbose)
|
||||
printf(" Using the %s SIOCGMIIPHY value on PHY %d "
|
||||
"(BMCR 0x%4.4x).\n",
|
||||
new_ioctl_nums ? "new" : "old", data[0], data[3]);
|
||||
}
|
||||
|
||||
do_one_xcvr(skfd);
|
||||
|
||||
(void) close(skfd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int do_one_xcvr(int skfd)
|
||||
{
|
||||
u16 *data = (u16 *)(&ifr.ifr_data);
|
||||
u32 *data32 = (u32 *)(&ifr.ifr_data);
|
||||
unsigned phy_id = data[0];
|
||||
|
||||
if (override_phy >= 0) {
|
||||
printf("Using the specified MII PHY index %d.\n", override_phy);
|
||||
phy_id = override_phy;
|
||||
}
|
||||
|
||||
if (opt_g || opt_G || msg_level >= 0) {
|
||||
if (ioctl(skfd, SIOCGPARAMS, &ifr) < 0) {
|
||||
fprintf(stderr, "SIOCGPARAMS on %s failed: %s\n", ifr.ifr_name,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (opt_g) {
|
||||
int i;
|
||||
printf("Driver general parameter settings:");
|
||||
for (i = 0; i*sizeof(u32) < sizeof(ifr.ifr_ifru); i++) {
|
||||
printf(" %d", data32[i]);
|
||||
}
|
||||
printf(".\n");
|
||||
}
|
||||
if (opt_G) {
|
||||
/* Set up to four arbitrary driver parameters from the -G parameter.
|
||||
The format is comma separated integers, with a missing element
|
||||
retaining the previous value.
|
||||
*/
|
||||
char *str = opt_G_string;
|
||||
int i;
|
||||
for (i = 0; str && i < 4; i++) {
|
||||
char *endstr;
|
||||
u32 newval = strtol(str, &endstr, 0);
|
||||
if (debug)
|
||||
printf(" parse string '%s' value %d end '%s'.\n",
|
||||
str, newval, endstr);
|
||||
if (str == endstr) {
|
||||
if (endstr[0] == ',') /* No parameter */
|
||||
str = endstr+1;
|
||||
else {
|
||||
fprintf(stderr, "Invalid driver parameter '%s'.\n", str);
|
||||
str = index(str, ',');
|
||||
}
|
||||
} else if (endstr[0] == ',') {
|
||||
data32[i] = newval;
|
||||
str = endstr + 1;
|
||||
} else if (endstr[0] == 0) {
|
||||
data32[i] = newval;
|
||||
break;
|
||||
}
|
||||
}
|
||||
printf("Setting new driver general parameters:");
|
||||
for (i = 0; i*sizeof(u32) < sizeof(ifr.ifr_ifru); i++) {
|
||||
printf(" %d", data32[i]);
|
||||
}
|
||||
printf(".\n");
|
||||
if (ioctl(skfd, SIOCSPARAMS, &ifr) < 0) {
|
||||
fprintf(stderr, "SIOCSPARAMS on %s failed: %s\n", ifr.ifr_name,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
if (msg_level >= 0) {
|
||||
data32[0] = msg_level;
|
||||
if (ioctl(skfd, SIOCSPARAMS, &ifr) < 0) {
|
||||
fprintf(stderr, "SIOCSPARAMS on %s failed: %s\n", ifr.ifr_name,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (opt_reset) {
|
||||
printf("Resetting the transceiver...\n");
|
||||
mdio_write(skfd, phy_id, 0, 0x8000);
|
||||
}
|
||||
/* Note: PHY addresses > 32 are pseudo-MII devices, usually built-in. */
|
||||
if (phy_id < 64 && nway_advertise > 0) {
|
||||
printf(" Setting the media capability advertisement register of "
|
||||
"PHY #%d to 0x%4.4x.\n", phy_id, nway_advertise | 1);
|
||||
mdio_write(skfd, phy_id, 4, nway_advertise | 1);
|
||||
mdio_write(skfd, phy_id, 0, 0x1000);
|
||||
}
|
||||
|
||||
if (opt_restart) {
|
||||
printf("Restarting negotiation...\n");
|
||||
mdio_write(skfd, phy_id, 0, 0x0000);
|
||||
mdio_write(skfd, phy_id, 0, 0x1200);
|
||||
}
|
||||
/* To force 100baseTx-HD do mdio_write(skfd, phy_id, 0, 0x2000); */
|
||||
if (fixed_speed >= 0) {
|
||||
int reg0_val = 0;
|
||||
if (fixed_speed & 0x0180) /* 100mpbs */
|
||||
reg0_val |= 0x2000;
|
||||
if ((fixed_speed & 0x0140) && /* A full duplex type and */
|
||||
! (fixed_speed & 0x0820)) /* no half duplex types. */
|
||||
reg0_val |= 0x0100;
|
||||
printf("Setting the speed to \"fixed\", Control register %4.4x.\n",
|
||||
reg0_val);
|
||||
mdio_write(skfd, phy_id, 0, reg0_val);
|
||||
}
|
||||
if (set_BMCR >= 0) {
|
||||
printf("Setting the Basic Mode Control Register to 0x%4.4x.\n",
|
||||
set_BMCR);
|
||||
mdio_write(skfd, phy_id, 0, set_BMCR);
|
||||
}
|
||||
|
||||
if (opt_watch && opt_status)
|
||||
monitor_status(skfd, phy_id);
|
||||
|
||||
show_basic_mii(skfd, phy_id);
|
||||
#ifdef LIBMII
|
||||
if (verbose)
|
||||
show_mii_details(skfd, phy_id);
|
||||
#else
|
||||
if (verbose || debug) {
|
||||
int mii_reg, mii_val;
|
||||
printf(" MII PHY #%d transceiver registers:", phy_id);
|
||||
for (mii_reg = 0; mii_reg < 32; mii_reg++) {
|
||||
mii_val = mdio_read(skfd, phy_id, mii_reg);
|
||||
printf("%s %4.4x", (mii_reg % 8) == 0 ? "\n " : "",
|
||||
mii_val);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
if (opt_watch)
|
||||
monitor_mii(skfd, phy_id);
|
||||
if (opt_status &&
|
||||
(mdio_read(skfd, phy_id, 1) & 0x0004) == 0)
|
||||
exit(2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mdio_read(int skfd, int phy_id, int location)
|
||||
{
|
||||
u16 *data = (u16 *)(&ifr.ifr_data);
|
||||
|
||||
data[0] = phy_id;
|
||||
data[1] = location;
|
||||
|
||||
if (ioctl(skfd, new_ioctl_nums ? 0x8948 : SIOCDEVPRIVATE+1, &ifr) < 0) {
|
||||
fprintf(stderr, "SIOCGMIIREG on %s failed: %s\n", ifr.ifr_name,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return data[3];
|
||||
}
|
||||
|
||||
void mdio_write(int skfd, int phy_id, int location, int value)
|
||||
{
|
||||
u16 *data = (u16 *)(&ifr.ifr_data);
|
||||
|
||||
data[0] = phy_id;
|
||||
data[1] = location;
|
||||
data[2] = value;
|
||||
|
||||
if (ioctl(skfd, new_ioctl_nums ? 0x8949 : SIOCDEVPRIVATE+2, &ifr) < 0) {
|
||||
fprintf(stderr, "SIOCSMIIREG on %s failed: %s\n", ifr.ifr_name,
|
||||
strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
/* Parse the command line argument for advertised capabilities. */
|
||||
static int parse_advertise(const char *capabilities)
|
||||
{
|
||||
const char *mtypes[] = {
|
||||
"100baseT4", "100baseTx", "100baseTx-FD", "100baseTx-HD",
|
||||
"10baseT", "10baseT-FD", "10baseT-HD", 0,
|
||||
};
|
||||
char *endptr;
|
||||
int cap_map[] = { 0x0200, 0x0180, 0x0100, 0x0080, 0x0060, 0x0040, 0x0020,};
|
||||
int i;
|
||||
if ( ! capabilities) {
|
||||
fprintf(stderr, "You passed -A 'NULL'. You must provide a media"
|
||||
" list to advertise!\n");
|
||||
return -1;
|
||||
}
|
||||
if (debug)
|
||||
fprintf(stderr, "Advertise string is '%s'.\n", capabilities);
|
||||
for (i = 0; mtypes[i]; i++)
|
||||
if (strcasecmp(mtypes[i], capabilities) == 0)
|
||||
return cap_map[i];
|
||||
if ((i = strtol(capabilities, &endptr, 16)) <= 0xffff && endptr[0] == 0)
|
||||
return i;
|
||||
fprintf(stderr, "Invalid media advertisement value '%s'.\n"
|
||||
" Either pass a numeric value or one of the following names:\n",
|
||||
capabilities);
|
||||
for (i = 0; mtypes[i]; i++)
|
||||
fprintf(stderr, " %-14s %3.3x\n", mtypes[i], cap_map[i]);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Trivial versions if we don't link against libmii.c */
|
||||
static const char *media_names[] = {
|
||||
"10baseT", "10baseT-FD", "100baseTx", "100baseTx-FD", "100baseT4",
|
||||
"Flow-control", 0,
|
||||
};
|
||||
/* Various non-good bits in the command register. */
|
||||
static const char *bmcr_bits[] = {
|
||||
" Internal Collision-Test enabled!\n", "", /* 0x0080,0x0100 */
|
||||
" Restarted auto-negotiation in progress!\n",
|
||||
" Transceiver isolated from the MII!\n",
|
||||
" Transceiver powered down!\n", "", "",
|
||||
" Transceiver in loopback mode!\n",
|
||||
" Transceiver currently being reset!\n",
|
||||
};
|
||||
|
||||
int show_basic_mii(long ioaddr, int phy_id)
|
||||
{
|
||||
int mii_reg, i;
|
||||
u16 mii_val[32];
|
||||
u16 bmcr, bmsr, new_bmsr, nway_advert, lkpar;
|
||||
|
||||
for (mii_reg = 0; mii_reg < 8; mii_reg++)
|
||||
mii_val[mii_reg] = mdio_read(ioaddr, phy_id, mii_reg);
|
||||
if ( ! verbose) {
|
||||
printf("Basic registers of MII PHY #%d: ", phy_id);
|
||||
for (mii_reg = 0; mii_reg < 8; mii_reg++)
|
||||
printf(" %4.4x", mii_val[mii_reg]);
|
||||
printf(".\n");
|
||||
}
|
||||
|
||||
if (mii_val[0] == 0xffff || mii_val[1] == 0x0000) {
|
||||
printf(" No MII transceiver present!.\n");
|
||||
if (! opt_f) {
|
||||
printf(" Use '--force' to view the information anyway.\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
/* Descriptive rename. */
|
||||
bmcr = mii_val[0];
|
||||
bmsr = mii_val[1];
|
||||
nway_advert = mii_val[4];
|
||||
lkpar = mii_val[5];
|
||||
|
||||
if (lkpar & 0x4000) {
|
||||
int negotiated = nway_advert & lkpar & 0x3e0;
|
||||
int max_capability = 0;
|
||||
/* Scan for the highest negotiated capability, highest priority
|
||||
(100baseTx-FDX) to lowest (10baseT-HDX). */
|
||||
int media_priority[] = {8, 9, 7, 6, 5}; /* media_names[i-5] */
|
||||
printf(" The autonegotiated capability is %4.4x.\n", negotiated);
|
||||
for (i = 0; media_priority[i]; i++)
|
||||
if (negotiated & (1 << media_priority[i])) {
|
||||
max_capability = media_priority[i];
|
||||
break;
|
||||
}
|
||||
if (max_capability)
|
||||
printf("The autonegotiated media type is %s.\n",
|
||||
media_names[max_capability - 5]);
|
||||
else
|
||||
printf("No common media type was autonegotiated!\n"
|
||||
"This is extremely unusual and typically indicates a "
|
||||
"configuration error.\n" "Perhaps the advertised "
|
||||
"capability set was intentionally limited.\n");
|
||||
}
|
||||
printf(" Basic mode control register 0x%4.4x:", bmcr);
|
||||
if (bmcr & 0x1000)
|
||||
printf(" Auto-negotiation enabled.\n");
|
||||
else
|
||||
printf(" Auto-negotiation disabled, with\n"
|
||||
" Speed fixed at 10%s mbps, %s-duplex.\n",
|
||||
bmcr & 0x2000 ? "0" : "",
|
||||
bmcr & 0x0100 ? "full":"half");
|
||||
for (i = 0; i < 9; i++)
|
||||
if (bmcr & (0x0080<<i))
|
||||
printf(bmcr_bits[i]);
|
||||
|
||||
new_bmsr = mdio_read(ioaddr, phy_id, 1);
|
||||
if ((bmsr & 0x0016) == 0x0004)
|
||||
printf( " You have link beat, and everything is working OK.\n");
|
||||
else
|
||||
printf(" Basic mode status register 0x%4.4x ... %4.4x.\n"
|
||||
" Link status: %sestablished.\n",
|
||||
bmsr, new_bmsr,
|
||||
bmsr & 0x0004 ? "" :
|
||||
(new_bmsr & 0x0004) ? "previously broken, but now re" : "not ");
|
||||
if (verbose) {
|
||||
printf(" This transceiver is capable of ");
|
||||
if (bmsr & 0xF800) {
|
||||
for (i = 15; i >= 11; i--)
|
||||
if (bmsr & (1<<i))
|
||||
printf(" %s", media_names[i-11]);
|
||||
} else
|
||||
printf("<Warning! No media capabilities>");
|
||||
printf(".\n");
|
||||
printf(" %s to perform Auto-negotiation, negotiation %scomplete.\n",
|
||||
bmsr & 0x0008 ? "Able" : "Unable",
|
||||
bmsr & 0x0020 ? "" : "not ");
|
||||
}
|
||||
|
||||
if (bmsr & 0x0010)
|
||||
printf(" Remote fault detected!\n");
|
||||
if (bmsr & 0x0002)
|
||||
printf(" *** Link Jabber! ***\n");
|
||||
|
||||
if (lkpar & 0x4000) {
|
||||
printf(" Your link partner advertised %4.4x:",
|
||||
lkpar);
|
||||
for (i = 5; i >= 0; i--)
|
||||
if (lkpar & (0x20<<i))
|
||||
printf(" %s", media_names[i]);
|
||||
printf("%s.\n", lkpar & 0x0400 ? ", w/ 802.3X flow control" : "");
|
||||
} else if (lkpar & 0x00A0)
|
||||
printf(" Your link partner is generating %s link beat (no"
|
||||
" autonegotiation).\n",
|
||||
lkpar & 0x0080 ? "100baseTx" : "10baseT");
|
||||
else if ( ! (bmcr & 0x1000))
|
||||
printf(" Link partner information is not exchanged when in"
|
||||
" fixed speed mode.\n");
|
||||
else if ( ! (new_bmsr & 0x004))
|
||||
; /* If no partner, do not report status. */
|
||||
else if (lkpar == 0x0001 || lkpar == 0x0000) {
|
||||
printf(" Your link partner does not do autonegotiation, and this "
|
||||
"transceiver type\n does not report the sensed link "
|
||||
"speed.\n");
|
||||
} else
|
||||
printf(" Your link partner is strange, status %4.4x.\n", lkpar);
|
||||
|
||||
printf(" End of basic transceiver information.\n\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void monitor_status(long ioaddr, int phy_id)
|
||||
{
|
||||
unsigned int baseline_1 = 0x55555555; /* Always show initial status. */
|
||||
|
||||
while (1) {
|
||||
unsigned int new_1 = mdio_read(ioaddr, phy_id, 1);
|
||||
if (new_1 != baseline_1) {
|
||||
printf("%-12s 0x%4.4x 0x%4.4x\n",
|
||||
new_1 & 0x04 ? (new_1==0xffff ? "unknown" : "up") :
|
||||
new_1 & 0x20 ? "negotiating" : "down",
|
||||
new_1, mdio_read(ioaddr, phy_id, 5));
|
||||
fflush(stdout);
|
||||
baseline_1 = new_1;
|
||||
}
|
||||
sleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
int show_mii_details(long ioaddr, int phy_id)
|
||||
{
|
||||
int mii_reg, mii_val;
|
||||
printf(" MII PHY #%d transceiver registers:", phy_id);
|
||||
for (mii_reg = 0; mii_reg < 32; mii_reg++) {
|
||||
mii_val = mdio_read(skfd, phy_id, mii_reg);
|
||||
printf("%s %4.4x", (mii_reg % 8) == 0 ? "\n " : "",
|
||||
mii_val);
|
||||
}
|
||||
printf("\nThis version of 'mii-diag' has not been linked with "
|
||||
"the libmii.c library.\n"
|
||||
" That library provides extended transceiver status reports.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void monitor_mii(long ioaddr, int phy_id)
|
||||
{
|
||||
fprintf(stderr, "\nThis version of 'mii-diag' has not been linked with "
|
||||
"the libmii.c library \n"
|
||||
" required for the media monitor option.\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* version-control: t
|
||||
* kept-new-versions: 5
|
||||
* c-indent-level: 4
|
||||
* c-basic-offset: 4
|
||||
* tab-width: 4
|
||||
* compile-command: "gcc -Wall -Wstrict-prototypes -O mii-diag.c -DLIBMII libmii.c -o mii-diag"
|
||||
* simple-compile-command: "gcc mii-diag.c -o mii-diag"
|
||||
* End:
|
||||
*/
|
@ -160,6 +160,31 @@ diff -up net-tools-1.60/man/en_US/ifconfig.8.man-obsolete net-tools-1.60/man/en_
|
||||
.SH AUTHORS
|
||||
Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
|
||||
.br
|
||||
--- net-tools-1.60/man/en_US/mii-tool.8.obsolete 2000-05-21 16:21:38.000000000 +0200
|
||||
+++ net-tools-1.60/man/en_US/mii-tool.8 2004-11-11 10:45:51.155113000 +0100
|
||||
@@ -18,6 +18,12 @@
|
||||
[\fB\-F\fR, \fB\-\-force=\fImedia\fR]
|
||||
.RI [ "interface\ ..." ]
|
||||
|
||||
+.SH NOTE
|
||||
+.P
|
||||
+This program is obsolete. Valid media are only \fB100baseT4\fR,
|
||||
+\fB100baseTx-FD\fR,\fB100baseTx-HD\fR, \fB10baseT-FD\fR and
|
||||
+\fB10baseT-HD\fR ethernet cards. For replacement check \fBethtool\fB.
|
||||
+
|
||||
.SH DESCRIPTION
|
||||
This utility checks or sets the status of a network interface's Media
|
||||
Independent Interface (MII) unit. Most fast ethernet adapters use an
|
||||
@@ -72,6 +78,9 @@
|
||||
commas. Valid media are \fB100baseT4\fR, \fB100baseTx-FD\fR,
|
||||
\fB100baseTx-HD\fR, \fB10baseT-FD\fR, and \fB10baseT-HD\fR.
|
||||
|
||||
+.SH SEE ALSO
|
||||
+ethtool(8)
|
||||
+
|
||||
.SH AUTHORS
|
||||
David Hinds \- dhinds@pcmcia.sourceforge.org
|
||||
.br
|
||||
diff -up net-tools-1.60/man/en_US/nameif.8.man-obsolete net-tools-1.60/man/en_US/nameif.8
|
||||
--- net-tools-1.60/man/en_US/nameif.8.man-obsolete 2000-10-18 19:26:29.000000000 +0200
|
||||
+++ net-tools-1.60/man/en_US/nameif.8 2010-12-16 12:43:10.000000000 +0100
|
||||
|
@ -143,3 +143,38 @@ diff -up net-tools-1.60/man/en_US/netstat.8.man net-tools-1.60/man/en_US/netstat
|
||||
.B --interfaces
|
||||
option, show interfaces that are not marked
|
||||
.SS "\-F"
|
||||
diff -up net-tools-1.60/man/en_US/route.8.man net-tools-1.60/man/en_US/route.8
|
||||
--- net-tools-1.60/man/en_US/route.8.man 2000-05-21 20:59:03.000000000 +0200
|
||||
+++ net-tools-1.60/man/en_US/route.8 2010-12-20 13:17:20.000000000 +0100
|
||||
@@ -140,9 +140,10 @@ set the metric field in the routing tabl
|
||||
.B mss M
|
||||
set the TCP Maximum Segment Size (MSS) for connections over this route
|
||||
to M bytes.
|
||||
-The default is the device MTU minus headers, or a lower MTU when path mtu
|
||||
-discovery occured. This setting can be used to force smaller TCP packets on the
|
||||
-other end when path mtu discovery does not work (usually because of
|
||||
+The default is the device MTU minus headers, or a lower MTU when path MTU
|
||||
+discovery occurred. This setting can be used to force smaller TCP packets on the
|
||||
+other end when path MTU discovery does not work (usually because of
|
||||
+
|
||||
misconfigured firewalls that block ICMP Fragmentation Needed)
|
||||
.TP
|
||||
.B window W
|
||||
@@ -182,7 +183,7 @@ modifiers (metric - netmask - gw - dev)
|
||||
.B route add -net 127.0.0.0
|
||||
adds the normal loopback entry, using netmask 255.0.0.0 (class A net,
|
||||
determined from the destination address) and associated with the
|
||||
-"lo" device (assuming this device was prviously set up correctly with
|
||||
+"lo" device (assuming this device was previously set up correctly with
|
||||
.BR ifconfig (8)).
|
||||
|
||||
.TP
|
||||
@@ -289,7 +290,7 @@ be either route cache misses (-F) or hit
|
||||
Interface to which packets for this route will be sent.
|
||||
.TP
|
||||
.B MSS
|
||||
-Default maximum segement size for TCP connections over this route.
|
||||
+Default maximum segment size for TCP connections over this route.
|
||||
.TP
|
||||
.B Window
|
||||
Default window size for TCP connections over this route.
|
||||
|
@ -1,25 +0,0 @@
|
||||
--- net-tools-1.60/man/en_US/mii-tool.8.obsolete 2000-05-21 16:21:38.000000000 +0200
|
||||
+++ net-tools-1.60/man/en_US/mii-tool.8 2004-11-11 10:45:51.155113000 +0100
|
||||
@@ -18,6 +18,12 @@
|
||||
[\fB\-F\fR, \fB\-\-force=\fImedia\fR]
|
||||
.RI [ "interface\ ..." ]
|
||||
|
||||
+.SH NOTE
|
||||
+.P
|
||||
+This program is obsolete. Valid media are only \fB100baseT4\fR,
|
||||
+\fB100baseTx-FD\fR,\fB100baseTx-HD\fR, \fB10baseT-FD\fR and
|
||||
+\fB10baseT-HD\fR ethernet cards. For replacement check \fBethtool\fB.
|
||||
+
|
||||
.SH DESCRIPTION
|
||||
This utility checks or sets the status of a network interface's Media
|
||||
Independent Interface (MII) unit. Most fast ethernet adapters use an
|
||||
@@ -72,6 +78,9 @@
|
||||
commas. Valid media are \fB100baseT4\fR, \fB100baseTx-FD\fR,
|
||||
\fB100baseTx-HD\fR, \fB10baseT-FD\fR, and \fB10baseT-HD\fR.
|
||||
|
||||
+.SH SEE ALSO
|
||||
+ethtool(8)
|
||||
+
|
||||
.SH AUTHORS
|
||||
David Hinds \- dhinds@pcmcia.sourceforge.org
|
||||
.br
|
@ -1,7 +1,7 @@
|
||||
Summary: Basic networking tools
|
||||
Name: net-tools
|
||||
Version: 1.60
|
||||
Release: 110%{?dist}
|
||||
Release: 111%{?dist}
|
||||
License: GPL+
|
||||
Group: System Environment/Base
|
||||
URL: http://net-tools.berlios.de/
|
||||
@ -35,7 +35,6 @@ Patch22: net-tools-1.60-parse.patch
|
||||
Patch23: net-tools-1.60-netmask.patch
|
||||
Patch24: net-tools-1.60-ulong.patch
|
||||
Patch25: net-tools-1.60-bcast.patch
|
||||
Patch26: net-tools-1.60-mii-tool-obsolete.patch
|
||||
Patch27: net-tools-1.60-netstat_ulong.patch
|
||||
Patch28: net-tools-1.60-note.patch
|
||||
Patch29: net-tools-1.60-num-ports.patch
|
||||
@ -169,7 +168,6 @@ Most of them are obsolete. For replacement check iproute package.
|
||||
%patch23 -p1 -b .netmask
|
||||
%patch24 -p1 -b .ulong
|
||||
%patch25 -p1 -b .bcast
|
||||
%patch26 -p1 -b .obsolete
|
||||
%patch27 -p1 -b .netstat_ulong
|
||||
%patch28 -p1 -b .note
|
||||
%patch29 -p1 -b .num-ports
|
||||
@ -329,6 +327,10 @@ rm -rf %{buildroot}
|
||||
%config(noreplace) %{_sysconfdir}/ethers
|
||||
|
||||
%changelog
|
||||
* Thu Dec 16 2010 Jiri Popelka <jpopelka@redhat.com> - 1.60-111
|
||||
- fixed mii-diag(8) man page (#663689)
|
||||
- fixed route(8) man page (#664171)
|
||||
|
||||
* Thu Dec 16 2010 Jiri Popelka <jpopelka@redhat.com> - 1.60-110
|
||||
- fixed ifconfig(8) man page (#663469)
|
||||
|
||||
|
6
sources
6
sources
@ -1,7 +1 @@
|
||||
888774accab40217dde927e21979c165 net-tools-1.60.tar.bz2
|
||||
64a9a08dd016d02b6af3deef3277ad98 mii-diag.c
|
||||
8c6ac053fcab98a3fce2181e7da878ea mii-diag.8
|
||||
15fe21b9cac19a79649c41fa7919e888 ether-wake.c
|
||||
d765b596b9e930bf22c226b99080b420 ether-wake.8
|
||||
32b749f457e19c5aea3a80ee8ee7f892 ipmaddr.8
|
||||
2ab05121ef65bed64dc323a59c6f9e6f iptunnel.8
|
||||
|
Loading…
Reference in New Issue
Block a user