From: Dmitry V. Levin Date: Tue, 8 Aug 2017 20:40:57 +0000 (+0000) Subject: tests: add ifindex_lo function and IFINDEX_LO_STR macro to libtests X-Git-Tag: v4.19~116 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=23d470d3c0aedac5e0aaaa5e9164cafa5b584b6d;p=strace tests: add ifindex_lo function and IFINDEX_LO_STR macro to libtests * tests/ifindex.c: New file. * tests/Makefile.am (libtests_a_SOURCES): Add it. * tests/tests.h (ifindex_lo): New prototype. (IFINDEX_LO_STR): New macro. --- diff --git a/tests/Makefile.am b/tests/Makefile.am index f038226e..42a66c46 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -50,6 +50,7 @@ libtests_a_SOURCES = \ get_sigset_size.c \ hexdump_strdup.c \ hexquote_strndup.c \ + ifindex.c \ inode_of_sockfd.c \ libmmsg.c \ libsocketcall.c \ diff --git a/tests/ifindex.c b/tests/ifindex.c new file mode 100644 index 00000000..390a135b --- /dev/null +++ b/tests/ifindex.c @@ -0,0 +1,55 @@ +/* + * Proxy wrappers for if_nametoindex. + * + * Copyright (c) 2017 The strace developers. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tests.h" + +#ifdef HAVE_IF_INDEXTONAME + +# include + +unsigned int +ifindex_lo(void) +{ + static unsigned int index; + + if (!index) + index = if_nametoindex("lo"); + + return index; +} + +#else /* !HAVE_IF_INDEXTONAME */ + +unsigned int +ifindex_lo(void) +{ + return 1; +} + +#endif diff --git a/tests/tests.h b/tests/tests.h index 6fa2f402..d453e3e0 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -197,6 +197,15 @@ int create_nl_socket_ext(int proto, const char *name); /* Create a pipe with maximized descriptor numbers. */ void pipe_maxfd(int pipefd[2]); +/* if_nametoindex("lo") */ +unsigned int ifindex_lo(void); + +#ifdef HAVE_IF_INDEXTONAME +# define IFINDEX_LO_STR "if_nametoindex(\"lo\")" +#else +# define IFINDEX_LO_STR "1" +#endif + #define F8ILL_KULONG_SUPPORTED (sizeof(void *) < sizeof(kernel_ulong_t)) #define F8ILL_KULONG_MASK ((kernel_ulong_t) 0xffffffff00000000ULL)