| line |
true |
false |
branch |
|
194
|
19 |
13 |
if (node->l) { |
|
198
|
25 |
7 |
if (node->prefix) { |
|
199
|
25 |
0 |
if (NULL != coderef) { |
|
200
|
0 |
25 |
PUSHMARK(SP); |
|
201
|
0 |
25 |
XPUSHs(sv_mortalcopy((SV *)node->data)); |
|
202
|
21 |
4 |
if (node->prefix->family == AF_INET) { |
|
203
|
0 |
21 |
XPUSHs(sv_2mortal( |
|
214
|
0 |
4 |
XPUSHs(sv_2mortal(newSVpvf("%s/%d", buff, node->prefix->bitlen))); |
|
224
|
9 |
23 |
if (node->r) { |
|
274
|
37 |
0 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
|
0 |
37 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
276
|
37 |
0 |
if (NULL != node) { |
|
278
|
0 |
37 |
if (node->data) { |
|
299
|
23 |
0 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
|
0 |
23 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
301
|
18 |
5 |
if (NULL != node) { |
|
302
|
0 |
18 |
XPUSHs((SV *)node->data); |
|
318
|
8 |
0 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
|
0 |
8 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
320
|
7 |
1 |
if (NULL != node) { |
|
321
|
3 |
4 |
if (node->prefix->family == AF_INET) { |
|
322
|
0 |
3 |
XPUSHs(sv_2mortal( |
|
332
|
0 |
4 |
XPUSHs(sv_2mortal(newSVpvf("%s/%d", buff, node->prefix->bitlen))); |
|
351
|
8 |
0 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
|
0 |
8 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
353
|
4 |
4 |
if (NULL != node) { |
|
354
|
0 |
4 |
XPUSHs((SV *)node->data); |
|
371
|
4 |
0 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
|
0 |
4 |
Fill_Prefix(prefix, family, addr, bits, tree->maxbits); |
|
373
|
3 |
1 |
if (NULL != node) { |
|
374
|
0 |
3 |
XPUSHs(sv_mortalcopy((SV *)node->data)); |
|
389
|
2 |
2 |
if (2 == items) { |
|
391
|
0 |
2 |
} else if (2 < items) { |
|
394
|
25 |
7 |
PATRICIA_WALK (tree->head, node) { |
|
|
32 |
4 |
PATRICIA_WALK (tree->head, node) { |
|
395
|
13 |
12 |
if (NULL != func) { |
|
396
|
0 |
13 |
PUSHMARK(SP); |
|
397
|
0 |
13 |
XPUSHs(sv_mortalcopy((SV *)node->data)); |
|
398
|
9 |
4 |
if (node->prefix->family == AF_INET) { |
|
399
|
0 |
9 |
XPUSHs(sv_2mortal( |
|
409
|
0 |
4 |
XPUSHs(sv_2mortal(newSVpvf("%s/%d", buff, node->prefix->bitlen))); |
|
417
|
19 |
13 |
} PATRICIA_WALK_END; |
|
|
9 |
10 |
} PATRICIA_WALK_END; |
|
|
0 |
13 |
} PATRICIA_WALK_END; |
|
|
9 |
4 |
} PATRICIA_WALK_END; |
|
430
|
4 |
0 |
if (2 == items) { |
|
432
|
0 |
0 |
} else if (2 < items) { |
|
451
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
460
|
40 |
6 |
PATRICIA_WALK_ALL (tree->head, node) { |
|
462
|
24 |
16 |
} PATRICIA_WALK_END; |
|
|
10 |
14 |
} PATRICIA_WALK_END; |
|
|
0 |
16 |
} PATRICIA_WALK_END; |
|
|
10 |
6 |
} PATRICIA_WALK_END; |
|
464
|
0 |
6 |
if (n > 2147483646) |
|
475
|
0 |
6 |
XPUSHs(frozen_patricia); |
|
482
|
40 |
6 |
PATRICIA_WALK_ALL (tree->head, node) { |
|
489
|
31 |
9 |
if (node->prefix) { |
|
492
|
30 |
1 |
if (tree->maxbits == 32) |
|
499
|
31 |
9 |
if (node->data) { |
|
502
|
0 |
31 |
XPUSHs(sv_2mortal(newRV_inc((SV *)node->data))); |
|
506
|
34 |
6 |
if (node->parent && node->parent->l == node) { |
|
|
24 |
10 |
if (node->parent && node->parent->l == node) { |
|
508
|
10 |
6 |
} else if (node->parent && node->parent->r == node) { |
|
|
10 |
0 |
} else if (node->parent && node->parent->r == node) { |
|
512
|
24 |
16 |
} PATRICIA_WALK_END; |
|
|
10 |
14 |
} PATRICIA_WALK_END; |
|
|
0 |
16 |
} PATRICIA_WALK_END; |
|
|
10 |
6 |
} PATRICIA_WALK_END; |
|
530
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
6 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
|
0 |
0 |
if (SvTRUE(cloning)) |
|
|
0 |
6 |
if (SvTRUE(cloning)) |
|
534
|
6 |
0 |
frozen_patricia = (struct frozen_patricia*)SvPV(serialized, len); |
|
536
|
0 |
6 |
if (ntohl(frozen_patricia->header.magic) != FROZEN_MAGIC) |
|
538
|
0 |
6 |
if (frozen_patricia->header.major != FROZEN_MAJOR) |
|
540
|
0 |
6 |
if (frozen_patricia->header.minor != FROZEN_MINOR) |
|
549
|
0 |
6 |
if (n_calculated < n) |
|
553
|
40 |
6 |
for (i = 0; i < n; i++) { |
|
560
|
31 |
9 |
if (d_index >= 0) |
|
563
|
31 |
9 |
if (ntohs(frozen_node->bitlen) & 0x8000) { |
|
571
|
30 |
1 |
if (tree->maxbits == 32) { |
|
581
|
6 |
0 |
if (n) |
|
583
|
40 |
6 |
for (i = 0; i < n; i++) { |
|
588
|
24 |
16 |
if (l_index >= 0) { |
|
595
|
10 |
30 |
if (r_index >= 0) { |