Retire MINIX ifconfig(8)
Change-Id: I26f3ceff01bbd31e4c009752c7454a58e8a72abf
This commit is contained in:
parent
c5da0dffe2
commit
96339c07fd
@ -377,7 +377,7 @@
|
||||
./usr/bin/host minix-base
|
||||
./usr/bin/hostaddr minix-base
|
||||
./usr/bin/id minix-base
|
||||
./usr/bin/ifconfig minix-base
|
||||
./usr/bin/ifconfig minix-base obsolete
|
||||
./usr/bin/ifdef minix-base
|
||||
./usr/bin/in.rshd minix-base obsolete
|
||||
./usr/bin/in.telnetd minix-base
|
||||
|
@ -294,7 +294,7 @@
|
||||
./usr/libdata/debug/usr/bin/host.debug minix-debug debug
|
||||
./usr/libdata/debug/usr/bin/hostaddr.debug minix-debug debug
|
||||
./usr/libdata/debug/usr/bin/id.debug minix-debug debug
|
||||
./usr/libdata/debug/usr/bin/ifconfig.debug minix-debug debug
|
||||
./usr/libdata/debug/usr/bin/ifconfig.debug minix-debug debug,obsolete
|
||||
./usr/libdata/debug/usr/bin/ifdef.debug minix-debug debug
|
||||
./usr/libdata/debug/usr/bin/in.telnetd.debug minix-debug debug
|
||||
./usr/libdata/debug/usr/bin/indent.debug minix-debug debug
|
||||
|
@ -3400,7 +3400,7 @@
|
||||
./usr/man/man8/halt.8 minix-man
|
||||
./usr/man/man8/httpd.8 minix-man obsolete
|
||||
./usr/man/man8/i2cscan.8 minix-man
|
||||
./usr/man/man8/ifconfig.8 minix-man
|
||||
./usr/man/man8/ifconfig.8 minix-man obsolete
|
||||
./usr/man/man8/in.httpd.8 minix-man obsolete
|
||||
./usr/man/man8/inet.8 minix-man obsolete
|
||||
./usr/man/man8/init.8 minix-man
|
||||
|
@ -11,7 +11,7 @@ SUBDIR= add_route arp at backup \
|
||||
eject \
|
||||
fix format fsck.mfs \
|
||||
gcov-pull host \
|
||||
hostaddr ifconfig ifdef \
|
||||
hostaddr ifdef \
|
||||
intr irdpd isoread \
|
||||
loadkeys loadramdisk logger look lp \
|
||||
lpd lspci mail MAKEDEV \
|
||||
|
@ -1,4 +0,0 @@
|
||||
PROG= ifconfig
|
||||
MAN= ifconfig.8
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -1,50 +0,0 @@
|
||||
.TH IFCONFIG 8
|
||||
.SH NAME
|
||||
ifconfig \- configure a TCP/IP device
|
||||
.SH SYNOPSIS
|
||||
.B ifconfig
|
||||
.RB [ \-I
|
||||
.IR ip-device ]
|
||||
.RB [ \-h
|
||||
.IR ipaddr ]
|
||||
.RB [ \-n
|
||||
.IR netmask ]
|
||||
.RB [ \-m
|
||||
.IR mtu ]
|
||||
.RB [ \-iva ]
|
||||
.SH DESCRIPTION
|
||||
.B Ifconfig
|
||||
initializes a TCP/IP device setting the IP address and/or netmask. It will
|
||||
report the address and netmask set. This command may be used if the system
|
||||
has not been configured properly yet. It is only used at boot time to set a
|
||||
fixed address for a system without a physical ethernet. Normally the
|
||||
.B inet
|
||||
task will find it out by itself from the RARP server.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-h
|
||||
The decimal TCP/IP address to set.
|
||||
.TP
|
||||
.B \-n
|
||||
The netmask to set.
|
||||
.TP
|
||||
.B \-m
|
||||
The mtu to set. (Minix-vmd only.)
|
||||
.TP
|
||||
.B \-i
|
||||
Don't set the IP address or netmask if already set. This way ifconfig cannot
|
||||
interfere if the numbers have been found out by RARP.
|
||||
.TP
|
||||
.B \-v
|
||||
Report IP address and netmask. This is the default action if there are no
|
||||
other options.
|
||||
.TP
|
||||
.B \-a
|
||||
Report the IP addresses and netmasks of all configured interfaces.
|
||||
.SH "SEE ALSO"
|
||||
.BR hostaddr (1),
|
||||
.BR rarpd (8),
|
||||
.BR inet (8),
|
||||
.BR boot (8).
|
||||
.SH AUTHOR
|
||||
Kees J. Bot (kjb@cs.vu.nl)
|
@ -1,356 +0,0 @@
|
||||
/*
|
||||
ifconfig.c
|
||||
*/
|
||||
|
||||
#define _POSIX_C_SOURCE 2
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <net/netlib.h>
|
||||
#include <net/gen/in.h>
|
||||
#include <net/gen/ip_io.h>
|
||||
#include <net/gen/inet.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#if __STDC__
|
||||
#define PROTO(x,y) x y
|
||||
#else
|
||||
#define PROTO(x,y) x()
|
||||
#endif
|
||||
|
||||
static PROTO (void usage, (void) );
|
||||
static PROTO (void set_hostaddr, (int ip_fd, char *host_s, int ins) );
|
||||
static PROTO (void set_netmask, (int ip_fd, char *net_s, int ins) );
|
||||
static PROTO (void set_mtu, (int ip_fd, char *mtu_s) );
|
||||
static PROTO (int check_ipaddrset, (int ip_fd) );
|
||||
static PROTO (int check_netmaskset, (int ip_fd) );
|
||||
static PROTO (int get_ipconf, (int ip_fd,
|
||||
struct nwio_ipconf *ref_ipconf) );
|
||||
PROTO (int main, (int argc, char *argv[]) );
|
||||
|
||||
char *prog_name;
|
||||
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
char *device_s, *hostaddr_s, *mtu_s, *netmask_s, **arg_s;
|
||||
int ins;
|
||||
int c, ip_fd, ifno;
|
||||
struct nwio_ipconf ipconf;
|
||||
int i_flag, v_flag, a_flag, modify;
|
||||
char *d_arg, *h_arg, *m_arg, *n_arg;
|
||||
|
||||
prog_name= argv[0];
|
||||
|
||||
d_arg= NULL;
|
||||
h_arg= NULL;
|
||||
m_arg= NULL;
|
||||
n_arg= NULL;
|
||||
i_flag= 0;
|
||||
v_flag= 0;
|
||||
a_flag= 0;
|
||||
while ((c= getopt(argc, argv, "?I:h:m:n:iva")) != -1)
|
||||
{
|
||||
switch(c)
|
||||
{
|
||||
case '?':
|
||||
usage();
|
||||
case 'I':
|
||||
if (d_arg)
|
||||
usage();
|
||||
d_arg= optarg;
|
||||
break;
|
||||
case 'h':
|
||||
if (h_arg)
|
||||
usage();
|
||||
h_arg= optarg;
|
||||
break;
|
||||
case 'm':
|
||||
if (m_arg)
|
||||
usage();
|
||||
m_arg= optarg;
|
||||
break;
|
||||
case 'n':
|
||||
if (n_arg)
|
||||
usage();
|
||||
n_arg= optarg;
|
||||
break;
|
||||
case 'i':
|
||||
if (i_flag)
|
||||
usage();
|
||||
i_flag= 1;
|
||||
break;
|
||||
case 'v':
|
||||
if (v_flag)
|
||||
usage();
|
||||
v_flag= 1;
|
||||
break;
|
||||
case 'a':
|
||||
if (a_flag)
|
||||
usage();
|
||||
a_flag= 1;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "%s: getopt failed: '%c'\n",
|
||||
prog_name, c);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
modify = (h_arg != NULL || n_arg != NULL || m_arg != NULL);
|
||||
if (a_flag && modify) usage();
|
||||
if (!modify) v_flag= 1;
|
||||
|
||||
if (modify) setuid(getuid());
|
||||
|
||||
if (optind != argc)
|
||||
usage();
|
||||
|
||||
hostaddr_s= h_arg;
|
||||
mtu_s= m_arg;
|
||||
netmask_s= n_arg;
|
||||
ins= i_flag;
|
||||
|
||||
ifno= 0;
|
||||
do
|
||||
{
|
||||
if (!a_flag) {
|
||||
device_s= d_arg;
|
||||
if (device_s == NULL)
|
||||
device_s= getenv("IP_DEVICE");
|
||||
if (device_s == NULL)
|
||||
device_s= IP_DEVICE;
|
||||
} else {
|
||||
static char device[sizeof("/dev/ip99")];
|
||||
|
||||
sprintf(device, "/dev/ip%d", ifno);
|
||||
device_s= device;
|
||||
}
|
||||
|
||||
ip_fd= open (device_s, O_RDWR);
|
||||
if (ip_fd<0)
|
||||
{
|
||||
if (a_flag && (errno == ENOENT || errno == ENXIO))
|
||||
continue;
|
||||
|
||||
fprintf(stderr, "%s: Unable to open '%s': %s\n",
|
||||
prog_name, device_s, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (hostaddr_s)
|
||||
set_hostaddr(ip_fd, hostaddr_s, ins);
|
||||
|
||||
if (netmask_s)
|
||||
set_netmask(ip_fd, netmask_s, ins);
|
||||
|
||||
if (mtu_s)
|
||||
set_mtu(ip_fd, mtu_s);
|
||||
|
||||
if (v_flag) {
|
||||
if (!get_ipconf(ip_fd, &ipconf))
|
||||
{
|
||||
if (!a_flag)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"%s: %s: Host address not set\n",
|
||||
prog_name, device_s);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%s: address %s", device_s,
|
||||
inet_ntoa(*(struct in_addr *)
|
||||
&ipconf.nwic_ipaddr));
|
||||
|
||||
if (ipconf.nwic_flags & NWIC_NETMASK_SET)
|
||||
{
|
||||
printf(" netmask %s",
|
||||
inet_ntoa(*(struct in_addr *)
|
||||
&ipconf.nwic_netmask));
|
||||
}
|
||||
#ifdef NWIC_MTU_SET
|
||||
if (ipconf.nwic_mtu)
|
||||
printf(" mtu %u", ipconf.nwic_mtu);
|
||||
#endif
|
||||
fputc('\n', stdout);
|
||||
}
|
||||
}
|
||||
close(ip_fd);
|
||||
} while (a_flag && ++ifno < 32);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static void set_hostaddr (ip_fd, hostaddr_s, ins)
|
||||
int ip_fd;
|
||||
char *hostaddr_s;
|
||||
int ins;
|
||||
{
|
||||
ipaddr_t ipaddr;
|
||||
struct nwio_ipconf ipconf;
|
||||
int result;
|
||||
|
||||
ipaddr= inet_addr (hostaddr_s);
|
||||
if (ipaddr == (ipaddr_t)(-1))
|
||||
{
|
||||
fprintf(stderr, "%s: Invalid host address (%s)\n",
|
||||
prog_name, hostaddr_s);
|
||||
exit(1);
|
||||
}
|
||||
if (ins && check_ipaddrset(ip_fd))
|
||||
return;
|
||||
|
||||
ipconf.nwic_flags= NWIC_IPADDR_SET;
|
||||
ipconf.nwic_ipaddr= ipaddr;
|
||||
|
||||
result= ioctl(ip_fd, NWIOSIPCONF, &ipconf);
|
||||
if (result<0)
|
||||
{
|
||||
fprintf(stderr, "%s: Unable to set IP configuration: %s\n",
|
||||
prog_name, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
static int check_ipaddrset (ip_fd)
|
||||
int ip_fd;
|
||||
{
|
||||
struct nwio_ipconf ipconf;
|
||||
|
||||
if (!get_ipconf(ip_fd, &ipconf))
|
||||
return 0;
|
||||
|
||||
assert (ipconf.nwic_flags & NWIC_IPADDR_SET);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int get_ipconf (ip_fd, ref_ipaddr)
|
||||
int ip_fd;
|
||||
struct nwio_ipconf *ref_ipaddr;
|
||||
{
|
||||
int flags;
|
||||
int error, result;
|
||||
nwio_ipconf_t ipconf;
|
||||
|
||||
flags= fcntl(ip_fd, F_GETFL);
|
||||
fcntl(ip_fd, F_SETFL, flags | O_NONBLOCK);
|
||||
|
||||
result= ioctl (ip_fd, NWIOGIPCONF, &ipconf);
|
||||
error= errno;
|
||||
|
||||
fcntl(ip_fd, F_SETFL, flags);
|
||||
|
||||
if (result <0 && error != EAGAIN)
|
||||
{
|
||||
errno= error;
|
||||
fprintf(stderr, "%s: Unable to get IP configuration: %s\n",
|
||||
prog_name, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
if (result == 0)
|
||||
{
|
||||
*ref_ipaddr = ipconf;
|
||||
}
|
||||
return result>=0;
|
||||
}
|
||||
|
||||
static void usage()
|
||||
{
|
||||
fprintf(stderr,
|
||||
"Usage: %s [-I ip-device] [-h ipaddr] [-n netmask] [-m mtu] [-iva]\n",
|
||||
prog_name);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void set_netmask (ip_fd, netmask_s, ins)
|
||||
int ip_fd;
|
||||
char *netmask_s;
|
||||
int ins;
|
||||
{
|
||||
ipaddr_t netmask;
|
||||
struct nwio_ipconf ipconf;
|
||||
int result;
|
||||
|
||||
netmask= inet_addr (netmask_s);
|
||||
if (netmask == (ipaddr_t)(-1))
|
||||
{
|
||||
fprintf(stderr, "%s: Invalid netmask (%s)\n",
|
||||
prog_name, netmask_s);
|
||||
exit(1);
|
||||
}
|
||||
if (ins && check_netmaskset(ip_fd))
|
||||
return;
|
||||
|
||||
ipconf.nwic_flags= NWIC_NETMASK_SET;
|
||||
ipconf.nwic_netmask= netmask;
|
||||
|
||||
result= ioctl(ip_fd, NWIOSIPCONF, &ipconf);
|
||||
if (result<0)
|
||||
{
|
||||
fprintf(stderr, "%s: Unable to set IP configuration: %s\n",
|
||||
prog_name, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
static void set_mtu (ip_fd, mtu_s)
|
||||
int ip_fd;
|
||||
char *mtu_s;
|
||||
{
|
||||
ipaddr_t netmask;
|
||||
int result;
|
||||
long mtu;
|
||||
char *check;
|
||||
struct nwio_ipconf ipconf;
|
||||
|
||||
mtu= strtol (mtu_s, &check, 0);
|
||||
if (check[0] != '\0')
|
||||
{
|
||||
fprintf(stderr, "%s: Invalid mtu (%s)\n",
|
||||
prog_name, mtu_s);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#ifdef NWIC_MTU_SET
|
||||
ipconf.nwic_flags= NWIC_MTU_SET;
|
||||
ipconf.nwic_mtu= mtu;
|
||||
|
||||
result= ioctl(ip_fd, NWIOSIPCONF, &ipconf);
|
||||
if (result<0)
|
||||
{
|
||||
fprintf(stderr, "%s: Unable to set IP configuration: %s\n",
|
||||
prog_name, strerror(errno));
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static int check_netmaskset (ip_fd)
|
||||
int ip_fd;
|
||||
{
|
||||
struct nwio_ipconf ipconf;
|
||||
|
||||
if (!get_ipconf(ip_fd, &ipconf))
|
||||
{
|
||||
fprintf(stderr,
|
||||
"%s: Unable to determine if netmask is set, please set IP address first\n",
|
||||
prog_name);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return (ipconf.nwic_flags & NWIC_NETMASK_SET);
|
||||
}
|
||||
|
||||
/*
|
||||
* $PchId: ifconfig.c,v 1.7 2001/02/21 09:19:52 philip Exp $
|
||||
*/
|
Loading…
x
Reference in New Issue
Block a user