mirror of git://git.musl-libc.org/musl
fix if_indextoname error case
posix requires errno to be set to ENXIO if the interface does not exist. linux returns ENODEV instead so we handle this.
This commit is contained in:
parent
3848a99f65
commit
32055d52ca
|
@ -3,6 +3,7 @@
|
|||
#include <sys/socket.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include "syscall.h"
|
||||
|
||||
char *if_indextoname(unsigned index, char *name)
|
||||
|
@ -14,5 +15,9 @@ char *if_indextoname(unsigned index, char *name)
|
|||
ifr.ifr_ifindex = index;
|
||||
r = ioctl(fd, SIOCGIFNAME, &ifr);
|
||||
__syscall(SYS_close, fd);
|
||||
return r < 0 ? 0 : strncpy(name, ifr.ifr_name, IF_NAMESIZE);
|
||||
if (r < 0) {
|
||||
if (errno == ENODEV) errno = ENXIO;
|
||||
return 0;
|
||||
}
|
||||
return strncpy(name, ifr.ifr_name, IF_NAMESIZE);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue