+iso_status(force)
+ int force;
+{
+ struct sockaddr_iso *siso;
+ struct iso_ifreq ifr;
+
+ close(s);
+ s = socket(AF_ISO, SOCK_DGRAM, 0);
+ if (s < 0) {
+ if (errno == EPROTONOSUPPORT)
+ return;
+ perror("ifconfig: socket");
+ exit(1);
+ }
+ if (ioctl(s, SIOCGIFADDR, (caddr_t)&ifr) < 0) {
+ if (errno == EADDRNOTAVAIL || errno == EAFNOSUPPORT) {
+ if (!force)
+ return;
+ bzero((char *)&ifr.ifr_Addr, sizeof(ifr.ifr_Addr));
+ } else
+ perror("ioctl (SIOCGIFADDR)");
+ }
+ strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
+ siso = &ifr.ifr_Addr;
+ printf("\tiso %s ", iso_ntoa(siso->siso_addr));
+ if (ioctl(s, SIOCGIFNETMASK, (caddr_t)&ifr) < 0) {
+ if (errno != EADDRNOTAVAIL)
+ perror("ioctl (SIOCGIFNETMASK)");
+ } else {
+ printf("\n netmask %s ", iso_ntoa(siso->siso_addr));
+ }
+ if (flags & IFF_POINTOPOINT) {
+ if (ioctl(s, SIOCGIFDSTADDR, (caddr_t)&ifr) < 0) {
+ if (errno == EADDRNOTAVAIL)
+ bzero((char *)&ifr.ifr_Addr, sizeof(ifr.ifr_Addr));
+ else
+ Perror("ioctl (SIOCGIFDSTADDR)");
+ }
+ strncpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
+ siso = &ifr.ifr_Addr;
+ printf("--> %s ", iso_ntoa(siso->siso_addr));
+ }
+ putchar('\n');
+}
+