xref: /xnu-10002.81.5/tools/lldbmacros/mbufdefines.py (revision 5e3eaea39dcf651e66cb99ba7d70e32cc4a99587)
1from __future__ import absolute_import
2
3from xnu import *
4from utils import *
5import ctypes
6from future.utils import iteritems
7
8MBSHIFT = 20
9MSIZE = 256
10MCLBYTES = 2048
11MBIGCLBYTES = 4096
12M16KCLBYTES = 16384
13
14MB_INUSE = 1
15MB_COMP_INUSE = 2
16MB_SCVALID = 4
17
18SLF_MAPPED = 0x0001
19SLF_PARTIAL = 0x0002
20SLF_DETACHED = 0x0004
21
22INTP = ctypes.POINTER(ctypes.c_int)
23
24MCF_NOCPUCACHE = 0x10
25
26def enum(*sequential, **named):
27    enums = dict(zip(sequential, range(len(sequential))), **named)
28    reverse = dict((value, key) for key, value in iteritems(enums))
29    enums['reverse_mapping'] = reverse
30    return type('Enum', (), enums)
31
32Mbuf_Type = enum(
33    'MT_FREE',
34    'MT_DATA',
35    'MT_HEADER',
36    'MT_SOCKET',
37    'MT_PCB',
38    'MT_RTABLE',
39    'MT_HTABLE',
40    'MT_ATABLE',
41    'MT_SONAME',
42    'MT_SOOPTS',
43    'MT_FTABLE',
44    'MT_RIGHTS',
45    'MT_IFADDR',
46    'MT_CONTROL',
47    'MT_OOBDATA',
48    'MT_TAG',
49    'MT_LAST')
50
51M_EXT           = 0x0001
52M_PKTHDR        = 0x0002
53M_EOR           = 0x0004
54M_PROTO1        = 0x0008
55M_PROTO2        = 0x0010
56M_PROTO3        = 0x0020
57M_LOOP          = 0x0040
58M_PROTO5        = 0x0080
59
60M_BCAST         = 0x0100
61M_MCAST         = 0x0200
62M_FRAG          = 0x0400
63M_FIRSTFRAG     = 0x0800
64M_LASTFRAG      = 0x1000
65M_PROMISC       = 0x2000
66M_HASFCS        = 0x4000
67M_TAGHDR        = 0x8000
68
69mbuf_flags_strings = [
70    "EXT",
71    "PKTHDR",
72    "EOR",
73    "PROTO1",
74    "PROTO2",
75    "PROTO3",
76    "LOOP",
77    "PROTO5",
78
79    "BCAST",
80    "MCAST",
81    "FRAG",
82    "FIRSTFRAG",
83    "LASTFRAG",
84    "PROMISC",
85    "HASFCS",
86    "TAGHDR"]
87
88mbuf_pkt_crumb_strings = [
89    "TS_COMP_REQ",
90    "TS_COMP_CB",
91    "DLIL_OUTPUT",
92    "FLOW_TX",
93    "FQ_ENQUEUE",
94    "FQ_DEQUEUE",
95    "SK_PKT_COPY",
96    "TCP_OUTPUT",
97    "UDP_OUTPUT",
98    "SOSEND",
99    "DLIL_INPUT",
100    "IP_INPUT",
101    "TCP_INPUT",
102    "UDP_INPUT"]
103