5 * Copyright (C) 2007-2008 Intel Corporation. All rights reserved.
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
31 #include <sys/ioctl.h>
32 #include <sys/socket.h>
34 #include <net/ethernet.h>
38 char *inet_index2name(int index)
46 sk = socket(PF_INET, SOCK_DGRAM, 0);
50 memset(&ifr, 0, sizeof(ifr));
51 ifr.ifr_ifindex = index;
53 err = ioctl(sk, SIOCGIFNAME, &ifr);
60 return strdup(ifr.ifr_name);
63 char *inet_index2ident(int index, const char *prefix)
66 struct ether_addr *eth;
73 sk = socket(PF_INET, SOCK_DGRAM, 0);
77 memset(&ifr, 0, sizeof(ifr));
78 ifr.ifr_ifindex = index;
80 err = ioctl(sk, SIOCGIFNAME, &ifr);
83 err = ioctl(sk, SIOCGIFHWADDR, &ifr);
90 len = prefix ? strlen(prefix) + 18 : 18;
96 eth = (void *) &ifr.ifr_hwaddr.sa_data;
97 snprintf(str, len, "%s%02X_%02X_%02X_%02X_%02X_%02X",
99 eth->ether_addr_octet[0],
100 eth->ether_addr_octet[1],
101 eth->ether_addr_octet[2],
102 eth->ether_addr_octet[3],
103 eth->ether_addr_octet[4],
104 eth->ether_addr_octet[5]);