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 |
|