Deleted Added
full compact
ifconfig.c (13753) ifconfig.c (13940)
1/*
2 * Copyright (c) 1983, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 58 unchanged lines hidden (view full) ---

67#define IPTUNNEL
68#include <netipx/ipx.h>
69#include <netipx/ipx_if.h>
70
71#define NSIP
72#include <netns/ns.h>
73#include <netns/ns_if.h>
74
1/*
2 * Copyright (c) 1983, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 58 unchanged lines hidden (view full) ---

67#define IPTUNNEL
68#include <netipx/ipx.h>
69#include <netipx/ipx_if.h>
70
71#define NSIP
72#include <netns/ns.h>
73#include <netns/ns_if.h>
74
75#ifdef ISO
75#define EON
76#include <netiso/iso.h>
77#include <netiso/iso_var.h>
76#define EON
77#include <netiso/iso.h>
78#include <netiso/iso_var.h>
79#endif
78#include <sys/protosw.h>
79
80#include <ctype.h>
81#include <err.h>
82#include <errno.h>
83#include <stdio.h>
84#include <stdlib.h>
85#include <string.h>
86#include <unistd.h>
87#include <nlist.h>
88#include <kvm.h>
89#include <fcntl.h>
90
91struct ifreq ifr, ridreq;
92struct ifaliasreq addreq;
80#include <sys/protosw.h>
81
82#include <ctype.h>
83#include <err.h>
84#include <errno.h>
85#include <stdio.h>
86#include <stdlib.h>
87#include <string.h>
88#include <unistd.h>
89#include <nlist.h>
90#include <kvm.h>
91#include <fcntl.h>
92
93struct ifreq ifr, ridreq;
94struct ifaliasreq addreq;
95#ifdef ISO
93struct iso_ifreq iso_ridreq;
94struct iso_aliasreq iso_addreq;
96struct iso_ifreq iso_ridreq;
97struct iso_aliasreq iso_addreq;
98#endif
95struct sockaddr_in netmask;
96
97char name[32];
98int flags;
99int metric;
100int mtu;
101int nsellength = 1;
102int setaddr;
103int setipdst;
104int doalias;
105int clearaddr;
106int newaddr = 1;
107int s;
108kvm_t *kvmd;
109extern int errno;
110
111int setifflags(), setifaddr(), setifdstaddr(), setifnetmask();
112int setifmetric(), setifmtu(), setifbroadaddr(), setifipdst();
99struct sockaddr_in netmask;
100
101char name[32];
102int flags;
103int metric;
104int mtu;
105int nsellength = 1;
106int setaddr;
107int setipdst;
108int doalias;
109int clearaddr;
110int newaddr = 1;
111int s;
112kvm_t *kvmd;
113extern int errno;
114
115int setifflags(), setifaddr(), setifdstaddr(), setifnetmask();
116int setifmetric(), setifmtu(), setifbroadaddr(), setifipdst();
113int notealias(), setsnpaoffset(), setnsellength(), notrailers();
117int notealias();
118#ifdef ISO
119int setsnpaoffset(), setnsellength();
120#endif
121int notrailers();
114
115#define NEXTARG 0xffffff
116
117struct cmd {
118 char *c_name;
119 int c_parameter; /* NEXTARG means next argv */
120 int (*c_func)();
121} cmds[] = {

--- 12 unchanged lines hidden (view full) ---

134#define EN_SWABIPS 0x1000
135 { "swabips", EN_SWABIPS, setifflags },
136 { "-swabips", -EN_SWABIPS, setifflags },
137#endif
138 { "netmask", NEXTARG, setifnetmask },
139 { "metric", NEXTARG, setifmetric },
140 { "broadcast", NEXTARG, setifbroadaddr },
141 { "ipdst", NEXTARG, setifipdst },
122
123#define NEXTARG 0xffffff
124
125struct cmd {
126 char *c_name;
127 int c_parameter; /* NEXTARG means next argv */
128 int (*c_func)();
129} cmds[] = {

--- 12 unchanged lines hidden (view full) ---

142#define EN_SWABIPS 0x1000
143 { "swabips", EN_SWABIPS, setifflags },
144 { "-swabips", -EN_SWABIPS, setifflags },
145#endif
146 { "netmask", NEXTARG, setifnetmask },
147 { "metric", NEXTARG, setifmetric },
148 { "broadcast", NEXTARG, setifbroadaddr },
149 { "ipdst", NEXTARG, setifipdst },
150#ifdef ISO
142 { "snpaoffset", NEXTARG, setsnpaoffset },
143 { "nsellength", NEXTARG, setnsellength },
151 { "snpaoffset", NEXTARG, setsnpaoffset },
152 { "nsellength", NEXTARG, setnsellength },
153#endif
144 { "link0", IFF_LINK0, setifflags },
145 { "-link0", -IFF_LINK0, setifflags },
146 { "link1", IFF_LINK1, setifflags },
147 { "-link1", -IFF_LINK1, setifflags },
148 { "link2", IFF_LINK2, setifflags },
149 { "-link2", -IFF_LINK2, setifflags },
150 { "normal", -IFF_LINK0, setifflags },
151 { "compress", IFF_LINK0, setifflags },

--- 5 unchanged lines hidden (view full) ---

157
158/*
159 * XNS support liberally adapted from code written at the University of
160 * Maryland principally by James O'Toole and Chris Torek.
161 */
162int in_status(), in_getaddr();
163int ipx_status(), ipx_getaddr();
164int xns_status(), xns_getaddr();
154 { "link0", IFF_LINK0, setifflags },
155 { "-link0", -IFF_LINK0, setifflags },
156 { "link1", IFF_LINK1, setifflags },
157 { "-link1", -IFF_LINK1, setifflags },
158 { "link2", IFF_LINK2, setifflags },
159 { "-link2", -IFF_LINK2, setifflags },
160 { "normal", -IFF_LINK0, setifflags },
161 { "compress", IFF_LINK0, setifflags },

--- 5 unchanged lines hidden (view full) ---

167
168/*
169 * XNS support liberally adapted from code written at the University of
170 * Maryland principally by James O'Toole and Chris Torek.
171 */
172int in_status(), in_getaddr();
173int ipx_status(), ipx_getaddr();
174int xns_status(), xns_getaddr();
175#ifdef ISO
165int iso_status(), iso_getaddr();
176int iso_status(), iso_getaddr();
177#endif
166int ether_status();
167
168/* Known address families */
169struct afswtch {
170 char *af_name;
171 short af_af;
172 int (*af_status)();
173 int (*af_getaddr)();

--- 4 unchanged lines hidden (view full) ---

178} afs[] = {
179#define C(x) ((caddr_t) &x)
180 { "inet", AF_INET, in_status, in_getaddr,
181 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
182 { "ipx", AF_IPX, ipx_status, ipx_getaddr,
183 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
184 { "ns", AF_NS, xns_status, xns_getaddr,
185 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
178int ether_status();
179
180/* Known address families */
181struct afswtch {
182 char *af_name;
183 short af_af;
184 int (*af_status)();
185 int (*af_getaddr)();

--- 4 unchanged lines hidden (view full) ---

190} afs[] = {
191#define C(x) ((caddr_t) &x)
192 { "inet", AF_INET, in_status, in_getaddr,
193 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
194 { "ipx", AF_IPX, ipx_status, ipx_getaddr,
195 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
196 { "ns", AF_NS, xns_status, xns_getaddr,
197 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
198#ifdef ISO
186 { "iso", AF_ISO, iso_status, iso_getaddr,
187 SIOCDIFADDR_ISO, SIOCAIFADDR_ISO, C(iso_ridreq), C(iso_addreq) },
199 { "iso", AF_ISO, iso_status, iso_getaddr,
200 SIOCDIFADDR_ISO, SIOCAIFADDR_ISO, C(iso_ridreq), C(iso_addreq) },
201#endif
188 { "ether", AF_INET, ether_status, NULL }, /* XXX not real!! */
189 { 0, 0, 0, 0 }
190};
191
192struct afswtch *afp; /*the address family being set or asked about*/
193
194void rt_xaddrs __P((caddr_t, caddr_t, struct rt_addrinfo *));
195int ifconfig __P((int argc, char *argv[], int af, struct afswtch *rafp));

--- 207 unchanged lines hidden (view full) ---

403 p->c_name);
404 (*p->c_func)(argv[1]);
405 argc--, argv++;
406 } else
407 (*p->c_func)(*argv, p->c_parameter);
408 }
409 argc--, argv++;
410 }
202 { "ether", AF_INET, ether_status, NULL }, /* XXX not real!! */
203 { 0, 0, 0, 0 }
204};
205
206struct afswtch *afp; /*the address family being set or asked about*/
207
208void rt_xaddrs __P((caddr_t, caddr_t, struct rt_addrinfo *));
209int ifconfig __P((int argc, char *argv[], int af, struct afswtch *rafp));

--- 207 unchanged lines hidden (view full) ---

417 p->c_name);
418 (*p->c_func)(argv[1]);
419 argc--, argv++;
420 } else
421 (*p->c_func)(*argv, p->c_parameter);
422 }
423 argc--, argv++;
424 }
425#ifdef ISO
411 if (af == AF_ISO)
412 adjust_nsellength();
426 if (af == AF_ISO)
427 adjust_nsellength();
428#endif
413 if (setipdst && af==AF_IPX) {
414 struct ipxip_req rq;
415 int size = sizeof(rq);
416
417 rq.rq_ipx = addreq.ifra_addr;
418 rq.rq_ip = addreq.ifra_dstaddr;
419
420 if (setsockopt(s, 0, SO_IPXIP_ROUTE, &rq, size) < 0)

--- 148 unchanged lines hidden (view full) ---

569 char *val;
570{
571 strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
572 ifr.ifr_mtu = atoi(val);
573 if (ioctl(s, SIOCSIFMTU, (caddr_t)&ifr) < 0)
574 perror("ioctl (set mtu)");
575}
576
429 if (setipdst && af==AF_IPX) {
430 struct ipxip_req rq;
431 int size = sizeof(rq);
432
433 rq.rq_ipx = addreq.ifra_addr;
434 rq.rq_ip = addreq.ifra_dstaddr;
435
436 if (setsockopt(s, 0, SO_IPXIP_ROUTE, &rq, size) < 0)

--- 148 unchanged lines hidden (view full) ---

585 char *val;
586{
587 strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
588 ifr.ifr_mtu = atoi(val);
589 if (ioctl(s, SIOCSIFMTU, (caddr_t)&ifr) < 0)
590 perror("ioctl (set mtu)");
591}
592
593#ifdef ISO
577setsnpaoffset(val)
578 char *val;
579{
580 iso_addreq.ifra_snpaoffset = atoi(val);
581}
594setsnpaoffset(val)
595 char *val;
596{
597 iso_addreq.ifra_snpaoffset = atoi(val);
598}
599#endif
582
583#define IFFBITS \
584"\020\1UP\2BROADCAST\3DEBUG\4LOOPBACK\5POINTOPOINT\6NOTRAILERS\7RUNNING\10NOARP\
585\11PROMISC\12ALLMULTI\13OACTIVE\14SIMPLEX\15LINK0\16LINK1\17LINK2\20MULTICAST"
586
587/*
588 * Print the status of the interface. If an address family was
589 * specified, show it and it only; otherwise, show them all.

--- 169 unchanged lines hidden (view full) ---

759 if (!sns)
760 sns = &null_sns;
761 printf("--> %s ", ns_ntoa(sns->sns_addr));
762 }
763
764 putchar('\n');
765}
766
600
601#define IFFBITS \
602"\020\1UP\2BROADCAST\3DEBUG\4LOOPBACK\5POINTOPOINT\6NOTRAILERS\7RUNNING\10NOARP\
603\11PROMISC\12ALLMULTI\13OACTIVE\14SIMPLEX\15LINK0\16LINK1\17LINK2\20MULTICAST"
604
605/*
606 * Print the status of the interface. If an address family was
607 * specified, show it and it only; otherwise, show them all.

--- 169 unchanged lines hidden (view full) ---

777 if (!sns)
778 sns = &null_sns;
779 printf("--> %s ", ns_ntoa(sns->sns_addr));
780 }
781
782 putchar('\n');
783}
784
785#ifdef ISO
767iso_status(force)
768 int force;
769{
770 struct sockaddr_iso *siso, null_siso;
771
772 close(s);
773 s = socket(AF_ISO, SOCK_DGRAM, 0);
774 if (s < 0) {

--- 23 unchanged lines hidden (view full) ---

798 siso = (struct sockaddr_iso *)info.rti_info[RTAX_BRD];
799 if (!siso)
800 siso = &null_siso;
801 printf("--> %s ", iso_ntoa(&siso->siso_addr));
802 }
803
804 putchar('\n');
805}
786iso_status(force)
787 int force;
788{
789 struct sockaddr_iso *siso, null_siso;
790
791 close(s);
792 s = socket(AF_ISO, SOCK_DGRAM, 0);
793 if (s < 0) {

--- 23 unchanged lines hidden (view full) ---

817 siso = (struct sockaddr_iso *)info.rti_info[RTAX_BRD];
818 if (!siso)
819 siso = &null_siso;
820 printf("--> %s ", iso_ntoa(&siso->siso_addr));
821 }
822
823 putchar('\n');
824}
825#endif
806
826
807
808ether_status()
809{
810 char *cp;
811 int n;
812
813 cp = (char *)LLADDR(sdl);
814 if ((n = sdl->sdl_alen) > 0) {
815 if (sdl->sdl_type == IFT_ETHER)

--- 119 unchanged lines hidden (view full) ---

935
936 sns->sns_family = AF_NS;
937 sns->sns_len = sizeof(*sns);
938 sns->sns_addr = ns_addr(addr);
939 if (which == MASK)
940 printf("Attempt to set XNS netmask will be ineffectual\n");
941}
942
827ether_status()
828{
829 char *cp;
830 int n;
831
832 cp = (char *)LLADDR(sdl);
833 if ((n = sdl->sdl_alen) > 0) {
834 if (sdl->sdl_type == IFT_ETHER)

--- 119 unchanged lines hidden (view full) ---

954
955 sns->sns_family = AF_NS;
956 sns->sns_len = sizeof(*sns);
957 sns->sns_addr = ns_addr(addr);
958 if (which == MASK)
959 printf("Attempt to set XNS netmask will be ineffectual\n");
960}
961
962#ifdef ISO
943#define SISO(x) ((struct sockaddr_iso *) &(x))
944struct sockaddr_iso *sisotab[] = {
945SISO(iso_ridreq.ifr_Addr), SISO(iso_addreq.ifra_addr),
946SISO(iso_addreq.ifra_mask), SISO(iso_addreq.ifra_dstaddr)};
947
948iso_getaddr(addr, which)
949char *addr;
950{

--- 29 unchanged lines hidden (view full) ---

980}
981
982adjust_nsellength()
983{
984 fixnsel(sisotab[RIDADDR]);
985 fixnsel(sisotab[ADDR]);
986 fixnsel(sisotab[DSTADDR]);
987}
963#define SISO(x) ((struct sockaddr_iso *) &(x))
964struct sockaddr_iso *sisotab[] = {
965SISO(iso_ridreq.ifr_Addr), SISO(iso_addreq.ifra_addr),
966SISO(iso_addreq.ifra_mask), SISO(iso_addreq.ifra_dstaddr)};
967
968iso_getaddr(addr, which)
969char *addr;
970{

--- 29 unchanged lines hidden (view full) ---

1000}
1001
1002adjust_nsellength()
1003{
1004 fixnsel(sisotab[RIDADDR]);
1005 fixnsel(sisotab[ADDR]);
1006 fixnsel(sisotab[DSTADDR]);
1007}
1008#endif