Deleted Added
full compact
ifconfig.c (17171) ifconfig.c (17254)
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

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

96
97struct ifreq ifr, ridreq;
98struct ifaliasreq addreq;
99#ifdef ISO
100struct iso_ifreq iso_ridreq;
101struct iso_aliasreq iso_addreq;
102#endif
103struct sockaddr_in netmask;
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

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

96
97struct ifreq ifr, ridreq;
98struct ifaliasreq addreq;
99#ifdef ISO
100struct iso_ifreq iso_ridreq;
101struct iso_aliasreq iso_addreq;
102#endif
103struct sockaddr_in netmask;
104struct netrange at_nr; /* AppleTalk net range */
104
105char name[32];
106int flags;
107int metric;
108int mtu;
109#ifdef ISO
110int nsellength = 1;
111#endif
112int setaddr;
113int setipdst;
114int doalias;
115int clearaddr;
116int newaddr = 1;
117int s;
118kvm_t *kvmd;
119extern int errno;
120
121int setifflags(), setifaddr(), setifdstaddr(), setifnetmask();
122int setifmetric(), setifmtu(), setifbroadaddr(), setifipdst();
105
106char name[32];
107int flags;
108int metric;
109int mtu;
110#ifdef ISO
111int nsellength = 1;
112#endif
113int setaddr;
114int setipdst;
115int doalias;
116int clearaddr;
117int newaddr = 1;
118int s;
119kvm_t *kvmd;
120extern int errno;
121
122int setifflags(), setifaddr(), setifdstaddr(), setifnetmask();
123int setifmetric(), setifmtu(), setifbroadaddr(), setifipdst();
124int setatrange(), setatphase(), checkatrange();
123int notealias();
124#ifdef ISO
125int setsnpaoffset(), setnsellength();
126#endif
127int notrailers();
128
129#define NEXTARG 0xffffff
130

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

145 { "-alias", -IFF_UP, notealias },
146 { "delete", -IFF_UP, notealias },
147#ifdef notdef
148#define EN_SWABIPS 0x1000
149 { "swabips", EN_SWABIPS, setifflags },
150 { "-swabips", -EN_SWABIPS, setifflags },
151#endif
152 { "netmask", NEXTARG, setifnetmask },
125int notealias();
126#ifdef ISO
127int setsnpaoffset(), setnsellength();
128#endif
129int notrailers();
130
131#define NEXTARG 0xffffff
132

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

147 { "-alias", -IFF_UP, notealias },
148 { "delete", -IFF_UP, notealias },
149#ifdef notdef
150#define EN_SWABIPS 0x1000
151 { "swabips", EN_SWABIPS, setifflags },
152 { "-swabips", -EN_SWABIPS, setifflags },
153#endif
154 { "netmask", NEXTARG, setifnetmask },
155 { "range", NEXTARG, setatrange },
156 { "phase", NEXTARG, setatphase },
153 { "metric", NEXTARG, setifmetric },
154 { "broadcast", NEXTARG, setifbroadaddr },
155 { "ipdst", NEXTARG, setifipdst },
156#ifdef ISO
157 { "snpaoffset", NEXTARG, setsnpaoffset },
158 { "nsellength", NEXTARG, setnsellength },
159#endif
160 { "link0", IFF_LINK0, setifflags },

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

