144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* 244d362409d5469aed47d19e7908d19bd194493aThomas Graf * src/nl-link-ifindex2name.c Transform a interface index to its name 344d362409d5469aed47d19e7908d19bd194493aThomas Graf * 444d362409d5469aed47d19e7908d19bd194493aThomas Graf * This library is free software; you can redistribute it and/or 544d362409d5469aed47d19e7908d19bd194493aThomas Graf * modify it under the terms of the GNU Lesser General Public 644d362409d5469aed47d19e7908d19bd194493aThomas Graf * License as published by the Free Software Foundation version 2.1 744d362409d5469aed47d19e7908d19bd194493aThomas Graf * of the License. 844d362409d5469aed47d19e7908d19bd194493aThomas Graf * 98808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch> 1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 1144d362409d5469aed47d19e7908d19bd194493aThomas Graf 128808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <netlink/cli/utils.h> 138808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <netlink/cli/link.h> 1444d362409d5469aed47d19e7908d19bd194493aThomas Graf 1510cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Grafstatic void print_usage(void) 1644d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 1710cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf printf("Usage: nl-link-ifindex2name <ifindex>\n"); 1810cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf exit(0); 1910cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf} 2044d362409d5469aed47d19e7908d19bd194493aThomas Graf 2110cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Grafint main(int argc, char *argv[]) 2210cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf{ 2310cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf struct nl_sock *sock; 2410cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf struct nl_cache *link_cache; 2510cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf char name[IFNAMSIZ]; 2610cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf uint32_t ifindex; 2744d362409d5469aed47d19e7908d19bd194493aThomas Graf 2810cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf if (argc < 2) 2910cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf print_usage(); 3044d362409d5469aed47d19e7908d19bd194493aThomas Graf 318808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf sock = nl_cli_alloc_socket(); 328808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf nl_cli_connect(sock, NETLINK_ROUTE); 338808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf link_cache = nl_cli_link_alloc_cache(sock); 3444d362409d5469aed47d19e7908d19bd194493aThomas Graf 358808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf ifindex = nl_cli_parse_u32(argv[1]); 3644d362409d5469aed47d19e7908d19bd194493aThomas Graf 3710cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf if (!rtnl_link_i2name(link_cache, ifindex, name, sizeof(name))) 388808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf nl_cli_fatal(ENOENT, "Interface index %d does not exist", 398808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf ifindex); 4044d362409d5469aed47d19e7908d19bd194493aThomas Graf 4110cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf printf("%s\n", name); 4244d362409d5469aed47d19e7908d19bd194493aThomas Graf 4310cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf return 0; 4444d362409d5469aed47d19e7908d19bd194493aThomas Graf} 45