INNER CODE UNIT · C
__attribute__
docker-easyconnect/docker-easyconnect · fake-hwaddr/fake-hwaddr.c:16
static void __attribute__((constructor)) init(void) {
glibc_ioctl = dlsym(RTLD_NEXT, "ioctl");
char *fake_hwaddr = getenv("FAKE_HWADDR");
if (fake_hwaddr) {
if (sscanf(fake_hwaddr, "%2hhx:%2hhx:%2hhx:%2hhx:%2hhx:%2hhx", hwaddr,
hwaddr + 1, hwaddr + 2, hwaddr + 3, hwaddr + 4,
hwaddr + 5) == 6 ||
sscanf(fake_hwaddr, "%2hhx-%2hhx-%2hhx-%2hhx-%2hhx-%2hhx", hwaddr,
hwaddr + 1, hwaddr + 2, hwaddr + 3, hwaddr + 4, hwaddr + 5) == 6)
no_fake_hwaddr = 0;
else
printf("FAKE_HWADDR format error!\n");
}
}
int ioctl(int fd, unsigned long request, void *arg) {
if (request != SIOCGIFHWADDR || no_fake_hwaddr)
return glibc_ioctl(fd, request, arg);