198 caddr_t af_addreq;
199} afs[] = {
200#define C(x) ((caddr_t) &x)
201 { "inet", AF_INET, in_status, in_getaddr,
202 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
203 { "ipx", AF_IPX, ipx_status, ipx_getaddr,
204 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
205 { "atalk", AF_APPLETALK, at_status, at_getaddr,
157 { "metric", NEXTARG, setifmetric },
158 { "broadcast", NEXTARG, setifbroadaddr },
159 { "ipdst", NEXTARG, setifipdst },
160#ifdef ISO
161 { "snpaoffset", NEXTARG, setsnpaoffset },
162 { "nsellength", NEXTARG, setnsellength },
163#endif
164 { "link0", IFF_LINK0, setifflags },

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

202 caddr_t af_addreq;
203} afs[] = {
204#define C(x) ((caddr_t) &x)
205 { "inet", AF_INET, in_status, in_getaddr,
206 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
207 { "ipx", AF_IPX, ipx_status, ipx_getaddr,
208 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
209 { "atalk", AF_APPLETALK, at_status, at_getaddr,
206 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
210 SIOCDIFADDR, SIOCAIFADDR, C(addreq), C(addreq) },
207#ifdef NS
208 { "ns", AF_NS, xns_status, xns_getaddr,
209 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
210#endif
211#ifdef ISO
212 { "iso", AF_ISO, iso_status, iso_getaddr,
213 SIOCDIFADDR_ISO, SIOCAIFADDR_ISO, C(iso_ridreq), C(iso_addreq) },
214#endif

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

444 int size = sizeof(rq);
445
446 rq.rq_ipx = addreq.ifra_addr;
447 rq.rq_ip = addreq.ifra_dstaddr;
448
449 if (setsockopt(s, 0, SO_IPXIP_ROUTE, &rq, size) < 0)
450 Perror("Encapsulation Routing");
451 }
211#ifdef NS
212 { "ns", AF_NS, xns_status, xns_getaddr,
213 SIOCDIFADDR, SIOCAIFADDR, C(ridreq), C(addreq) },
214#endif
215#ifdef ISO
216 { "iso", AF_ISO, iso_status, iso_getaddr,
217 SIOCDIFADDR_ISO, SIOCAIFADDR_ISO, C(iso_ridreq), C(iso_addreq) },
218#endif

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

448 int size = sizeof(rq);
449
450 rq.rq_ipx = addreq.ifra_addr;
451 rq.rq_ip = addreq.ifra_dstaddr;
452
453 if (setsockopt(s, 0, SO_IPXIP_ROUTE, &rq, size) < 0)
454 Perror("Encapsulation Routing");
455 }
456 if (af == AF_APPLETALK)
457 checkatrange((struct sockaddr_at *) &addreq.ifra_addr);
452#ifdef NS
453 if (setipdst && af==AF_NS) {
454 struct nsip_req rq;
455 int size = sizeof(rq);
456
457 rq.rq_ns = addreq.ifra_addr;
458 rq.rq_ip = addreq.ifra_dstaddr;
459

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

762 putchar('\n');
763
764}
765
766at_status(force)
767 int force;
768{
769 struct sockaddr_at *sat, null_sat;
458#ifdef NS
459 if (setipdst && af==AF_NS) {
460 struct nsip_req rq;
461 int size = sizeof(rq);
462
463 rq.rq_ns = addreq.ifra_addr;
464 rq.rq_ip = addreq.ifra_dstaddr;
465

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

768 putchar('\n');
769
770}
771
772at_status(force)
773 int force;
774{
775 struct sockaddr_at *sat, null_sat;
776 struct netrange *nr;
770
771 memset(&null_sat, 0, sizeof(null_sat));
772
773 sat = (struct sockaddr_at *)info.rti_info[RTAX_IFA];
774 if (!sat || sat->sat_family != AF_APPLETALK) {
775 if (!force)
776 return;
777
778 memset(&null_sat, 0, sizeof(null_sat));
779
780 sat = (struct sockaddr_at *)info.rti_info[RTAX_IFA];
781 if (!sat || sat->sat_family != AF_APPLETALK) {
782 if (!force)
783 return;
777 /* warnx("%s has no AF_APPLETALK IFA address!", name); */
778 sat = &null_sat;
779 }
784 sat = &null_sat;
785 }
780 printf("\tatalk %d.%d ",
781 ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node);
782
786 nr = (struct netrange *) &sat->sat_zero;
787 printf("\tatalk %d.%d range %d-%d phase %d",
788 ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node,
789 ntohs(nr->nr_firstnet), ntohs(nr->nr_lastnet), nr->nr_phase);
783 if (flags & IFF_POINTOPOINT) {
784 /* note RTAX_BRD overlap with IFF_BROADCAST */
785 sat = (struct sockaddr_at *)info.rti_info[RTAX_BRD];
786 if (!sat)
787 sat = &null_sat;
790 if (flags & IFF_POINTOPOINT) {
791 /* note RTAX_BRD overlap with IFF_BROADCAST */
792 sat = (struct sockaddr_at *)info.rti_info[RTAX_BRD];
793 if (!sat)
794 sat = &null_sat;
788 printf("--> %d.%d ",
795 printf("--> %d.%d",
789 ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node);
790 }
796 ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node);
797 }
798 if (flags & IFF_BROADCAST) {
799 /* note RTAX_BRD overlap with IFF_POINTOPOINT */
800 sat = (struct sockaddr_at *)info.rti_info[RTAX_BRD];
801 if (sat)
802 printf(" broadcast %d.%d",
803 ntohs(sat->sat_addr.s_net),
804 sat->sat_addr.s_node);
805 }
791
792 putchar('\n');
793}
794
795#ifdef NS
796xns_status(force)
797 int force;
798{

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

982
983 sipx->sipx_family = AF_IPX;
984 sipx->sipx_len = sizeof(*sipx);
985 sipx->sipx_addr = ipx_addr(addr);
986 if (which == MASK)
987 printf("Attempt to set IPX netmask will be ineffectual\n");
988}
989
806
807 putchar('\n');
808}
809
810#ifdef NS
811xns_status(force)
812 int force;
813{

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

997
998 sipx->sipx_family = AF_IPX;
999 sipx->sipx_len = sizeof(*sipx);
1000 sipx->sipx_addr = ipx_addr(addr);
1001 if (which == MASK)
1002 printf("Attempt to set IPX netmask will be ineffectual\n");
1003}
1004
990#define SATALK(x) ((struct sockaddr_at *) &(x))
991struct sockaddr_at *atalktab[] = {
992SATALK(ridreq.ifr_addr), SATALK(addreq.ifra_addr),
993SATALK(addreq.ifra_mask), SATALK(addreq.ifra_broadaddr)};
994
995at_getaddr(addr, which)
996char *addr;
1005at_getaddr(char *addr, int which)
997{
1006{
998 struct sockaddr_at *sat = atalktab[which];
1007 struct sockaddr_at *sat = (struct sockaddr_at *) &addreq.ifra_addr;
999 u_int net, node;
1000
1008 u_int net, node;
1009
1001 sat->sat_family = AF_IPX;
1010 sat->sat_family = AF_APPLETALK;
1002 sat->sat_len = sizeof(*sat);
1011 sat->sat_len = sizeof(*sat);
1012 if (which == MASK)
1013 errx(1, "AppleTalk does not use netmasks\n");
1003 if (sscanf(addr, "%u.%u", &net, &node) != 2
1014 if (sscanf(addr, "%u.%u", &net, &node) != 2
1004 /* || net == 0 || net > 0xffff || node == 0 || node > 0xfe */ )
1005 errx(1, "%s: bad value", addr);
1015 || net == 0 || net > 0xffff || node == 0 || node > 0xfe)
1016 errx(1, "%s: illegal address", addr);
1006 sat->sat_addr.s_net = htons(net);
1007 sat->sat_addr.s_node = node;
1017 sat->sat_addr.s_net = htons(net);
1018 sat->sat_addr.s_node = node;
1008 if (which == MASK)
1009 printf("Attempt to set AppleTalk netmask"
1010 " will be ineffectual\n");
1011}
1012
1019}
1020
1021setatrange(char *range)
1022{
1023 u_short first = 123, last = 123;
1024
1025 if (sscanf(range, "%hu-%hu", &first, &last) != 2
1026 || first == 0 || first > 0xffff
1027 || last == 0 || last > 0xffff || first > last)
1028 errx(1, "%s: illegal net range: %u-%u", range, first, last);
1029 at_nr.nr_firstnet = htons(first);
1030 at_nr.nr_lastnet = htons(last);
1031}
1032
1033setatphase(char *phase)
1034{
1035 if (!strcmp(phase, "1"))
1036 at_nr.nr_phase = 1;
1037 else if (!strcmp(phase, "2"))
1038 at_nr.nr_phase = 2;
1039 else
1040 errx(1, "%s: illegal phase", phase);
1041}
1042
1043checkatrange(struct sockaddr_at *sat)
1044{
1045 if (at_nr.nr_phase == 0)
1046 at_nr.nr_phase = 2; /* Default phase 2 */
1047 if (at_nr.nr_firstnet == 0)
1048 at_nr.nr_firstnet = /* Default range of one */
1049 at_nr.nr_lastnet = sat->sat_addr.s_net;
1050printf("\tatalk %d.%d range %d-%d phase %d\n",
1051 ntohs(sat->sat_addr.s_net), sat->sat_addr.s_node,
1052 ntohs(at_nr.nr_firstnet), ntohs(at_nr.nr_lastnet), at_nr.nr_phase);
1053 if ((u_short) ntohs(at_nr.nr_firstnet) >
1054 (u_short) ntohs(sat->sat_addr.s_net)
1055 || (u_short) ntohs(at_nr.nr_lastnet) <
1056 (u_short) ntohs(sat->sat_addr.s_net))
1057 errx(1, "AppleTalk address is not in range");
1058 *((struct netrange *) &sat->sat_zero) = at_nr;
1059}
1060
1013#ifdef NS
1014#define SNS(x) ((struct sockaddr_ns *) &(x))
1015struct sockaddr_ns *snstab[] = {
1016SNS(ridreq.ifr_addr), SNS(addreq.ifra_addr),
1017SNS(addreq.ifra_mask), SNS(addreq.ifra_broadaddr)};
1018
1019xns_getaddr(addr, which)
1020char *addr;

--- 59 unchanged lines hidden ---
1061#ifdef NS
1062#define SNS(x) ((struct sockaddr_ns *) &(x))
1063struct sockaddr_ns *snstab[] = {
1064SNS(ridreq.ifr_addr), SNS(addreq.ifra_addr),
1065SNS(addreq.ifra_mask), SNS(addreq.ifra_broadaddr)};
1066
1067xns_getaddr(addr, which)
1068char *addr;

--- 59 unchanged lines hidden ---