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