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#define EON
76#include <netiso/iso.h>
77#include <netiso/iso_var.h>
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;
93struct iso_ifreq iso_ridreq;
94struct iso_aliasreq iso_addreq;
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();
113int notealias(), setsnpaoffset(), setnsellength(), 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 },
142 { "snpaoffset", NEXTARG, setsnpaoffset },
143 { "nsellength", NEXTARG, setnsellength },
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();
165int iso_status(), iso_getaddr();
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) },
186 { "iso", AF_ISO, iso_status, iso_getaddr,
187 SIOCDIFADDR_ISO, SIOCAIFADDR_ISO, C(iso_ridreq), C(iso_addreq) },
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 }
411 if (af == AF_ISO)
412 adjust_nsellength();
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
577setsnpaoffset(val)
578 char *val;
579{
580 iso_addreq.ifra_snpaoffset = atoi(val);
581}
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
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}
806
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
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}