const size_t elem_size,
void *const opaque_data)
{
+ unsigned int *const count = opaque_data;
+
+ if ((*count)++ >= SK_MEMINFO_VARS) {
+ tprints("...");
+ return false;
+ }
+
tprintf("%" PRIu32, *(uint32_t *) elem_buf);
return true;
if (!nmemb)
return false;
- if (nmemb > SK_MEMINFO_VARS)
- nmemb = SK_MEMINFO_VARS;
-
+ unsigned int count = 0;
print_array(tcp, addr, nmemb, &mem, sizeof(mem),
- umoven_or_printaddr, print_meminfo, 0);
+ umoven_or_printaddr, print_meminfo, &count);
return true;
}
init_inet_diag_msg, print_inet_diag_msg,
INET_DIAG_SKMEMINFO, pattern, mem, print_uint);
+ static uint32_t bigmem[SK_MEMINFO_VARS + 1];
+ memcpy(bigmem, pattern, sizeof(bigmem));
+
+ TEST_NLATTR(fd, nlh0, hdrlen, init_inet_diag_msg, print_inet_diag_msg,
+ INET_DIAG_SKMEMINFO, sizeof(bigmem), bigmem, sizeof(bigmem),
+ size_t i;
+ for (i = 0; i < SK_MEMINFO_VARS; ++i) {
+ printf(i ? ", " : "[");
+ print_uint(&bigmem[i]);
+ }
+ printf(", ...]"));
+
static const uint32_t mark = 0xabdfadca;
TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
init_inet_diag_msg, print_inet_diag_msg,