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

Attachment: 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

Reply via email to