1 // SPDX-License-Identifier: GPL-2.0 2 /* Copyright (c) 2025 Meta Platforms, Inc. and affiliates. */ 3 #include "bpf_experimental.h" 4 #include <bpf/bpf_helpers.h> 5 #include "bpf_misc.h" 6 #include <stdbool.h> 7 8 char _license[] SEC("license") = "GPL"; 9 10 enum Enum { EA1 = 0, EA2 = 11 }; 11 enum Enumu64 {EB1 = 0llu, EB2 = 12llu }; 12 enum Enums64 { EC1 = 0ll, EC2 = 13ll }; 13 14 const volatile __s64 var_s64 = -1; 15 const volatile __u64 var_u64 = 0; 16 const volatile __s32 var_s32 = -1; 17 const volatile __u32 var_u32 = 0; 18 const volatile __s16 var_s16 = -1; 19 const volatile __u16 var_u16 = 0; 20 const volatile __s8 var_s8 = -1; 21 const volatile __u8 var_u8 = 0; 22 const volatile enum Enum var_ea = EA1; 23 const volatile enum Enumu64 var_eb = EB1; 24 const volatile enum Enums64 var_ec = EC1; 25 const volatile bool var_b = false; 26 27 struct Struct { 28 int:16; 29 __u16 filler; 30 struct { 31 const __u16 filler2; 32 }; 33 struct Struct2 { 34 __u16 filler; 35 volatile struct { 36 const int:1; 37 union { 38 const volatile __u8 var_u8; 39 const volatile __s16 filler3; 40 const int:1; 41 } u; 42 }; 43 } struct2; 44 }; 45 46 const volatile __u32 stru = 0; /* same prefix as below */ 47 const volatile struct Struct struct1 = {.struct2 = {.u = {.var_u8 = 1}}}; 48 49 union Union { 50 __u16 var_u16; 51 struct Struct3 { 52 struct { 53 __u8 var_u8_l; 54 }; 55 struct { 56 struct { 57 __u8 var_u8_h; 58 }; 59 }; 60 } struct3; 61 }; 62 63 const volatile union Union union1 = {.var_u16 = -1}; 64 65 char arr[4] = {0}; 66 67 SEC("socket") 68 int test_set_globals(void *ctx) 69 { 70 volatile __s8 a; 71 72 a = var_s64; 73 a = var_u64; 74 a = var_s32; 75 a = var_u32; 76 a = var_s16; 77 a = var_u16; 78 a = var_s8; 79 a = var_u8; 80 a = var_ea; 81 a = var_eb; 82 a = var_ec; 83 a = var_b; 84 a = struct1.struct2.u.var_u8; 85 a = union1.var_u16; 86 87 return a; 88 } 89