|
35 | 35 | "skb_is_nonlinear", |
36 | 36 | "skb_tailroom", |
37 | 37 | "skb_availroom", |
| 38 | + "skb_dump", |
38 | 39 | ) |
39 | 40 |
|
40 | 41 |
|
@@ -315,3 +316,32 @@ def skb_mac_header_was_set(skb: Object) -> int: |
315 | 316 | def skb_transport_header_was_set(skb: Object) -> int: |
316 | 317 | prog = skb.prog_ |
317 | 318 | return skb.transport_header != 65535; |
| 319 | + |
| 320 | + |
| 321 | +def skb_dump(skb: Object) -> None: |
| 322 | + prog = skb.prog_ |
| 323 | + |
| 324 | + headroom = skb_headroom(skb) |
| 325 | + tailroom = skb_tailroom(skb) |
| 326 | + sh = skb_shinfo(skb) |
| 327 | + |
| 328 | + has_mac = skb_mac_header_was_set(skb) |
| 329 | + has_trans = skb_transport_header_was_set(skb) |
| 330 | + |
| 331 | + print("skb len=%u headroom=%u headlen=%u tailroom=%u\n" |
| 332 | + "mac=(%d,%d) net=(%d,%d) trans=%d\n" |
| 333 | + "shinfo(txflags=%u nr_frags=%u gso(size=%hu type=%u segs=%hu))\n" |
| 334 | + "csum(0x%x ip_summed=%u complete_sw=%u valid=%u level=%u)\n" |
| 335 | + "hash(0x%x sw=%u l4=%u) proto=0x%04x pkttype=%u iif=%d\n" % |
| 336 | + (skb.len, headroom, skb_headlen(skb), tailroom, |
| 337 | + skb.mac_header if has_mac else -1, |
| 338 | + skb_mac_header_len(skb) if has_mac else -1, |
| 339 | + skb.network_header, |
| 340 | + skb_network_header_len(skb) if has_trans else -1, |
| 341 | + skb.transport_header if has_trans else -1, |
| 342 | + sh.tx_flags, sh.nr_frags, |
| 343 | + sh.gso_size, sh.gso_type, sh.gso_segs, |
| 344 | + skb.csum, skb.ip_summed, skb.csum_complete_sw, |
| 345 | + skb.csum_valid, skb.csum_level, |
| 346 | + skb.hash, skb.sw_hash, skb.l4_hash, |
| 347 | + skb.protocol, skb.pkt_type, skb.skb_iif)) |
0 commit comments