/*
 *
 * Copyright (C) 1998  Kenneth Albanowski <kjahds@kjahds.com>,
 *                     The Silver Hammer Group, Ltd.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 */
#define __FORCE_GLIBC
#include <features.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <unistd.h>

unsigned int if_nametoindex(const char* blub) {
	struct ifreq ifr;
	int fd;
	char *tmp;
	int len=sizeof(ifr.ifr_name);

#ifdef __UCLIBC_HAS_IPV6__
	fd=socket(AF_INET6,SOCK_DGRAM,0);
	if (fd<0)
#endif /* __UCLIBC_HAS_IPV6__ */
		fd=socket(AF_INET,SOCK_DGRAM,0);

	for (tmp=ifr.ifr_name; len>0; --len) {
		if ((*tmp++ = *blub++)==0) break;
	}

	if (ioctl(fd,SIOCGIFINDEX,&ifr)==0) {
		close(fd);
		return ifr.ifr_ifindex;
	}
	close(fd);
	return 0;
}