diff options
author | cmetz <cmetz@cvs.openbsd.org> | 1999-06-23 22:26:04 +0000 |
---|---|---|
committer | cmetz <cmetz@cvs.openbsd.org> | 1999-06-23 22:26:04 +0000 |
commit | 6cfc04cbf20bf549cb3449d6e97a6cdc0e25e3b4 (patch) | |
tree | 9c20eec8e97dc271f61d5006ddd4ed75b37ecd69 /lib/libc/net/if_indextoname.c | |
parent | f56f53c383ffaedfe8b92e03e3ae6a221477ad1d (diff) |
Removed portability ifdefs and calls to nonstandard back-end.
Diffstat (limited to 'lib/libc/net/if_indextoname.c')
-rw-r--r-- | lib/libc/net/if_indextoname.c | 60 |
1 files changed, 10 insertions, 50 deletions
diff --git a/lib/libc/net/if_indextoname.c b/lib/libc/net/if_indextoname.c index ff7fcada915..1301224444c 100644 --- a/lib/libc/net/if_indextoname.c +++ b/lib/libc/net/if_indextoname.c @@ -58,33 +58,6 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Craig Metz and - * by other contributors. - * 4. Neither the name of the author nor the names of contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. */ #include <sys/types.h> @@ -92,9 +65,7 @@ #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> -#ifdef AF_LINK #include <net/if_dl.h> -#endif /* AF_LINK */ #include <errno.h> static char __name[IFNAMSIZ + 1]; @@ -102,16 +73,12 @@ static char __name[IFNAMSIZ + 1]; char *if_indextoname(unsigned int index, char *name) { int i, fd; -#ifdef SIOCGIFNAME - struct ifreq ifreq; -#else /* SIOCGIFNAME */ struct ifconf ifconf; void *p; int len; char lastname[IFNAMSIZ + 1]; char iname[IFNAMSIZ + 1]; char *retname = NULL; -#endif /* SIOCGIFNAME */ if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) return 0; @@ -119,20 +86,16 @@ char *if_indextoname(unsigned int index, char *name) if (!name) name = __name; -#ifdef SIOCGIFNAME - ifreq.ifr_ifindex = index; - i = ioctl(fd, SIOCGIFNAME, &ifreq); - close(fd); - if (i) - return NULL; - - strcpy(name, ifreq.ifr_name); - return name; -#else /* SIOCGIFNAME */ - if (__siocgifconf(fd, &ifconf)) { - close(fd); - return NULL; - }; + ifconf.ifc_len = 0; + ifconf.ifc_buf = 0; + if (ioctl(fd, SIOCGIFCONF, (void *)ifconf)) + goto ret; + if (ifconf->ifc_len < IFNAMSIZ) + goto ret; + if (!(ifconf->ifc_buf = malloc(ifconf->ifc_len))) + goto ret; + if (ioctl(fd, SIOCGIFCONF, (void *)ifconf)) + goto ret; i = 0; p = ifconf.ifc_buf; @@ -153,13 +116,11 @@ char *if_indextoname(unsigned int index, char *name) len -= IFNAMSIZ; p += IFNAMSIZ; -#ifdef AF_LINK if (((struct sockaddr *)p)->sa_family == AF_LINK) if (((struct sockaddr_dl *)p)->sdl_index == index) { strcpy(retname = name, lastname); goto ret; }; -#endif /* AF_LINK */ if (len < SA_LEN((struct sockaddr *)p)) goto ret; @@ -177,5 +138,4 @@ ret: close(fd); free(ifconf.ifc_buf); return retname; -#endif /* SIOCGIFNAME */ }; |