diff -c of ifconfig.c
satz%srijoyce at sri-unix.UUCP
satz%srijoyce at sri-unix.UUCP
Fri Jan 6 10:22:55 AEST 1984
From: Greg Satz <satz at srijoyce>
ifconfig screwed up the command:
ifconfig il0 hostname -trailers
it would zero out the flag word instead of oring in the correct bit.
*** ifconfig.c Sun Sep 25 18:05:11 1983
--- /a/satz/ifconfig.c Thu Jan 5 16:18:05 1984
***************
*** 1,3
#ifndef lint
static char sccsid[] = "@(#)ifconfig.c 4.3 (Berkeley) 9/16/83";
#endif
--- 1,4 -----
+
#ifndef lint
static char sccsid[] = "@(#)ifconfig.c 4.5 (Berkeley) 11/2/83";
#endif
***************
*** 1,5
#ifndef lint
! static char sccsid[] = "@(#)ifconfig.c 4.3 (Berkeley) 9/16/83";
#endif
#include <sys/types.h>
--- 1,6 -----
#ifndef lint
! static char sccsid[] = "@(#)ifconfig.c 4.5 (Berkeley) 11/2/83";
#endif
#include <sys/types.h>
***************
*** 17,23
struct ifreq ifr;
struct sockaddr_in sin = { AF_INET };
char name[30];
! int flags;
int s;
int setifflags(), setifaddr();
--- 18,24 -----
struct ifreq ifr;
struct sockaddr_in sin = { AF_INET };
char name[30];
! short flags;
int s;
int setifflags(), setifaddr();
***************
*** 24,30
struct cmd {
char *c_name;
! int c_parameter;
int (*c_func)();
} cmds[] = {
{ "up", IFF_UP, setifflags } ,
--- 25,31 -----
struct cmd {
char *c_name;
! short c_parameter;
int (*c_func)();
} cmds[] = {
{ "up", IFF_UP, setifflags } ,
***************
*** 31,38
{ "down", -IFF_UP, setifflags },
{ "trailers", -IFF_NOTRAILERS,setifflags },
{ "-trailers", IFF_NOTRAILERS, setifflags },
! { "arp", IFF_NOARP, setifflags },
! { "-arp", -IFF_NOARP, setifflags },
#ifdef notdef
#define EN_SWABIPS 0x100
{ "swabips", EN_SWABIPS, setifflags },
--- 32,41 -----
{ "down", -IFF_UP, setifflags },
{ "trailers", -IFF_NOTRAILERS,setifflags },
{ "-trailers", IFF_NOTRAILERS, setifflags },
! { "arp", -IFF_NOARP, setifflags },
! { "-arp", IFF_NOARP, setifflags },
! { "debug", IFF_DEBUG, setifflags },
! { "-debug", -IFF_DEBUG, setifflags },
#ifdef notdef
#define EN_SWABIPS 0x100
{ "swabips", EN_SWABIPS, setifflags },
***************
*** 87,93
/*ARGSUSED*/
setifaddr(addr, param)
char *addr;
! int param;
{
getaddr(addr, (struct sockaddr_in *)&ifr.ifr_addr);
--- 90,96 -----
/*ARGSUSED*/
setifaddr(addr, param)
char *addr;
! short param;
{
getaddr(addr, (struct sockaddr_in *)&ifr.ifr_addr);
***************
*** 98,104
setifflags(vname, value)
char *vname;
! int value;
{
if (value < 0) {
--- 101,107 -----
setifflags(vname, value)
char *vname;
! short value;
{
strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
***************
*** 101,106
int value;
{
if (value < 0) {
value = -value;
ifr.ifr_flags = (flags &~ value);
--- 104,115 -----
short value;
{
+ strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
+ if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&ifr) < 0) {
+ Perror("ioctl (SIOCGIFFLAGS)");
+ exit(1);
+ }
+ flags = ifr.ifr_flags;
if (value < 0) {
value = -value;
flags &= ~value;
***************
*** 103,109
if (value < 0) {
value = -value;
! ifr.ifr_flags = (flags &~ value);
} else
ifr.ifr_flags |= value;
strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
--- 112,118 -----
flags = ifr.ifr_flags;
if (value < 0) {
value = -value;
! flags &= ~value;
} else
flags |= value;
ifr.ifr_flags = flags;
***************
*** 105,111
value = -value;
ifr.ifr_flags = (flags &~ value);
} else
! ifr.ifr_flags |= value;
strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
if (ioctl(s, SIOCSIFFLAGS, (caddr_t)&ifr) < 0)
Perror(vname);
--- 114,121 -----
value = -value;
flags &= ~value;
} else
! flags |= value;
! ifr.ifr_flags = flags;
strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
if (ioctl(s, SIOCSIFFLAGS, (caddr_t)&ifr) < 0)
Perror(vname);
***************
*** 121,127
sin = (struct sockaddr_in *)&ifr.ifr_addr;
printf("%s: %s ", name, inet_ntoa(sin->sin_addr));
#define IFFBITS \
! "\020\1UP\2BROADCAST\3DEBUG\4ROUTE\5POINTOPOINT\6NOTRAILERS\7RUNNING"
printb("flags", flags, IFFBITS); putchar('\n');
}
--- 131,137 -----
sin = (struct sockaddr_in *)&ifr.ifr_addr;
printf("%s: %s ", name, inet_ntoa(sin->sin_addr));
#define IFFBITS \
! "\020\1UP\2BROADCAST\3DEBUG\4ROUTE\5POINTOPOINT\6NOTRAILERS\7RUNNING\10NOARP"
printb("flags", flags, IFFBITS); putchar('\n');
}
More information about the Comp.unix.wizards
mailing list