Lines Matching +full:static +full:- +full:trace +full:- +full:id

1 // SPDX-License-Identifier: GPL-2.0+
20 __u32 id; member
34 * Be careful if you modify structs below - everything MUST be kept synchronized
38 static struct ioam_config node1 = {
39 .id = 1,
48 .sc_data = "something that will be 4n-aligned",
52 static struct ioam_config node2 = {
53 .id = 2,
244 static int check_header(int tid, struct ioam6_trace_hdr *trace, in check_header() argument
247 if (__be16_to_cpu(trace->namespace_id) != ioam_ns || in check_header()
248 __be32_to_cpu(trace->type_be32) != (trace_type << 8)) in check_header()
255 return trace->overflow == 1 || in check_header()
256 trace->nodelen != 1 || in check_header()
257 trace->remlen != 1; in check_header()
262 return trace->overflow == 0 || in check_header()
263 trace->nodelen != 2 || in check_header()
264 trace->remlen != 1; in check_header()
267 return trace->overflow == 0 || in check_header()
268 trace->nodelen != 0 || in check_header()
269 trace->remlen != 1; in check_header()
274 return trace->overflow == 1 || in check_header()
275 trace->nodelen != 0 || in check_header()
276 trace->remlen != 0; in check_header()
296 return trace->overflow == 1 || in check_header()
297 trace->nodelen != 1 || in check_header()
298 trace->remlen != 0; in check_header()
306 return trace->overflow == 1 || in check_header()
307 trace->nodelen != 2 || in check_header()
308 trace->remlen != 0; in check_header()
371 return trace->overflow == 1 || in check_header()
372 trace->nodelen != 1 || in check_header()
373 trace->remlen != trace_size / 4; in check_header()
436 return trace->overflow == 1 || in check_header()
437 trace->nodelen != 1 || in check_header()
438 trace->remlen != (trace_size / 4) - trace->nodelen; in check_header()
442 return trace->overflow == 1 || in check_header()
443 trace->nodelen != 15 || in check_header()
444 trace->remlen != 0; in check_header()
453 static int check_data(struct ioam6_trace_hdr *trace, __u8 trace_size, in check_data() argument
462 if (trace->type.bit12 | trace->type.bit13 | trace->type.bit14 | in check_data()
463 trace->type.bit15 | trace->type.bit16 | trace->type.bit17 | in check_data()
464 trace->type.bit18 | trace->type.bit19 | trace->type.bit20 | in check_data()
465 trace->type.bit21 | trace->type.bit23) in check_data()
468 for (i = 0; i < trace->remlen * 4; i++) { in check_data()
469 if (trace->data[i] != 0) in check_data()
473 if (trace->remlen * 4 == trace_size) in check_data()
476 p = trace->data + trace->remlen * 4; in check_data()
478 if (trace->type.bit0) { in check_data()
480 if (cnf.hlim != (raw32 >> 24) || cnf.id != (raw32 & 0xffffff)) in check_data()
485 if (trace->type.bit1) { in check_data()
493 if (trace->type.bit2) { in check_data()
501 if (trace->type.bit3) { in check_data()
509 if (trace->type.bit4) { in check_data()
515 if (trace->type.bit5) { in check_data()
521 if (trace->type.bit6) { in check_data()
527 if (trace->type.bit7) { in check_data()
533 if (trace->type.bit8) { in check_data()
541 if (trace->type.bit9) { in check_data()
551 if (trace->type.bit10) { in check_data()
557 if (trace->type.bit11) { in check_data()
563 if (trace->type.bit22) { in check_data()
578 aligned -= len; in check_data()
580 while (aligned--) { in check_data()
591 static int check_ioam_trace(int tid, struct ioam6_trace_hdr *trace, in check_ioam_trace() argument
594 if (check_header(tid, trace, trace_type, trace_size, ioam_ns)) in check_ioam_trace()
598 return check_data(trace, trace_size, node1, true); in check_ioam_trace()
601 return check_data(trace, trace_size, node2, false); in check_ioam_trace()
606 static int str2id(const char *tname) in str2id()
925 return -1; in str2id()
928 static int ipv6_addr_equal(const struct in6_addr *a1, const struct in6_addr *a2) in ipv6_addr_equal()
930 return ((a1->s6_addr32[0] ^ a2->s6_addr32[0]) | in ipv6_addr_equal()
931 (a1->s6_addr32[1] ^ a2->s6_addr32[1]) | in ipv6_addr_equal()
932 (a1->s6_addr32[2] ^ a2->s6_addr32[2]) | in ipv6_addr_equal()
933 (a1->s6_addr32[3] ^ a2->s6_addr32[3])) == 0; in ipv6_addr_equal()
936 static int get_u32(__u32 *val, const char *arg, int base) in get_u32()
942 return -1; in get_u32()
946 return -1; in get_u32()
949 return -1; in get_u32()
952 return -1; in get_u32()
958 static int get_u16(__u16 *val, const char *arg, int base) in get_u16()
964 return -1; in get_u16()
968 return -1; in get_u16()
971 return -1; in get_u16()
974 return -1; in get_u16()
980 static int get_u8(__u8 *val, const char *arg, int base) in get_u8()
986 return -1; in get_u8()
990 return -1; in get_u8()
993 return -1; in get_u8()
996 return -1; in get_u8()
1005 struct ioam6_trace_hdr *trace; in main() local
1032 hoplen += 2; // 2-byte padding for alignment in main()
1034 hoplen += sizeof(*trace); // IOAM trace header in main()
1035 hoplen += tr_size; // IOAM trace size in main()
1059 * do not have a Hop-by-hop. in main()
1061 if (!ipv6_addr_equal(&ipv6->saddr, &src) || in main()
1062 !ipv6_addr_equal(&ipv6->daddr, &dst) || in main()
1063 ipv6->nexthdr != IPPROTO_HOPOPTS) in main()
1068 if (hbh->nexthdr != nexthdr || hbh->hdrlen != (hoplen >> 3) - 1) in main()
1071 /* Check we have a 2-byte padding for alignment. */ in main()
1083 if (ioam6->opt_len != sizeof(*ioam6) - 2 + sizeof(*trace) + tr_size || in main()
1084 ioam6->type != IOAM6_TYPE_PREALLOC) in main()
1087 trace = (struct ioam6_trace_hdr *)(ptr + sizeof(*ioam6)); in main()
1089 /* Check the trailing 4-byte padding (potentially). */ in main()
1090 ptr = (__u8 *)trace + sizeof(*trace) + tr_size; in main()
1096 ret = check_ioam_trace(testname_id, trace, tr_type, tr_size, ioam_ns); in main()