Deleted Added
sdiff udiff text old ( 13753 ) new ( 13940 )
full compact
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
76#define EON
77#include <netiso/iso.h>
78#include <netiso/iso_var.h>
79#endif
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
96struct iso_ifreq iso_ridreq;
97struct iso_aliasreq iso_addreq;
98#endif
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();
117int notealias();
118#ifdef ISO
119int setsnpaoffset(), setnsellength();
120#endif
121int notrailers();
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
151 { "snpaoffset", NEXTARG, setsnpaoffset },
152 { "nsellength", NEXTARG, setnsellength },
153#endif
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
176int iso_status(), iso_getaddr();
177#endif
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
199 { "iso", AF_ISO, iso_status, iso_getaddr,
200 SIOCDIFADDR_ISO, SIOCAIFADDR_ISO, C(iso_ridreq), C(iso_addreq) },
201#endif
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
426 if (af == AF_ISO)
427 adjust_nsellength();
428#endif
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
594setsnpaoffset(val)
595 char *val;
596{
597 iso_addreq.ifra_snpaoffset = atoi(val);
598}
599#endif
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
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
826
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
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