xdp12.o: file format ELF64-BPF Disassembly of section prog: ebpf_filter: ; int ebpf_filter(struct xdp_md* skb){ 0: r8 = r1 ; void* ebpf_packetEnd = ((void*)(long)skb->data_end); 1: r5 = *(u32 *)(r8 + 4) ; void* ebpf_packetStart = ((void*)(long)skb->data); 2: r9 = *(u32 *)(r8 + 0) 3: r0 = 0 ; u32 ebpf_zero = 0; 4: *(u32 *)(r10 - 4) = r0 ; if (ebpf_packetEnd < ebpf_packetStart + BYTES(ebpf_packetOffsetInBits + 112)) { 5: r1 = r9 6: r1 += 14 7: if r1 > r5 goto 598 ; hd.ethernet.destination[5] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5) >> 0)); 8: r1 = *(u8 *)(r9 + 11) ; hd.ethernet.destination[4] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4) >> 0)); 9: *(u64 *)(r10 - 24) = r1 10: r1 = *(u8 *)(r9 + 10) ; hd.ethernet.destination[3] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3) >> 0)); 11: *(u64 *)(r10 - 72) = r1 12: r1 = *(u8 *)(r9 + 9) ; hd.ethernet.destination[2] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2) >> 0)); 13: *(u64 *)(r10 - 80) = r1 14: r1 = *(u8 *)(r9 + 8) ; hd.ethernet.destination[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 15: *(u64 *)(r10 - 88) = r1 16: r1 = *(u8 *)(r9 + 7) ; hd.ethernet.destination[0] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0) >> 0)); 17: *(u64 *)(r10 - 96) = r1 18: r1 = *(u8 *)(r9 + 6) ; hd.ethernet.source[5] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5) >> 0)); 19: *(u64 *)(r10 - 104) = r1 20: r1 = *(u8 *)(r9 + 5) ; hd.ethernet.source[4] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4) >> 0)); 21: *(u64 *)(r10 - 128) = r1 22: r1 = *(u8 *)(r9 + 4) ; hd.ethernet.source[3] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3) >> 0)); 23: *(u64 *)(r10 - 136) = r1 24: r1 = *(u8 *)(r9 + 3) ; hd.ethernet.source[2] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2) >> 0)); 25: *(u64 *)(r10 - 144) = r1 26: r1 = *(u8 *)(r9 + 2) ; hd.ethernet.source[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 27: *(u64 *)(r10 - 152) = r1 28: r1 = *(u8 *)(r9 + 1) ; hd.ethernet.source[0] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0) >> 0)); 29: *(u64 *)(r10 - 160) = r1 30: r1 = *(u8 *)(r9 + 0) ; hd.ethernet.protocol = (u16)((load_half(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 31: *(u64 *)(r10 - 168) = r1 32: r1 = *(u16 *)(r9 + 12) 33: r3 = r1 34: r3 >>= 8 35: *(u64 *)(r10 - 112) = r1 ; switch (hd.ethernet.protocol) { 36: r0 = r1 37: r0 <<= 8 38: *(u64 *)(r10 - 120) = r3 39: r0 |= r3 40: r0 &= 65535 41: if r0 == 37120 goto 105 42: r6 = 112 43: r1 = 0 44: *(u64 *)(r10 - 176) = r1 45: r4 = 0 46: r1 = 0 47: *(u64 *)(r10 - 40) = r1 48: r1 = 0 49: *(u64 *)(r10 - 56) = r1 50: r1 = 0 51: *(u64 *)(r10 - 32) = r1 52: r1 = 0 53: *(u64 *)(r10 - 48) = r1 54: if r0 == 34525 goto 197 55: r1 = 0 56: *(u64 *)(r10 - 312) = r1 57: r1 = 0 58: *(u64 *)(r10 - 384) = r1 59: r1 = 0 60: *(u64 *)(r10 - 184) = r1 61: r1 = 0 62: *(u64 *)(r10 - 192) = r1 63: r1 = 0 64: *(u64 *)(r10 - 200) = r1 65: r1 = 0 66: *(u64 *)(r10 - 208) = r1 67: r1 = 0 68: *(u64 *)(r10 - 216) = r1 69: r1 = 0 70: *(u64 *)(r10 - 224) = r1 71: r1 = 0 72: *(u64 *)(r10 - 232) = r1 73: r1 = 0 74: *(u64 *)(r10 - 240) = r1 75: r1 = 0 76: *(u64 *)(r10 - 248) = r1 77: r1 = 0 78: *(u64 *)(r10 - 256) = r1 79: r1 = 0 80: *(u64 *)(r10 - 264) = r1 81: r1 = 0 82: *(u64 *)(r10 - 272) = r1 83: r1 = 0 84: *(u64 *)(r10 - 280) = r1 85: r1 = 0 86: *(u64 *)(r10 - 288) = r1 87: r1 = 0 88: *(u64 *)(r10 - 296) = r1 89: r1 = 0 90: *(u64 *)(r10 - 336) = r1 91: r1 = 0 92: *(u64 *)(r10 - 304) = r1 93: r1 = 0 94: *(u64 *)(r10 - 320) = r1 95: r1 = 0 96: *(u64 *)(r10 - 328) = r1 97: r1 = 0 98: *(u64 *)(r10 - 344) = r1 99: r1 = 0 100: *(u64 *)(r10 - 352) = r1 101: r1 = 0 102: *(u64 *)(r10 - 360) = r1 103: r1 = 0 104: *(u64 *)(r10 - 368) = r1 105: r1 = 0 106: *(u64 *)(r10 - 376) = r1 107: r1 = 0 108: *(u64 *)(r10 - 392) = r1 109: r1 = 0 110: *(u64 *)(r10 - 400) = r1 111: r1 = 0 112: *(u64 *)(r10 - 408) = r1 113: r1 = 0 114: *(u64 *)(r10 - 416) = r1 115: r1 = 0 116: *(u64 *)(r10 - 424) = r1 117: r1 = 0 118: *(u64 *)(r10 - 432) = r1 119: r1 = 0 120: *(u64 *)(r10 - 440) = r1 121: r1 = 0 122: *(u64 *)(r10 - 456) = r1 123: r1 = 0 124: *(u64 *)(r10 - 448) = r1 125: r1 = 0 126: *(u64 *)(r10 - 464) = r1 127: r1 = 0 128: *(u64 *)(r10 - 472) = r1 129: r7 = 0 130: r1 = 0 131: *(u64 *)(r10 - 480) = r1 132: r1 = 0 133: *(u64 *)(r10 - 64) = r1 134: r1 = 0 135: *(u64 *)(r10 - 488) = r1 136: r4 = 0 137: r3 = 0 138: r1 = 0 139: *(u64 *)(r10 - 40) = r1 140: r1 = 0 141: *(u64 *)(r10 - 56) = r1 142: r1 = 0 143: *(u64 *)(r10 - 32) = r1 144: r1 = 0 145: *(u64 *)(r10 - 48) = r1 146: if r0 != 33024 goto 255 LBB0_4: 147: r0 = 0 ; if (ebpf_packetEnd < ebpf_packetStart + BYTES(ebpf_packetOffsetInBits + 32)) { 148: r1 = r9 149: r1 += 18 150: if r1 > r5 goto 455 151: r1 = 0 152: *(u64 *)(r10 - 312) = r1 153: r6 = 144 154: r1 = 1 ; hd.vlan_tag.vid = (u16)((load_half(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits))) & EBPF_MASK(u16, 12)); 155: *(u64 *)(r10 - 176) = r1 156: r1 = *(u16 *)(r9 + 14) 157: r3 = r1 158: r3 &= 15 159: *(u64 *)(r10 - 48) = r3 160: r1 >>= 8 161: *(u64 *)(r10 - 32) = r1 ; hd.vlan_tag.pcp = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 5) & EBPF_MASK(u8, 3)); 162: r4 = *(u8 *)(r9 + 14) 163: r4 >>= 5 ; hd.vlan_tag.etherType = (u16)((load_half(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 164: r0 = *(u16 *)(r9 + 16) 165: r1 = r0 166: bswap64 r1 167: r1 >>= 56 168: *(u64 *)(r10 - 56) = r1 169: bswap16 r0 170: r1 = 0 171: *(u64 *)(r10 - 384) = r1 172: r1 = 0 173: *(u64 *)(r10 - 184) = r1 174: r1 = 0 175: *(u64 *)(r10 - 192) = r1 176: r1 = 0 177: *(u64 *)(r10 - 200) = r1 178: r1 = 0 179: *(u64 *)(r10 - 208) = r1 180: r1 = 0 181: *(u64 *)(r10 - 216) = r1 182: r1 = 0 183: *(u64 *)(r10 - 224) = r1 184: r1 = 0 185: *(u64 *)(r10 - 232) = r1 186: r1 = 0 187: *(u64 *)(r10 - 240) = r1 188: r1 = 0 189: *(u64 *)(r10 - 248) = r1 190: r1 = 0 191: *(u64 *)(r10 - 256) = r1 192: r1 = 0 193: *(u64 *)(r10 - 264) = r1 194: r1 = 0 195: *(u64 *)(r10 - 272) = r1 196: r1 = 0 197: *(u64 *)(r10 - 280) = r1 198: r1 = 0 199: *(u64 *)(r10 - 288) = r1 200: r1 = 0 201: *(u64 *)(r10 - 296) = r1 202: r1 = 0 203: *(u64 *)(r10 - 336) = r1 204: r1 = 0 205: *(u64 *)(r10 - 304) = r1 206: r1 = 0 207: *(u64 *)(r10 - 320) = r1 208: r1 = 0 209: *(u64 *)(r10 - 328) = r1 210: r1 = 0 211: *(u64 *)(r10 - 344) = r1 212: r1 = 0 213: *(u64 *)(r10 - 352) = r1 214: r1 = 0 215: *(u64 *)(r10 - 360) = r1 216: r1 = 0 217: *(u64 *)(r10 - 368) = r1 218: r1 = 0 219: *(u64 *)(r10 - 376) = r1 220: r1 = 0 221: *(u64 *)(r10 - 392) = r1 222: r1 = 0 223: *(u64 *)(r10 - 400) = r1 224: r1 = 0 225: *(u64 *)(r10 - 408) = r1 226: r1 = 0 227: *(u64 *)(r10 - 416) = r1 228: r1 = 0 229: *(u64 *)(r10 - 424) = r1 230: r1 = 0 231: *(u64 *)(r10 - 432) = r1 232: r1 = 0 233: *(u64 *)(r10 - 440) = r1 234: r1 = 0 235: *(u64 *)(r10 - 456) = r1 236: r1 = 0 237: *(u64 *)(r10 - 448) = r1 238: r1 = 0 239: *(u64 *)(r10 - 464) = r1 240: r1 = 0 241: *(u64 *)(r10 - 472) = r1 242: r7 = 0 243: r1 = 0 244: *(u64 *)(r10 - 480) = r1 245: r1 = 0 246: *(u64 *)(r10 - 64) = r1 247: r1 = 0 248: *(u64 *)(r10 - 488) = r1 249: r3 = 0 250: *(u64 *)(r10 - 40) = r0 ; switch (hd.vlan_tag.etherType) { 251: if r0 != 34525 goto 150 LBB0_6: 252: *(u64 *)(r10 - 496) = r4 ; if (ebpf_packetEnd < ebpf_packetStart + BYTES(ebpf_packetOffsetInBits + 320)) { 253: r1 = r6 254: r1 += 320 255: r1 >>= 3 256: r3 = r9 257: r3 += r1 258: r0 = 0 259: if r3 > r5 goto 346 ; ebpf_packetOffsetInBits += 8; 260: r5 = r6 261: r5 |= 12 ; ebpf_packetOffsetInBits += 8; 262: r1 = r5 263: r1 += 44 ; hd.ipv6.hopLimit = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 264: r1 >>= 3 265: *(u64 *)(r10 - 64) = r1 ; ebpf_packetOffsetInBits += 16; 266: r7 = r5 267: r7 += 36 ; hd.ipv6.nextHdr = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 268: r7 >>= 3 ; ebpf_packetOffsetInBits += 20; 269: r0 = r5 270: r0 += 20 ; hd.ipv6.payloadLen = (u16)((load_half(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 271: r0 >>= 3 ; ebpf_packetOffsetInBits += 8; 272: r1 = r5 273: r1 += 52 ; hd.ipv6.srcAddr[0] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0) >> 0)); 274: r1 >>= 3 ; hd.ipv6.version = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 4) & EBPF_MASK(u8, 4)); 275: r6 >>= 3 276: r2 = *(u64 *)(r10 - 24) ; hd.ipv6.flowLabel = (u32)((load_word(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 8) & EBPF_MASK(u32, 20)); 277: r2 = r5 278: r2 >>= 3 279: *(u64 *)(r10 - 184) = r2 ; ebpf_packetOffsetInBits += 128; 280: r5 += 180 ; hd.ipv6.dstAddr[0] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0) >> 0)); 281: r5 >>= 3 282: r4 = r9 283: r4 += r5 ; hd.ipv6.dstAddr[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 284: r5 |= 1 ; hd.ipv6.version = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 4) & EBPF_MASK(u8, 4)); 285: r3 = r9 286: r3 += r6 287: r6 = r9 288: r6 += r1 ; hd.ipv6.srcAddr[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 289: r1 |= 1 ; hd.ipv6.payloadLen = (u16)((load_half(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 290: r2 = r9 291: r2 += r0 292: *(u64 *)(r10 - 312) = r2 ; hd.ipv6.flowLabel = (u32)((load_word(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 8) & EBPF_MASK(u32, 20)); 293: r2 = r9 294: r0 = *(u64 *)(r10 - 184) 295: r2 += r0 296: *(u64 *)(r10 - 336) = r2 ; hd.ipv6.nextHdr = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 297: r2 = r9 298: r2 += r7 ; hd.ipv6.hopLimit = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 299: r0 = r9 300: r7 = *(u64 *)(r10 - 64) 301: r0 += r7 ; hd.ipv6.srcAddr[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 302: r7 = r9 303: r7 += r1 ; hd.ipv6.dstAddr[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 304: r9 += r5 305: r1 = 1 306: *(u64 *)(r10 - 184) = r1 307: r5 = *(u32 *)(r8 + 4) 308: r1 = *(u32 *)(r8 + 0) ; goto accept; 309: r8 = *(u16 *)(r3 + 0) 310: r8 &= 15 311: *(u64 *)(r10 - 480) = r8 ; hd.ipv6.version = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 4) & EBPF_MASK(u8, 4)); 312: r3 = *(u8 *)(r3 + 0) 313: r3 >>= 4 314: *(u64 *)(r10 - 64) = r3 ; hd.ipv6.dstAddr[15] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 15) >> 0)); 315: r3 = *(u8 *)(r4 + 15) ; hd.ipv6.dstAddr[14] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 14) >> 0)); 316: *(u64 *)(r10 - 192) = r3 317: r3 = *(u8 *)(r4 + 14) ; hd.ipv6.dstAddr[13] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 13) >> 0)); 318: *(u64 *)(r10 - 200) = r3 319: r3 = *(u8 *)(r4 + 13) ; hd.ipv6.dstAddr[12] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 12) >> 0)); 320: *(u64 *)(r10 - 208) = r3 321: r3 = *(u8 *)(r4 + 12) ; hd.ipv6.dstAddr[11] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 11) >> 0)); 322: *(u64 *)(r10 - 216) = r3 323: r3 = *(u8 *)(r4 + 11) ; hd.ipv6.dstAddr[10] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 10) >> 0)); 324: *(u64 *)(r10 - 224) = r3 325: r3 = *(u8 *)(r4 + 10) ; hd.ipv6.dstAddr[9] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 9) >> 0)); 326: *(u64 *)(r10 - 232) = r3 327: r3 = *(u8 *)(r4 + 9) ; hd.ipv6.dstAddr[8] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 8) >> 0)); 328: *(u64 *)(r10 - 240) = r3 329: r3 = *(u8 *)(r4 + 8) ; hd.ipv6.dstAddr[7] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 7) >> 0)); 330: *(u64 *)(r10 - 248) = r3 331: r3 = *(u8 *)(r4 + 7) ; hd.ipv6.dstAddr[6] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 6) >> 0)); 332: *(u64 *)(r10 - 256) = r3 333: r3 = *(u8 *)(r4 + 6) ; hd.ipv6.dstAddr[5] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5) >> 0)); 334: *(u64 *)(r10 - 264) = r3 335: r3 = *(u8 *)(r4 + 5) ; hd.ipv6.dstAddr[4] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4) >> 0)); 336: *(u64 *)(r10 - 272) = r3 337: r3 = *(u8 *)(r4 + 4) ; hd.ipv6.dstAddr[3] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3) >> 0)); 338: *(u64 *)(r10 - 280) = r3 339: r3 = *(u8 *)(r4 + 3) ; hd.ipv6.dstAddr[2] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2) >> 0)); 340: *(u64 *)(r10 - 288) = r3 341: r3 = *(u8 *)(r4 + 2) ; hd.ipv6.dstAddr[0] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0) >> 0)); 342: *(u64 *)(r10 - 296) = r3 343: r3 = *(u8 *)(r4 + 0) ; hd.ipv6.srcAddr[15] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 15) >> 0)); 344: *(u64 *)(r10 - 304) = r3 345: r3 = *(u8 *)(r6 + 15) ; hd.ipv6.srcAddr[14] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 14) >> 0)); 346: *(u64 *)(r10 - 320) = r3 347: r3 = *(u8 *)(r6 + 14) ; hd.ipv6.srcAddr[13] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 13) >> 0)); 348: *(u64 *)(r10 - 328) = r3 349: r3 = *(u8 *)(r6 + 13) ; hd.ipv6.srcAddr[12] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 12) >> 0)); 350: *(u64 *)(r10 - 344) = r3 351: r3 = *(u8 *)(r6 + 12) ; hd.ipv6.srcAddr[11] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 11) >> 0)); 352: *(u64 *)(r10 - 352) = r3 353: r3 = *(u8 *)(r6 + 11) ; hd.ipv6.srcAddr[10] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 10) >> 0)); 354: *(u64 *)(r10 - 360) = r3 355: r3 = *(u8 *)(r6 + 10) ; hd.ipv6.srcAddr[9] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 9) >> 0)); 356: *(u64 *)(r10 - 368) = r3 357: r3 = *(u8 *)(r6 + 9) ; hd.ipv6.srcAddr[8] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 8) >> 0)); 358: *(u64 *)(r10 - 376) = r3 359: r3 = *(u8 *)(r6 + 8) ; hd.ipv6.srcAddr[7] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 7) >> 0)); 360: *(u64 *)(r10 - 392) = r3 361: r3 = *(u8 *)(r6 + 7) ; hd.ipv6.srcAddr[6] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 6) >> 0)); 362: *(u64 *)(r10 - 400) = r3 363: r3 = *(u8 *)(r6 + 6) ; hd.ipv6.srcAddr[5] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5) >> 0)); 364: *(u64 *)(r10 - 408) = r3 365: r3 = *(u8 *)(r6 + 5) ; hd.ipv6.srcAddr[4] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4) >> 0)); 366: *(u64 *)(r10 - 416) = r3 367: r3 = *(u8 *)(r6 + 4) ; hd.ipv6.srcAddr[3] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3) >> 0)); 368: *(u64 *)(r10 - 424) = r3 369: r3 = *(u8 *)(r6 + 3) ; hd.ipv6.srcAddr[2] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2) >> 0)); 370: *(u64 *)(r10 - 432) = r3 371: r3 = *(u8 *)(r6 + 2) ; hd.ipv6.srcAddr[0] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0) >> 0)); 372: *(u64 *)(r10 - 440) = r3 373: r3 = *(u8 *)(r6 + 0) ; hd.ipv6.hopLimit = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 374: *(u64 *)(r10 - 448) = r3 375: r3 = *(u8 *)(r0 + 0) ; hd.ipv6.nextHdr = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 376: *(u64 *)(r10 - 464) = r3 377: r3 = *(u8 *)(r2 + 0) 378: *(u64 *)(r10 - 472) = r3 379: r2 = *(u64 *)(r10 - 24) ; hd.ipv6.flowLabel = (u32)((load_word(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 8) & EBPF_MASK(u32, 20)); 380: r2 = *(u64 *)(r10 - 336) 381: r3 = *(u32 *)(r2 + 0) 382: r4 = r3 383: bswap16 r4 384: *(u64 *)(r10 - 488) = r4 ; hd.ipv6.payloadLen = (u16)((load_half(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)))); 385: r2 = *(u64 *)(r10 - 312) 386: r4 = *(u16 *)(r2 + 0) 387: *(u64 *)(r10 - 312) = r4 388: r4 >>= 8 389: *(u64 *)(r10 - 384) = r4 ; hd.ipv6.dstAddr[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 390: r2 = *(u8 *)(r9 + 0) ; hd.ipv6.srcAddr[1] = (u8)((load_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1) >> 0)); 391: *(u64 *)(r10 - 336) = r2 392: r2 = *(u8 *)(r7 + 0) ; hd.ipv6.flowLabel = (u32)((load_word(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 8) & EBPF_MASK(u32, 20)); 393: *(u64 *)(r10 - 456) = r2 394: bswap64 r3 395: r7 = r3 396: r7 >>= 40 ; goto accept; 397: r7 &= 15 ; hd.ipv6.flowLabel = (u32)((load_word(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits)) >> 8) & EBPF_MASK(u32, 20)); 398: r3 >>= 56 399: r3 &= 15 ; ebpf_packetStart = ((void*)(long)skb->data); 400: r9 = r1 401: r4 = *(u64 *)(r10 - 496) LBB0_8: 402: r6 = r4 403: r1 = 2 ; tmp_1 = (hd.ipv6.version != 6); 404: r4 = 6 405: r8 = *(u64 *)(r10 - 64) 406: if r8 == r4 goto 1 407: r1 = 1 LBB0_10: 408: r0 = 0 ; xout.output_port = 0; 409: *(u32 *)(r10 - 12) = r0 ; xout.output_action = tmp_2; 410: *(u32 *)(r10 - 16) = r1 ; ebpf_packetEnd = ((void*)(long)skb->data_end); 411: r5 <<= 32 412: r5 >>= 32 ; ebpf_packetStart = ((void*)(long)skb->data); 413: r9 <<= 32 414: r9 >>= 32 ; if (ebpf_packetEnd < ebpf_packetStart + BYTES(ebpf_packetOffsetInBits + 112)) { 415: r1 = r9 416: r1 += 14 417: if r1 > r5 goto 188 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 418: r1 = *(u64 *)(r10 - 168) 419: *(u8 *)(r9 + 0) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 420: r1 = *(u64 *)(r10 - 160) 421: *(u8 *)(r9 + 1) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2, (ebpf_byte) << 0); 422: r1 = *(u64 *)(r10 - 152) 423: *(u8 *)(r9 + 2) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3, (ebpf_byte) << 0); 424: r1 = *(u64 *)(r10 - 144) 425: *(u8 *)(r9 + 3) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4, (ebpf_byte) << 0); 426: r1 = *(u64 *)(r10 - 136) 427: *(u8 *)(r9 + 4) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5, (ebpf_byte) << 0); 428: r1 = *(u64 *)(r10 - 128) 429: *(u8 *)(r9 + 5) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 430: r1 = *(u64 *)(r10 - 104) 431: *(u8 *)(r9 + 6) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 432: r1 = *(u64 *)(r10 - 96) 433: *(u8 *)(r9 + 7) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2, (ebpf_byte) << 0); 434: r1 = *(u64 *)(r10 - 88) 435: *(u8 *)(r9 + 8) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3, (ebpf_byte) << 0); 436: r1 = *(u64 *)(r10 - 80) 437: *(u8 *)(r9 + 9) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4, (ebpf_byte) << 0); 438: r1 = *(u64 *)(r10 - 72) 439: *(u8 *)(r9 + 10) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5, (ebpf_byte) << 0); 440: r1 = *(u64 *)(r10 - 24) 441: *(u8 *)(r9 + 11) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 442: r1 = *(u64 *)(r10 - 112) 443: *(u8 *)(r9 + 12) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 444: r1 = *(u64 *)(r10 - 120) 445: *(u8 *)(r9 + 13) = r1 446: r1 = 112 ; if (hd.vlan_tag.ebpf_valid) { 447: r4 = *(u64 *)(r10 - 176) 448: if r4 == 0 goto 15 ; if (ebpf_packetEnd < ebpf_packetStart + BYTES(ebpf_packetOffsetInBits + 32)) { 449: r1 = r9 450: r1 += 18 451: if r1 > r5 goto 154 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 5); 452: r6 <<= 5 453: r1 = *(u64 *)(r10 - 32) ; write_partial(ebpf_packetStart + BYTES(ebpf_packetOffsetInBits) + 0, 4, (ebpf_byte) << 4); 454: r1 &= 15 455: r1 |= r6 456: *(u8 *)(r9 + 14) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 457: r1 = *(u64 *)(r10 - 48) 458: *(u8 *)(r9 + 15) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 459: r1 = *(u64 *)(r10 - 56) 460: *(u8 *)(r9 + 16) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 461: r1 = *(u64 *)(r10 - 40) 462: *(u8 *)(r9 + 17) = r1 463: r1 = 144 LBB0_14: ; if (hd.ipv6.ebpf_valid) { 464: r4 = *(u64 *)(r10 - 184) 465: if r4 == 0 goto 131 ; if (ebpf_packetEnd < ebpf_packetStart + BYTES(ebpf_packetOffsetInBits + 320)) { 466: r4 = r1 467: r4 += 320 468: r4 >>= 3 469: r6 = r9 470: r6 += r4 471: if r6 > r5 goto 134 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 4); 472: r8 <<= 4 ; write_partial(ebpf_packetStart + BYTES(ebpf_packetOffsetInBits) + 0, 4, (ebpf_byte) << 0); 473: r4 = *(u64 *)(r10 - 480) 474: r8 |= r4 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 4); 475: r4 = r1 476: r4 >>= 3 477: r5 = r9 478: r5 += r4 ; write_partial(ebpf_packetStart + BYTES(ebpf_packetOffsetInBits) + 0, 4, (ebpf_byte) << 0); 479: *(u8 *)(r5 + 0) = r8 ; ebpf_packetOffsetInBits += 8; 480: r1 |= 12 ; write_partial(ebpf_packetStart + BYTES(ebpf_packetOffsetInBits) + 0, 4, (ebpf_byte) << 4); 481: r4 = r1 482: r4 >>= 3 483: r5 = r9 484: r5 += r4 485: r4 = *(u8 *)(r5 + 0) 486: r4 &= 240 487: r7 |= r4 488: *(u8 *)(r5 + 0) = r7 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 489: r4 = *(u64 *)(r10 - 488) 490: *(u8 *)(r5 + 1) = r4 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2, (ebpf_byte) << 0); 491: *(u8 *)(r5 + 2) = r3 ; ebpf_packetOffsetInBits += 20; 492: r3 = r1 493: r3 += 20 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 494: r3 >>= 3 495: r4 = r9 496: r4 += r3 497: r5 = *(u64 *)(r10 - 312) 498: *(u8 *)(r4 + 0) = r5 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 499: r3 |= 1 500: r4 = r9 501: r4 += r3 502: r3 = *(u64 *)(r10 - 384) 503: *(u8 *)(r4 + 0) = r3 ; ebpf_packetOffsetInBits += 16; 504: r3 = r1 505: r3 += 36 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 506: r3 >>= 3 507: r4 = r9 508: r4 += r3 509: r3 = *(u64 *)(r10 - 472) 510: *(u8 *)(r4 + 0) = r3 ; ebpf_packetOffsetInBits += 8; 511: r3 = r1 512: r3 += 44 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 513: r3 >>= 3 514: r4 = r9 515: r4 += r3 516: r3 = *(u64 *)(r10 - 464) 517: *(u8 *)(r4 + 0) = r3 ; ebpf_packetOffsetInBits += 8; 518: r3 = r1 519: r3 += 52 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 520: r3 >>= 3 521: r4 = r9 522: r4 += r3 523: r5 = *(u64 *)(r10 - 448) 524: *(u8 *)(r4 + 0) = r5 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 525: r3 |= 1 526: r5 = r9 527: r5 += r3 528: r3 = *(u64 *)(r10 - 456) 529: *(u8 *)(r5 + 0) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2, (ebpf_byte) << 0); 530: r3 = *(u64 *)(r10 - 440) 531: *(u8 *)(r4 + 2) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3, (ebpf_byte) << 0); 532: r3 = *(u64 *)(r10 - 432) 533: *(u8 *)(r4 + 3) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4, (ebpf_byte) << 0); 534: r3 = *(u64 *)(r10 - 424) 535: *(u8 *)(r4 + 4) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5, (ebpf_byte) << 0); 536: r3 = *(u64 *)(r10 - 416) 537: *(u8 *)(r4 + 5) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 6, (ebpf_byte) << 0); 538: r3 = *(u64 *)(r10 - 408) 539: *(u8 *)(r4 + 6) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 7, (ebpf_byte) << 0); 540: r3 = *(u64 *)(r10 - 400) 541: *(u8 *)(r4 + 7) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 8, (ebpf_byte) << 0); 542: r3 = *(u64 *)(r10 - 392) 543: *(u8 *)(r4 + 8) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 9, (ebpf_byte) << 0); 544: r3 = *(u64 *)(r10 - 376) 545: *(u8 *)(r4 + 9) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 10, (ebpf_byte) << 0); 546: r3 = *(u64 *)(r10 - 368) 547: *(u8 *)(r4 + 10) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 11, (ebpf_byte) << 0); 548: r3 = *(u64 *)(r10 - 360) 549: *(u8 *)(r4 + 11) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 12, (ebpf_byte) << 0); 550: r3 = *(u64 *)(r10 - 352) 551: *(u8 *)(r4 + 12) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 13, (ebpf_byte) << 0); 552: r3 = *(u64 *)(r10 - 344) 553: *(u8 *)(r4 + 13) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 14, (ebpf_byte) << 0); 554: r3 = *(u64 *)(r10 - 328) 555: *(u8 *)(r4 + 14) = r3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 15, (ebpf_byte) << 0); 556: r3 = *(u64 *)(r10 - 320) 557: *(u8 *)(r4 + 15) = r3 ; ebpf_packetOffsetInBits += 128; 558: r1 += 180 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 559: r1 >>= 3 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 560: r3 = r1 561: r3 |= 1 562: r4 = r9 563: r4 += r3 564: r9 += r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 0, (ebpf_byte) << 0); 565: r1 = *(u64 *)(r10 - 304) 566: *(u8 *)(r9 + 0) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 1, (ebpf_byte) << 0); 567: r1 = *(u64 *)(r10 - 336) 568: *(u8 *)(r4 + 0) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 2, (ebpf_byte) << 0); 569: r1 = *(u64 *)(r10 - 296) 570: *(u8 *)(r9 + 2) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 3, (ebpf_byte) << 0); 571: r1 = *(u64 *)(r10 - 288) 572: *(u8 *)(r9 + 3) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 4, (ebpf_byte) << 0); 573: r1 = *(u64 *)(r10 - 280) 574: *(u8 *)(r9 + 4) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 5, (ebpf_byte) << 0); 575: r1 = *(u64 *)(r10 - 272) 576: *(u8 *)(r9 + 5) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 6, (ebpf_byte) << 0); 577: r1 = *(u64 *)(r10 - 264) 578: *(u8 *)(r9 + 6) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 7, (ebpf_byte) << 0); 579: r1 = *(u64 *)(r10 - 256) 580: *(u8 *)(r9 + 7) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 8, (ebpf_byte) << 0); 581: r1 = *(u64 *)(r10 - 248) 582: *(u8 *)(r9 + 8) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 9, (ebpf_byte) << 0); 583: r1 = *(u64 *)(r10 - 240) 584: *(u8 *)(r9 + 9) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 10, (ebpf_byte) << 0); 585: r1 = *(u64 *)(r10 - 232) 586: *(u8 *)(r9 + 10) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 11, (ebpf_byte) << 0); 587: r1 = *(u64 *)(r10 - 224) 588: *(u8 *)(r9 + 11) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 12, (ebpf_byte) << 0); 589: r1 = *(u64 *)(r10 - 216) 590: *(u8 *)(r9 + 12) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 13, (ebpf_byte) << 0); 591: r1 = *(u64 *)(r10 - 208) 592: *(u8 *)(r9 + 13) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 14, (ebpf_byte) << 0); 593: r1 = *(u64 *)(r10 - 200) 594: *(u8 *)(r9 + 14) = r1 ; write_byte(ebpf_packetStart, BYTES(ebpf_packetOffsetInBits) + 15, (ebpf_byte) << 0); 595: r1 = *(u64 *)(r10 - 192) 596: *(u8 *)(r9 + 15) = r1 LBB0_17: ; xout.output_port = 0; 597: r3 = r10 598: r3 += -12 599: r2 = r10 600: r2 += -4 ; bpf_map_update_elem(&ebpf_outTable, &ebpf_zero, &xout.output_port, BPF_ANY); 601: r1 = 0ll 603: r4 = 0 604: call 2 ; return xout.output_action; 605: r0 = *(u32 *)(r10 - 16) LBB0_18: ; } 606: exit