On Sun, Aug 20, 2017 at 08:17:19PM +0800, JingPiao Chen wrote: > * tests/nlattr_ifaddrmsg.c: Include <arpa/inet.h>. > (IFA_FLAGS, SET_IFA_FAMILY): New macros. > (init_ifaddrmsg): Set ifaddrmsg.ifa_family field. > (print_ifaddrmsg): Print ifaddrmsg.ifa_family field use %s format. > (main): Check decoding of IFA_ADDRESS, IFA_CACHEINFO and IFA_FLAGS. > --- > tests/nlattr_ifaddrmsg.c | 65 > +++++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 62 insertions(+), 3 deletions(-) > > diff --git a/tests/nlattr_ifaddrmsg.c b/tests/nlattr_ifaddrmsg.c > index 21a5a18..5ae02c2 100644 > --- a/tests/nlattr_ifaddrmsg.c > +++ b/tests/nlattr_ifaddrmsg.c > @@ -29,12 +29,25 @@ > #include "tests.h" > > #include <stdio.h> > +#include <arpa/inet.h> > #include "test_nlattr.h" > #ifdef HAVE_LINUX_IF_ADDR_H > # include <linux/if_addr.h> > #endif > #include <linux/rtnetlink.h> > > +#define IFA_FLAGS 8 > + > +#define SET_IFA_FAMILY(af) \ > + do { \ > + ifa_family = af; \ > + ifa_family_str = #af; \ > + } \ > + while (0) > + > +uint8_t ifa_family; > +const char *ifa_family_str; > + > static void > init_ifaddrmsg(struct nlmsghdr *const nlh, const unsigned int msg_len) > { > @@ -46,7 +59,7 @@ init_ifaddrmsg(struct nlmsghdr *const nlh, const unsigned > int msg_len) > > struct ifaddrmsg *const msg = NLMSG_DATA(nlh); > SET_STRUCT(struct ifaddrmsg, msg, > - .ifa_family = AF_UNIX, > + .ifa_family = ifa_family, > .ifa_flags = IFA_F_SECONDARY, > .ifa_scope = RT_SCOPE_UNIVERSE, > .ifa_index = ifindex_lo() > @@ -57,12 +70,12 @@ static void > print_ifaddrmsg(const unsigned int msg_len) > { > printf("{len=%u, type=RTM_GETADDR, flags=NLM_F_DUMP" > - ", seq=0, pid=0}, {ifa_family=AF_UNIX" > + ", seq=0, pid=0}, {ifa_family=%s" > ", ifa_prefixlen=0" > ", ifa_flags=IFA_F_SECONDARY" > ", ifa_scope=RT_SCOPE_UNIVERSE" > ", ifa_index=" IFINDEX_LO_STR "}", > - msg_len); > + msg_len, ifa_family_str); > } > > int > @@ -77,6 +90,7 @@ main(void) > static char pattern[4096]; > fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1); > > + SET_IFA_FAMILY(AF_UNSPEC); > const unsigned int nla_type = 0xffff & NLA_TYPE_MASK; > char nla_type_str[256]; > sprintf(nla_type_str, "%#x /* IFA_??? */", nla_type); > @@ -86,6 +100,51 @@ main(void) > 4, pattern, 4, > print_quoted_hex(pattern, 4)); > > + const char address[] = "12.34.56.78"; > + struct in_addr a4; > + SET_IFA_FAMILY(AF_INET); > + > + if (!inet_pton(AF_INET, address, &a4)) > + perror_msg_and_skip("inet_pton"); > + > + TEST_NLATTR(fd, nlh0, hdrlen, > + init_ifaddrmsg, print_ifaddrmsg, > + IFA_ADDRESS, sizeof(a4), &a4, sizeof(a4), > + printf("%s", address));
I think TEST_NLATTR_OBJECT has better test coverage, can it be used here instead of plain TEST_NLATTR? -- ldv
signature.asc
Description: PGP signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel