2017-07-09 16:54:01 +03:00
/*
2018-06-14 14:00:00 +03:00
* Copyright ( c ) 2001 - 2018 The strace developers .
2017-07-09 16:54:01 +03:00
* All rights reserved .
*
2018-12-10 03:00:00 +03:00
* SPDX - License - Identifier : LGPL - 2.1 - or - later
2017-07-09 16:54:01 +03:00
*/
# include "defs.h"
# include <net/if.h>
# ifdef HAVE_IF_INDEXTONAME
2018-05-07 09:42:24 +03:00
# include "xstring.h"
2018-08-27 16:16:10 +03:00
# define INI_PFX "if_nametoindex(\""
# define INI_SFX "\")"
2018-05-07 09:42:24 +03:00
# define IFNAME_QUOTED_SZ (sizeof(IFNAMSIZ) * 4 + 3)
2018-08-27 16:16:10 +03:00
const char *
2018-05-07 09:42:24 +03:00
get_ifname ( const unsigned int ifindex )
{
2018-08-27 16:16:10 +03:00
static char name_quoted_buf [ IFNAME_QUOTED_SZ ] ;
2018-05-07 09:42:24 +03:00
char name_buf [ IFNAMSIZ ] ;
2018-08-27 16:16:10 +03:00
if ( ! if_indextoname ( ifindex , name_buf ) )
return NULL ;
if ( string_quote ( name_buf , name_quoted_buf , sizeof ( name_buf ) ,
QUOTE_0_TERMINATED | QUOTE_OMIT_LEADING_TRAILING_QUOTES ,
NULL ) )
return NULL ;
return name_quoted_buf ;
}
static const char *
sprint_ifname ( const unsigned int ifindex )
{
static char res [ IFNAME_QUOTED_SZ + sizeof ( INI_PFX INI_SFX ) ] ;
const char * name_quoted = get_ifname ( ifindex ) ;
2018-05-07 09:42:24 +03:00
2018-08-27 16:16:10 +03:00
if ( ! name_quoted )
return NULL ;
2017-07-09 16:54:01 +03:00
2018-08-27 16:16:10 +03:00
xsprintf ( res , INI_PFX " %s " INI_SFX , name_quoted ) ;
2017-07-09 16:54:01 +03:00
2018-08-27 16:16:10 +03:00
return res ;
2018-05-07 09:42:24 +03:00
}
2018-08-27 16:16:10 +03:00
# else /* !HAVE_IF_INDEXTONAME */
const char * get_ifname ( const unsigned int ifindex ) { return NULL ; }
2018-05-07 09:42:24 +03:00
# endif /* HAVE_IF_INDEXTONAME */
void
print_ifindex ( const unsigned int ifindex )
{
# ifdef HAVE_IF_INDEXTONAME
2018-08-27 16:16:10 +03:00
print_xlat_ex ( ifindex , sprint_ifname ( ifindex ) , XLAT_STYLE_FMT_U ) ;
2018-05-07 09:42:24 +03:00
# else
2017-07-09 16:54:01 +03:00
tprintf ( " %u " , ifindex ) ;
2018-05-07 09:42:24 +03:00
# endif
2017-07-09 16:54:01 +03:00
}