1 (* WARNING: This file and the corresponding mli (interface) are
2 * automatically generated by the extract/codegen/ program.
4 * Any edits you make to this file will be lost.
6 * To update this file from the latest kernel database, it is recommended
7 * that you do 'make update-kernel-structs'.
11 module StringMap = Map.Make(String);;
12 module AddrMap = Map.Make(Int64);;
13 type kernel_version = string;;
14 let match_err = "failed to match kernel structure";;
15 let struct_missing_err = "struct does not exist in this kernel version";;
16 let unknown_kernel_version version struct_name =
19 "%s: unknown kernel version or
20 struct %s is not supported in this kernel.
21 Try a newer version of virt-mem, or if the guest is not from a
22 supported Linux distribution, see this page about adding support:
23 http://et.redhat.com/~rjones/virt-mem/faq.html
25 version struct_name);;
27 type ('a, 'b) task_struct = ('a * 'b);;
28 type task_struct_shape_fields_1 =
29 { task_struct_shape_fields_1_tasks'next : Virt_mem_mmap.addr;
30 task_struct_shape_fields_1_tasks'next_offset : int;
31 task_struct_shape_fields_1_tasks'next_adjustment : int
33 type task_struct_content_fields_2 =
34 { task_struct_content_fields_2_comm : string;
35 task_struct_content_fields_2_normal_prio : int64;
36 task_struct_content_fields_2_pid : int64;
37 task_struct_content_fields_2_prio : int64;
38 task_struct_content_fields_2_state : int64;
39 task_struct_content_fields_2_static_prio : int64;
40 task_struct_content_fields_2_tasks'prev : Virt_mem_mmap.addr
42 type ('a, 'b) net_device = ('a * 'b);;
43 type net_device_shape_fields_8 =
44 { net_device_shape_fields_8_dev_list'next : Virt_mem_mmap.addr;
45 net_device_shape_fields_8_dev_list'next_offset : int;
46 net_device_shape_fields_8_dev_list'next_adjustment : int;
47 net_device_shape_fields_8_ip6_ptr : Virt_mem_mmap.addr;
48 net_device_shape_fields_8_ip_ptr : Virt_mem_mmap.addr
50 type net_device_content_fields_9 =
51 { net_device_content_fields_9_addr_len : int64;
52 net_device_content_fields_9_dev_list'prev : Virt_mem_mmap.addr;
53 net_device_content_fields_9_flags : int64;
54 net_device_content_fields_9_mtu : int64;
55 net_device_content_fields_9_name : string;
56 net_device_content_fields_9_operstate : int64;
57 net_device_content_fields_9_perm_addr : string
59 type ('a, 'b) net = ('a * 'b);;
60 type net_shape_fields_14 =
61 { net_shape_fields_14_dev_base_head'next : Virt_mem_mmap.addr;
62 net_shape_fields_14_dev_base_head'next_offset : int;
63 net_shape_fields_14_dev_base_head'next_adjustment : int;
64 net_shape_fields_14_dev_base_head'prev : Virt_mem_mmap.addr;
65 net_shape_fields_14_dev_base_head'prev_offset : int;
66 net_shape_fields_14_dev_base_head'prev_adjustment : int
68 type net_content_fields_15 = unit;;
69 type ('a, 'b) in_device = ('a * 'b);;
70 type in_device_shape_fields_20 =
71 { in_device_shape_fields_20_ifa_list : Virt_mem_mmap.addr
73 type in_device_content_fields_21 = unit;;
74 type ('a, 'b) inet6_dev = ('a * 'b);;
75 type inet6_dev_shape_fields_26 =
76 { inet6_dev_shape_fields_26_addr_list : Virt_mem_mmap.addr
78 type inet6_dev_content_fields_27 = unit;;
79 type ('a, 'b) in_ifaddr = ('a * 'b);;
80 type in_ifaddr_shape_fields_32 =
81 { in_ifaddr_shape_fields_32_ifa_next : Virt_mem_mmap.addr
83 type in_ifaddr_content_fields_33 =
84 { in_ifaddr_content_fields_33_ifa_address : int64;
85 in_ifaddr_content_fields_33_ifa_broadcast : int64;
86 in_ifaddr_content_fields_33_ifa_local : int64;
87 in_ifaddr_content_fields_33_ifa_mask : int64
89 type ('a, 'b) inet6_ifaddr = ('a * 'b);;
90 type inet6_ifaddr_shape_fields_38 =
91 { inet6_ifaddr_shape_fields_38_lst_next : Virt_mem_mmap.addr
93 type inet6_ifaddr_content_fields_39 =
94 { inet6_ifaddr_content_fields_39_prefix_len : int64
96 let offset_of_net_device_dev_list'next =
98 StringMap.add "2.6.25.14-69.fc8.i686" 48
99 (StringMap.add "2.6.25.14-108.fc9.ppc" 48
100 (StringMap.add "2.6.25.11-97.fc9.i686" 48
101 (StringMap.add "2.6.25.14-69.fc8.ppc64" 72
102 (StringMap.add "2.6.25.14-69.fc8.i586" 48
103 (StringMap.add "2.6.25.11-97.fc9.x86_64" 72
104 (StringMap.add "2.6.25.14-108.fc9.x86_64" 72
105 (StringMap.add "2.6.25.14-69.fc8.ppc" 48
106 (StringMap.add "2.6.25.14-108.fc9.i686" 48
107 (StringMap.add "2.6.25.14-108.fc9.i586" 48
108 (StringMap.add "2.6.25.14-108.fc9.ppc64" 72
109 (StringMap.add "2.6.25.14-69.fc8.x86_64"
110 72 StringMap.empty)))))))))))
111 in fun kernel_version -> StringMap.find kernel_version map;;
112 let task_struct_parser_3 kernel_version bits =
114 | { state : zero+64 : offset(0), littleendian;
115 prio : zero+32 : offset(224), littleendian;
116 static_prio : zero+32 : offset(256), littleendian;
117 normal_prio : zero+32 : offset(288), littleendian;
118 tasks'next : zero+64 : offset(3840), littleendian;
119 tasks'prev : zero+64 : offset(3904), littleendian;
120 pid : zero+32 : offset(4352), littleendian;
121 comm : 128 : offset(8392), string } ->
123 { task_struct_shape_fields_1_tasks'next = tasks'next;
124 task_struct_shape_fields_1_tasks'next_offset = 480;
125 task_struct_shape_fields_1_tasks'next_adjustment = 480 } in
127 { task_struct_content_fields_2_comm = comm;
128 task_struct_content_fields_2_normal_prio = normal_prio;
129 task_struct_content_fields_2_pid = pid;
130 task_struct_content_fields_2_prio = prio;
131 task_struct_content_fields_2_state = state;
132 task_struct_content_fields_2_static_prio = static_prio;
133 task_struct_content_fields_2_tasks'prev = tasks'prev } in
136 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_3", match_err));;
137 let task_struct_parser_4 kernel_version bits =
139 | { state : zero+64 : offset(0), bigendian;
140 prio : zero+32 : offset(224), bigendian;
141 static_prio : zero+32 : offset(256), bigendian;
142 normal_prio : zero+32 : offset(288), bigendian;
143 tasks'next : zero+64 : offset(3840), bigendian;
144 tasks'prev : zero+64 : offset(3904), bigendian;
145 pid : zero+32 : offset(4352), bigendian;
146 comm : 128 : offset(8392), string } ->
148 { task_struct_shape_fields_1_tasks'next = tasks'next;
149 task_struct_shape_fields_1_tasks'next_offset = 480;
150 task_struct_shape_fields_1_tasks'next_adjustment = 480 } in
152 { task_struct_content_fields_2_comm = comm;
153 task_struct_content_fields_2_normal_prio = normal_prio;
154 task_struct_content_fields_2_pid = pid;
155 task_struct_content_fields_2_prio = prio;
156 task_struct_content_fields_2_state = state;
157 task_struct_content_fields_2_static_prio = static_prio;
158 task_struct_content_fields_2_tasks'prev = tasks'prev } in
161 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_4", match_err));;
162 let task_struct_parser_5 kernel_version bits =
164 | { state : zero+32 : offset(0), littleendian;
165 prio : zero+32 : offset(160), littleendian;
166 static_prio : zero+32 : offset(192), littleendian;
167 normal_prio : zero+32 : offset(224), littleendian;
168 tasks'next : zero+32 : offset(3200), littleendian;
169 tasks'prev : zero+32 : offset(3232), littleendian;
170 pid : zero+32 : offset(3552), littleendian;
171 comm : 128 : offset(5896), string } ->
173 { task_struct_shape_fields_1_tasks'next = tasks'next;
174 task_struct_shape_fields_1_tasks'next_offset = 400;
175 task_struct_shape_fields_1_tasks'next_adjustment = 400 } in
177 { task_struct_content_fields_2_comm = comm;
178 task_struct_content_fields_2_normal_prio = normal_prio;
179 task_struct_content_fields_2_pid = pid;
180 task_struct_content_fields_2_prio = prio;
181 task_struct_content_fields_2_state = state;
182 task_struct_content_fields_2_static_prio = static_prio;
183 task_struct_content_fields_2_tasks'prev = tasks'prev } in
186 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_5", match_err));;
187 let task_struct_parser_6 kernel_version bits =
189 | { state : zero+32 : offset(0), littleendian;
190 prio : zero+32 : offset(160), littleendian;
191 static_prio : zero+32 : offset(192), littleendian;
192 normal_prio : zero+32 : offset(224), littleendian;
193 tasks'next : zero+32 : offset(3232), littleendian;
194 tasks'prev : zero+32 : offset(3264), littleendian;
195 pid : zero+32 : offset(3584), littleendian;
196 comm : 128 : offset(5928), string } ->
198 { task_struct_shape_fields_1_tasks'next = tasks'next;
199 task_struct_shape_fields_1_tasks'next_offset = 404;
200 task_struct_shape_fields_1_tasks'next_adjustment = 404 } in
202 { task_struct_content_fields_2_comm = comm;
203 task_struct_content_fields_2_normal_prio = normal_prio;
204 task_struct_content_fields_2_pid = pid;
205 task_struct_content_fields_2_prio = prio;
206 task_struct_content_fields_2_state = state;
207 task_struct_content_fields_2_static_prio = static_prio;
208 task_struct_content_fields_2_tasks'prev = tasks'prev } in
211 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_6", match_err));;
212 let task_struct_parser_7 kernel_version bits =
214 | { state : zero+32 : offset(0), bigendian;
215 prio : zero+32 : offset(160), bigendian;
216 static_prio : zero+32 : offset(192), bigendian;
217 normal_prio : zero+32 : offset(224), bigendian;
218 tasks'next : zero+32 : offset(3328), bigendian;
219 tasks'prev : zero+32 : offset(3360), bigendian;
220 pid : zero+32 : offset(3680), bigendian;
221 comm : 128 : offset(6056), string } ->
223 { task_struct_shape_fields_1_tasks'next = tasks'next;
224 task_struct_shape_fields_1_tasks'next_offset = 416;
225 task_struct_shape_fields_1_tasks'next_adjustment = 416 } in
227 { task_struct_content_fields_2_comm = comm;
228 task_struct_content_fields_2_normal_prio = normal_prio;
229 task_struct_content_fields_2_pid = pid;
230 task_struct_content_fields_2_prio = prio;
231 task_struct_content_fields_2_state = state;
232 task_struct_content_fields_2_static_prio = static_prio;
233 task_struct_content_fields_2_tasks'prev = tasks'prev } in
236 raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_7", match_err));;
237 let net_device_parser_10 kernel_version bits =
239 | { name : 128 : offset(0), string;
240 dev_list'next : zero+64 : offset(576), littleendian;
241 dev_list'prev : zero+64 : offset(640), littleendian;
242 flags : zero+32 : offset(2880), littleendian;
243 operstate : zero+8 : offset(2960), littleendian;
244 mtu : zero+32 : offset(2976), littleendian;
245 perm_addr : 256 : offset(3136), string;
246 addr_len : zero+8 : offset(3392), littleendian;
247 ip_ptr : zero+64 : offset(3840), littleendian;
248 ip6_ptr : zero+64 : offset(3968), littleendian } ->
250 { net_device_shape_fields_8_dev_list'next = dev_list'next;
251 net_device_shape_fields_8_dev_list'next_offset = 72;
252 net_device_shape_fields_8_dev_list'next_adjustment = 72;
253 net_device_shape_fields_8_ip6_ptr = ip6_ptr;
254 net_device_shape_fields_8_ip_ptr = ip_ptr } in
256 { net_device_content_fields_9_addr_len = addr_len;
257 net_device_content_fields_9_dev_list'prev = dev_list'prev;
258 net_device_content_fields_9_flags = flags;
259 net_device_content_fields_9_mtu = mtu;
260 net_device_content_fields_9_name = name;
261 net_device_content_fields_9_operstate = operstate;
262 net_device_content_fields_9_perm_addr = perm_addr } in
265 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_10", match_err));;
266 let net_device_parser_11 kernel_version bits =
268 | { name : 128 : offset(0), string;
269 dev_list'next : zero+64 : offset(576), bigendian;
270 dev_list'prev : zero+64 : offset(640), bigendian;
271 flags : zero+32 : offset(2880), bigendian;
272 operstate : zero+8 : offset(2960), bigendian;
273 mtu : zero+32 : offset(2976), bigendian;
274 perm_addr : 256 : offset(3136), string;
275 addr_len : zero+8 : offset(3392), bigendian;
276 ip_ptr : zero+64 : offset(3840), bigendian;
277 ip6_ptr : zero+64 : offset(3968), bigendian } ->
279 { net_device_shape_fields_8_dev_list'next = dev_list'next;
280 net_device_shape_fields_8_dev_list'next_offset = 72;
281 net_device_shape_fields_8_dev_list'next_adjustment = 72;
282 net_device_shape_fields_8_ip6_ptr = ip6_ptr;
283 net_device_shape_fields_8_ip_ptr = ip_ptr } in
285 { net_device_content_fields_9_addr_len = addr_len;
286 net_device_content_fields_9_dev_list'prev = dev_list'prev;
287 net_device_content_fields_9_flags = flags;
288 net_device_content_fields_9_mtu = mtu;
289 net_device_content_fields_9_name = name;
290 net_device_content_fields_9_operstate = operstate;
291 net_device_content_fields_9_perm_addr = perm_addr } in
294 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_11", match_err));;
295 let net_device_parser_12 kernel_version bits =
297 | { name : 128 : offset(0), string;
298 dev_list'next : zero+32 : offset(384), littleendian;
299 dev_list'prev : zero+32 : offset(416), littleendian;
300 flags : zero+32 : offset(1568), littleendian;
301 operstate : zero+8 : offset(1648), littleendian;
302 mtu : zero+32 : offset(1664), littleendian;
303 perm_addr : 256 : offset(1760), string;
304 addr_len : zero+8 : offset(2016), littleendian;
305 ip_ptr : zero+32 : offset(2304), littleendian;
306 ip6_ptr : zero+32 : offset(2368), littleendian } ->
308 { net_device_shape_fields_8_dev_list'next = dev_list'next;
309 net_device_shape_fields_8_dev_list'next_offset = 48;
310 net_device_shape_fields_8_dev_list'next_adjustment = 48;
311 net_device_shape_fields_8_ip6_ptr = ip6_ptr;
312 net_device_shape_fields_8_ip_ptr = ip_ptr } in
314 { net_device_content_fields_9_addr_len = addr_len;
315 net_device_content_fields_9_dev_list'prev = dev_list'prev;
316 net_device_content_fields_9_flags = flags;
317 net_device_content_fields_9_mtu = mtu;
318 net_device_content_fields_9_name = name;
319 net_device_content_fields_9_operstate = operstate;
320 net_device_content_fields_9_perm_addr = perm_addr } in
323 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_12", match_err));;
324 let net_device_parser_13 kernel_version bits =
326 | { name : 128 : offset(0), string;
327 dev_list'next : zero+32 : offset(384), bigendian;
328 dev_list'prev : zero+32 : offset(416), bigendian;
329 flags : zero+32 : offset(1568), bigendian;
330 operstate : zero+8 : offset(1648), bigendian;
331 mtu : zero+32 : offset(1664), bigendian;
332 perm_addr : 256 : offset(1760), string;
333 addr_len : zero+8 : offset(2016), bigendian;
334 ip_ptr : zero+32 : offset(2304), bigendian;
335 ip6_ptr : zero+32 : offset(2368), bigendian } ->
337 { net_device_shape_fields_8_dev_list'next = dev_list'next;
338 net_device_shape_fields_8_dev_list'next_offset = 48;
339 net_device_shape_fields_8_dev_list'next_adjustment = 48;
340 net_device_shape_fields_8_ip6_ptr = ip6_ptr;
341 net_device_shape_fields_8_ip_ptr = ip_ptr } in
343 { net_device_content_fields_9_addr_len = addr_len;
344 net_device_content_fields_9_dev_list'prev = dev_list'prev;
345 net_device_content_fields_9_flags = flags;
346 net_device_content_fields_9_mtu = mtu;
347 net_device_content_fields_9_name = name;
348 net_device_content_fields_9_operstate = operstate;
349 net_device_content_fields_9_perm_addr = perm_addr } in
352 raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_13", match_err));;
353 let net_parser_18 kernel_version bits =
355 | { dev_base_head'next : zero+32 : offset(416), littleendian;
356 dev_base_head'prev : zero+32 : offset(448), littleendian } ->
358 { net_shape_fields_14_dev_base_head'next = dev_base_head'next;
359 net_shape_fields_14_dev_base_head'next_offset = 52;
360 net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
361 net_shape_fields_14_dev_base_head'prev = dev_base_head'prev;
362 net_shape_fields_14_dev_base_head'prev_offset = 56;
363 net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in
368 raise (Virt_mem_types.ParseError ("net", "net_parser_18", match_err));;
369 let net_parser_19 kernel_version bits =
371 | { dev_base_head'next : zero+32 : offset(416), bigendian;
372 dev_base_head'prev : zero+32 : offset(448), bigendian } ->
374 { net_shape_fields_14_dev_base_head'next = dev_base_head'next;
375 net_shape_fields_14_dev_base_head'next_offset = 52;
376 net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
377 net_shape_fields_14_dev_base_head'prev = dev_base_head'prev;
378 net_shape_fields_14_dev_base_head'prev_offset = 56;
379 net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in
384 raise (Virt_mem_types.ParseError ("net", "net_parser_19", match_err));;
385 let net_parser_16 kernel_version bits =
387 | { dev_base_head'next : zero+64 : offset(768), littleendian;
388 dev_base_head'prev : zero+64 : offset(832), littleendian } ->
390 { net_shape_fields_14_dev_base_head'next = dev_base_head'next;
391 net_shape_fields_14_dev_base_head'next_offset = 96;
392 net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
393 net_shape_fields_14_dev_base_head'prev = dev_base_head'prev;
394 net_shape_fields_14_dev_base_head'prev_offset = 104;
395 net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in
400 raise (Virt_mem_types.ParseError ("net", "net_parser_16", match_err));;
401 let net_parser_17 kernel_version bits =
403 | { dev_base_head'next : zero+64 : offset(768), bigendian;
404 dev_base_head'prev : zero+64 : offset(832), bigendian } ->
406 { net_shape_fields_14_dev_base_head'next = dev_base_head'next;
407 net_shape_fields_14_dev_base_head'next_offset = 96;
408 net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version;
409 net_shape_fields_14_dev_base_head'prev = dev_base_head'prev;
410 net_shape_fields_14_dev_base_head'prev_offset = 104;
411 net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in
416 raise (Virt_mem_types.ParseError ("net", "net_parser_17", match_err));;
417 let in_device_parser_24 kernel_version bits =
419 | { ifa_list : zero+32 : offset(96), littleendian } ->
421 { in_device_shape_fields_20_ifa_list = ifa_list } in
426 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_24", match_err));;
427 let in_device_parser_25 kernel_version bits =
429 | { ifa_list : zero+32 : offset(96), bigendian } ->
431 { in_device_shape_fields_20_ifa_list = ifa_list } in
436 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_25", match_err));;
437 let in_device_parser_22 kernel_version bits =
439 | { ifa_list : zero+64 : offset(128), littleendian } ->
441 { in_device_shape_fields_20_ifa_list = ifa_list } in
446 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_22", match_err));;
447 let in_device_parser_23 kernel_version bits =
449 | { ifa_list : zero+64 : offset(128), bigendian } ->
451 { in_device_shape_fields_20_ifa_list = ifa_list } in
456 raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_23", match_err));;
457 let inet6_dev_parser_30 kernel_version bits =
459 | { addr_list : zero+32 : offset(32), littleendian } ->
461 { inet6_dev_shape_fields_26_addr_list = addr_list } in
466 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_30", match_err));;
467 let inet6_dev_parser_31 kernel_version bits =
469 | { addr_list : zero+32 : offset(32), bigendian } ->
471 { inet6_dev_shape_fields_26_addr_list = addr_list } in
476 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_31", match_err));;
477 let inet6_dev_parser_28 kernel_version bits =
479 | { addr_list : zero+64 : offset(64), littleendian } ->
481 { inet6_dev_shape_fields_26_addr_list = addr_list } in
486 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_28", match_err));;
487 let inet6_dev_parser_29 kernel_version bits =
489 | { addr_list : zero+64 : offset(64), bigendian } ->
491 { inet6_dev_shape_fields_26_addr_list = addr_list } in
496 raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_29", match_err));;
497 let in_ifaddr_parser_36 kernel_version bits =
499 | { ifa_next : zero+32 : offset(0), littleendian;
500 ifa_local : zero+32 : offset(128), littleendian;
501 ifa_address : zero+32 : offset(160), littleendian;
502 ifa_mask : zero+32 : offset(192), littleendian;
503 ifa_broadcast : zero+32 : offset(224), littleendian } ->
505 { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
507 { in_ifaddr_content_fields_33_ifa_address = ifa_address;
508 in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
509 in_ifaddr_content_fields_33_ifa_local = ifa_local;
510 in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
513 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_36", match_err));;
514 let in_ifaddr_parser_37 kernel_version bits =
516 | { ifa_next : zero+32 : offset(0), bigendian;
517 ifa_local : zero+32 : offset(128), bigendian;
518 ifa_address : zero+32 : offset(160), bigendian;
519 ifa_mask : zero+32 : offset(192), bigendian;
520 ifa_broadcast : zero+32 : offset(224), bigendian } ->
522 { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
524 { in_ifaddr_content_fields_33_ifa_address = ifa_address;
525 in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
526 in_ifaddr_content_fields_33_ifa_local = ifa_local;
527 in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
530 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_37", match_err));;
531 let in_ifaddr_parser_34 kernel_version bits =
533 | { ifa_next : zero+64 : offset(0), littleendian;
534 ifa_local : zero+32 : offset(256), littleendian;
535 ifa_address : zero+32 : offset(288), littleendian;
536 ifa_mask : zero+32 : offset(320), littleendian;
537 ifa_broadcast : zero+32 : offset(352), littleendian } ->
539 { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
541 { in_ifaddr_content_fields_33_ifa_address = ifa_address;
542 in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
543 in_ifaddr_content_fields_33_ifa_local = ifa_local;
544 in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
547 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_34", match_err));;
548 let in_ifaddr_parser_35 kernel_version bits =
550 | { ifa_next : zero+64 : offset(0), bigendian;
551 ifa_local : zero+32 : offset(256), bigendian;
552 ifa_address : zero+32 : offset(288), bigendian;
553 ifa_mask : zero+32 : offset(320), bigendian;
554 ifa_broadcast : zero+32 : offset(352), bigendian } ->
556 { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in
558 { in_ifaddr_content_fields_33_ifa_address = ifa_address;
559 in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast;
560 in_ifaddr_content_fields_33_ifa_local = ifa_local;
561 in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in
564 raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_35", match_err));;
565 let inet6_ifaddr_parser_42 kernel_version bits =
567 | { prefix_len : zero+32 : offset(128), littleendian;
568 lst_next : zero+32 : offset(832), littleendian } ->
570 { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
572 { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
575 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_42", match_err));;
576 let inet6_ifaddr_parser_40 kernel_version bits =
578 | { prefix_len : zero+32 : offset(128), littleendian;
579 lst_next : zero+64 : offset(1280), littleendian } ->
581 { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
583 { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
586 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_40", match_err));;
587 let inet6_ifaddr_parser_41 kernel_version bits =
589 | { prefix_len : zero+32 : offset(128), bigendian;
590 lst_next : zero+64 : offset(1280), bigendian } ->
592 { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
594 { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
597 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_41", match_err));;
598 let inet6_ifaddr_parser_43 kernel_version bits =
600 | { prefix_len : zero+32 : offset(128), bigendian;
601 lst_next : zero+32 : offset(800), bigendian } ->
603 { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in
605 { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in
608 raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_43", match_err));;
609 let task_struct_shape_fields_1_follower load followers map addr shape =
610 let (_, _, _, _, _, _, f) = followers in
611 let offset = shape.task_struct_shape_fields_1_tasks'next_offset
612 and adj = shape.task_struct_shape_fields_1_tasks'next_adjustment in
613 let offset = Int64.of_int offset and adj = Int64.of_int adj in
614 let addr = Int64.sub (Int64.add addr offset) adj in
615 let map = AddrMap.add addr ("task_struct", 0) map in
616 let out_addr = Int64.sub shape.task_struct_shape_fields_1_tasks'next adj in
617 let map = f load followers map out_addr in map;;
618 let net_device_shape_fields_8_follower load followers map addr shape =
619 let (_, _, _, _, _, f, _) = followers in
620 let offset = shape.net_device_shape_fields_8_dev_list'next_offset
621 and adj = shape.net_device_shape_fields_8_dev_list'next_adjustment in
622 let offset = Int64.of_int offset and adj = Int64.of_int adj in
623 let addr = Int64.sub (Int64.add addr offset) adj in
624 let map = AddrMap.add addr ("net_device", 0) map in
626 Int64.sub shape.net_device_shape_fields_8_dev_list'next adj in
627 let map = f load followers map out_addr in
628 let (_, _, f, _, _, _, _) = followers in
629 let map = f load followers map shape.net_device_shape_fields_8_ip6_ptr in
630 let (_, _, _, f, _, _, _) = followers in
631 let map = f load followers map shape.net_device_shape_fields_8_ip_ptr
633 let net_shape_fields_14_follower load followers map addr shape =
634 let (_, _, _, _, _, f, _) = followers in
635 let offset = shape.net_shape_fields_14_dev_base_head'next_offset
636 and adj = shape.net_shape_fields_14_dev_base_head'next_adjustment in
637 let offset = Int64.of_int offset and adj = Int64.of_int adj in
638 let addr = Int64.sub (Int64.add addr offset) adj in
639 let map = AddrMap.add addr ("net_device", 0) map in
641 Int64.sub shape.net_shape_fields_14_dev_base_head'next adj in
642 let map = f load followers map out_addr in
643 let (_, _, _, _, _, f, _) = followers in
644 let offset = shape.net_shape_fields_14_dev_base_head'prev_offset
645 and adj = shape.net_shape_fields_14_dev_base_head'prev_adjustment in
646 let offset = Int64.of_int offset and adj = Int64.of_int adj in
647 let addr = Int64.sub (Int64.add addr offset) adj in
648 let map = AddrMap.add addr ("net_device", 0) map in
650 Int64.sub shape.net_shape_fields_14_dev_base_head'prev adj in
651 let map = f load followers map out_addr in map;;
652 let in_device_shape_fields_20_follower load followers map addr shape =
653 let (_, f, _, _, _, _, _) = followers in
654 let map = f load followers map shape.in_device_shape_fields_20_ifa_list
656 let inet6_dev_shape_fields_26_follower load followers map addr shape =
657 let (f, _, _, _, _, _, _) = followers in
658 let map = f load followers map shape.inet6_dev_shape_fields_26_addr_list
660 let in_ifaddr_shape_fields_32_follower load followers map addr shape =
661 let (_, f, _, _, _, _, _) = followers in
662 let map = f load followers map shape.in_ifaddr_shape_fields_32_ifa_next
664 let inet6_ifaddr_shape_fields_38_follower load followers map addr shape =
665 let (f, _, _, _, _, _, _) = followers in
666 let map = f load followers map shape.inet6_ifaddr_shape_fields_38_lst_next
668 let kv_follower kernel_version struct_name total_size parserfn followerfn
669 load followers map addr =
670 if (addr <> 0L) && (not (AddrMap.mem addr map))
672 (let map = AddrMap.add addr (struct_name, total_size) map in
673 let bits = load struct_name addr total_size in
674 let (shape, _) = parserfn kernel_version bits
675 in followerfn load followers map addr shape)
677 let task_struct_kv0_follower =
678 kv_follower "2.6.25.14-69.fc8.x86_64" "task_struct" 2496
679 task_struct_parser_3 task_struct_shape_fields_1_follower;;
680 let task_struct_kv1_follower =
681 kv_follower "2.6.25.14-108.fc9.ppc64" "task_struct" 2524
682 task_struct_parser_4 task_struct_shape_fields_1_follower;;
683 let task_struct_kv2_follower =
684 kv_follower "2.6.25.14-108.fc9.i586" "task_struct" 1832
685 task_struct_parser_5 task_struct_shape_fields_1_follower;;
686 let task_struct_kv3_follower =
687 kv_follower "2.6.25.14-108.fc9.i686" "task_struct" 1832
688 task_struct_parser_6 task_struct_shape_fields_1_follower;;
689 let task_struct_kv4_follower =
690 kv_follower "2.6.25.14-69.fc8.ppc" "task_struct" 1952 task_struct_parser_7
691 task_struct_shape_fields_1_follower;;
692 let task_struct_kv5_follower =
693 kv_follower "2.6.25.14-108.fc9.x86_64" "task_struct" 2496
694 task_struct_parser_3 task_struct_shape_fields_1_follower;;
695 let task_struct_kv6_follower =
696 kv_follower "2.6.25.11-97.fc9.x86_64" "task_struct" 2496
697 task_struct_parser_3 task_struct_shape_fields_1_follower;;
698 let task_struct_kv7_follower =
699 kv_follower "2.6.25.14-69.fc8.i586" "task_struct" 1832 task_struct_parser_5
700 task_struct_shape_fields_1_follower;;
701 let task_struct_kv8_follower =
702 kv_follower "2.6.25.14-69.fc8.ppc64" "task_struct" 2524
703 task_struct_parser_4 task_struct_shape_fields_1_follower;;
704 let task_struct_kv9_follower =
705 kv_follower "2.6.25.11-97.fc9.i686" "task_struct" 1832 task_struct_parser_6
706 task_struct_shape_fields_1_follower;;
707 let task_struct_kv10_follower =
708 kv_follower "2.6.25.14-108.fc9.ppc" "task_struct" 1952 task_struct_parser_7
709 task_struct_shape_fields_1_follower;;
710 let task_struct_kv11_follower =
711 kv_follower "2.6.25.14-69.fc8.i686" "task_struct" 1832 task_struct_parser_6
712 task_struct_shape_fields_1_follower;;
713 let net_device_kv0_follower =
714 kv_follower "2.6.25.14-69.fc8.x86_64" "net_device" 1752
715 net_device_parser_10 net_device_shape_fields_8_follower;;
716 let net_device_kv1_follower =
717 kv_follower "2.6.25.14-108.fc9.ppc64" "net_device" 1776
718 net_device_parser_11 net_device_shape_fields_8_follower;;
719 let net_device_kv2_follower =
720 kv_follower "2.6.25.14-108.fc9.i586" "net_device" 1212 net_device_parser_12
721 net_device_shape_fields_8_follower;;
722 let net_device_kv3_follower =
723 kv_follower "2.6.25.14-108.fc9.i686" "net_device" 1212 net_device_parser_12
724 net_device_shape_fields_8_follower;;
725 let net_device_kv4_follower =
726 kv_follower "2.6.25.14-69.fc8.ppc" "net_device" 904 net_device_parser_13
727 net_device_shape_fields_8_follower;;
728 let net_device_kv5_follower =
729 kv_follower "2.6.25.14-108.fc9.x86_64" "net_device" 1752
730 net_device_parser_10 net_device_shape_fields_8_follower;;
731 let net_device_kv6_follower =
732 kv_follower "2.6.25.11-97.fc9.x86_64" "net_device" 1752
733 net_device_parser_10 net_device_shape_fields_8_follower;;
734 let net_device_kv7_follower =
735 kv_follower "2.6.25.14-69.fc8.i586" "net_device" 1212 net_device_parser_12
736 net_device_shape_fields_8_follower;;
737 let net_device_kv8_follower =
738 kv_follower "2.6.25.14-69.fc8.ppc64" "net_device" 1776 net_device_parser_11
739 net_device_shape_fields_8_follower;;
740 let net_device_kv9_follower =
741 kv_follower "2.6.25.11-97.fc9.i686" "net_device" 1212 net_device_parser_12
742 net_device_shape_fields_8_follower;;
743 let net_device_kv10_follower =
744 kv_follower "2.6.25.14-108.fc9.ppc" "net_device" 904 net_device_parser_13
745 net_device_shape_fields_8_follower;;
746 let net_device_kv11_follower =
747 kv_follower "2.6.25.14-69.fc8.i686" "net_device" 1212 net_device_parser_12
748 net_device_shape_fields_8_follower;;
749 let net_kv0_follower =
750 kv_follower "2.6.25.14-69.fc8.x86_64" "net" 488 net_parser_16
751 net_shape_fields_14_follower;;
752 let net_kv1_follower =
753 kv_follower "2.6.25.14-108.fc9.ppc64" "net" 488 net_parser_17
754 net_shape_fields_14_follower;;
755 let net_kv2_follower =
756 kv_follower "2.6.25.14-108.fc9.i586" "net" 284 net_parser_18
757 net_shape_fields_14_follower;;
758 let net_kv3_follower =
759 kv_follower "2.6.25.14-108.fc9.i686" "net" 284 net_parser_18
760 net_shape_fields_14_follower;;
761 let net_kv4_follower =
762 kv_follower "2.6.25.14-69.fc8.ppc" "net" 276 net_parser_19
763 net_shape_fields_14_follower;;
764 let net_kv5_follower =
765 kv_follower "2.6.25.14-108.fc9.x86_64" "net" 488 net_parser_16
766 net_shape_fields_14_follower;;
767 let net_kv6_follower =
768 kv_follower "2.6.25.11-97.fc9.x86_64" "net" 488 net_parser_16
769 net_shape_fields_14_follower;;
770 let net_kv7_follower =
771 kv_follower "2.6.25.14-69.fc8.i586" "net" 284 net_parser_18
772 net_shape_fields_14_follower;;
773 let net_kv8_follower =
774 kv_follower "2.6.25.14-69.fc8.ppc64" "net" 488 net_parser_17
775 net_shape_fields_14_follower;;
776 let net_kv9_follower =
777 kv_follower "2.6.25.11-97.fc9.i686" "net" 284 net_parser_18
778 net_shape_fields_14_follower;;
779 let net_kv10_follower =
780 kv_follower "2.6.25.14-108.fc9.ppc" "net" 276 net_parser_19
781 net_shape_fields_14_follower;;
782 let net_kv11_follower =
783 kv_follower "2.6.25.14-69.fc8.i686" "net" 284 net_parser_18
784 net_shape_fields_14_follower;;
785 let in_device_kv0_follower =
786 kv_follower "2.6.25.14-69.fc8.x86_64" "in_device" 368 in_device_parser_22
787 in_device_shape_fields_20_follower;;
788 let in_device_kv1_follower =
789 kv_follower "2.6.25.14-108.fc9.ppc64" "in_device" 368 in_device_parser_23
790 in_device_shape_fields_20_follower;;
791 let in_device_kv2_follower =
792 kv_follower "2.6.25.14-108.fc9.i586" "in_device" 244 in_device_parser_24
793 in_device_shape_fields_20_follower;;
794 let in_device_kv3_follower =
795 kv_follower "2.6.25.14-108.fc9.i686" "in_device" 244 in_device_parser_24
796 in_device_shape_fields_20_follower;;
797 let in_device_kv4_follower =
798 kv_follower "2.6.25.14-69.fc8.ppc" "in_device" 236 in_device_parser_25
799 in_device_shape_fields_20_follower;;
800 let in_device_kv5_follower =
801 kv_follower "2.6.25.14-108.fc9.x86_64" "in_device" 368 in_device_parser_22
802 in_device_shape_fields_20_follower;;
803 let in_device_kv6_follower =
804 kv_follower "2.6.25.11-97.fc9.x86_64" "in_device" 368 in_device_parser_22
805 in_device_shape_fields_20_follower;;
806 let in_device_kv7_follower =
807 kv_follower "2.6.25.14-69.fc8.i586" "in_device" 244 in_device_parser_24
808 in_device_shape_fields_20_follower;;
809 let in_device_kv8_follower =
810 kv_follower "2.6.25.14-69.fc8.ppc64" "in_device" 368 in_device_parser_23
811 in_device_shape_fields_20_follower;;
812 let in_device_kv9_follower =
813 kv_follower "2.6.25.11-97.fc9.i686" "in_device" 244 in_device_parser_24
814 in_device_shape_fields_20_follower;;
815 let in_device_kv10_follower =
816 kv_follower "2.6.25.14-108.fc9.ppc" "in_device" 236 in_device_parser_25
817 in_device_shape_fields_20_follower;;
818 let in_device_kv11_follower =
819 kv_follower "2.6.25.14-69.fc8.i686" "in_device" 244 in_device_parser_24
820 in_device_shape_fields_20_follower;;
821 let inet6_dev_kv0_follower =
822 kv_follower "2.6.25.14-69.fc8.x86_64" "inet6_dev" 536 inet6_dev_parser_28
823 inet6_dev_shape_fields_26_follower;;
824 let inet6_dev_kv1_follower =
825 kv_follower "2.6.25.14-108.fc9.ppc64" "inet6_dev" 536 inet6_dev_parser_29
826 inet6_dev_shape_fields_26_follower;;
827 let inet6_dev_kv2_follower =
828 kv_follower "2.6.25.14-108.fc9.i586" "inet6_dev" 356 inet6_dev_parser_30
829 inet6_dev_shape_fields_26_follower;;
830 let inet6_dev_kv3_follower =
831 kv_follower "2.6.25.14-108.fc9.i686" "inet6_dev" 356 inet6_dev_parser_30
832 inet6_dev_shape_fields_26_follower;;
833 let inet6_dev_kv4_follower =
834 kv_follower "2.6.25.14-69.fc8.ppc" "inet6_dev" 348 inet6_dev_parser_31
835 inet6_dev_shape_fields_26_follower;;
836 let inet6_dev_kv5_follower =
837 kv_follower "2.6.25.14-108.fc9.x86_64" "inet6_dev" 536 inet6_dev_parser_28
838 inet6_dev_shape_fields_26_follower;;
839 let inet6_dev_kv6_follower =
840 kv_follower "2.6.25.11-97.fc9.x86_64" "inet6_dev" 536 inet6_dev_parser_28
841 inet6_dev_shape_fields_26_follower;;
842 let inet6_dev_kv7_follower =
843 kv_follower "2.6.25.14-69.fc8.i586" "inet6_dev" 356 inet6_dev_parser_30
844 inet6_dev_shape_fields_26_follower;;
845 let inet6_dev_kv8_follower =
846 kv_follower "2.6.25.14-69.fc8.ppc64" "inet6_dev" 536 inet6_dev_parser_29
847 inet6_dev_shape_fields_26_follower;;
848 let inet6_dev_kv9_follower =
849 kv_follower "2.6.25.11-97.fc9.i686" "inet6_dev" 356 inet6_dev_parser_30
850 inet6_dev_shape_fields_26_follower;;
851 let inet6_dev_kv10_follower =
852 kv_follower "2.6.25.14-108.fc9.ppc" "inet6_dev" 348 inet6_dev_parser_31
853 inet6_dev_shape_fields_26_follower;;
854 let inet6_dev_kv11_follower =
855 kv_follower "2.6.25.14-69.fc8.i686" "inet6_dev" 356 inet6_dev_parser_30
856 inet6_dev_shape_fields_26_follower;;
857 let in_ifaddr_kv0_follower =
858 kv_follower "2.6.25.14-69.fc8.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34
859 in_ifaddr_shape_fields_32_follower;;
860 let in_ifaddr_kv1_follower =
861 kv_follower "2.6.25.14-108.fc9.ppc64" "in_ifaddr" 71 in_ifaddr_parser_35
862 in_ifaddr_shape_fields_32_follower;;
863 let in_ifaddr_kv2_follower =
864 kv_follower "2.6.25.14-108.fc9.i586" "in_ifaddr" 55 in_ifaddr_parser_36
865 in_ifaddr_shape_fields_32_follower;;
866 let in_ifaddr_kv3_follower =
867 kv_follower "2.6.25.14-108.fc9.i686" "in_ifaddr" 55 in_ifaddr_parser_36
868 in_ifaddr_shape_fields_32_follower;;
869 let in_ifaddr_kv4_follower =
870 kv_follower "2.6.25.14-69.fc8.ppc" "in_ifaddr" 55 in_ifaddr_parser_37
871 in_ifaddr_shape_fields_32_follower;;
872 let in_ifaddr_kv5_follower =
873 kv_follower "2.6.25.14-108.fc9.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34
874 in_ifaddr_shape_fields_32_follower;;
875 let in_ifaddr_kv6_follower =
876 kv_follower "2.6.25.11-97.fc9.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34
877 in_ifaddr_shape_fields_32_follower;;
878 let in_ifaddr_kv7_follower =
879 kv_follower "2.6.25.14-69.fc8.i586" "in_ifaddr" 55 in_ifaddr_parser_36
880 in_ifaddr_shape_fields_32_follower;;
881 let in_ifaddr_kv8_follower =
882 kv_follower "2.6.25.14-69.fc8.ppc64" "in_ifaddr" 71 in_ifaddr_parser_35
883 in_ifaddr_shape_fields_32_follower;;
884 let in_ifaddr_kv9_follower =
885 kv_follower "2.6.25.11-97.fc9.i686" "in_ifaddr" 55 in_ifaddr_parser_36
886 in_ifaddr_shape_fields_32_follower;;
887 let in_ifaddr_kv10_follower =
888 kv_follower "2.6.25.14-108.fc9.ppc" "in_ifaddr" 55 in_ifaddr_parser_37
889 in_ifaddr_shape_fields_32_follower;;
890 let in_ifaddr_kv11_follower =
891 kv_follower "2.6.25.14-69.fc8.i686" "in_ifaddr" 55 in_ifaddr_parser_36
892 in_ifaddr_shape_fields_32_follower;;
893 let inet6_ifaddr_kv0_follower =
894 kv_follower "2.6.25.14-69.fc8.x86_64" "inet6_ifaddr" 200
895 inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;;
896 let inet6_ifaddr_kv1_follower =
897 kv_follower "2.6.25.14-108.fc9.ppc64" "inet6_ifaddr" 200
898 inet6_ifaddr_parser_41 inet6_ifaddr_shape_fields_38_follower;;
899 let inet6_ifaddr_kv2_follower =
900 kv_follower "2.6.25.14-108.fc9.i586" "inet6_ifaddr" 128
901 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
902 let inet6_ifaddr_kv3_follower =
903 kv_follower "2.6.25.14-108.fc9.i686" "inet6_ifaddr" 128
904 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
905 let inet6_ifaddr_kv4_follower =
906 kv_follower "2.6.25.14-69.fc8.ppc" "inet6_ifaddr" 124
907 inet6_ifaddr_parser_43 inet6_ifaddr_shape_fields_38_follower;;
908 let inet6_ifaddr_kv5_follower =
909 kv_follower "2.6.25.14-108.fc9.x86_64" "inet6_ifaddr" 200
910 inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;;
911 let inet6_ifaddr_kv6_follower =
912 kv_follower "2.6.25.11-97.fc9.x86_64" "inet6_ifaddr" 200
913 inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;;
914 let inet6_ifaddr_kv7_follower =
915 kv_follower "2.6.25.14-69.fc8.i586" "inet6_ifaddr" 128
916 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
917 let inet6_ifaddr_kv8_follower =
918 kv_follower "2.6.25.14-69.fc8.ppc64" "inet6_ifaddr" 200
919 inet6_ifaddr_parser_41 inet6_ifaddr_shape_fields_38_follower;;
920 let inet6_ifaddr_kv9_follower =
921 kv_follower "2.6.25.11-97.fc9.i686" "inet6_ifaddr" 128
922 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
923 let inet6_ifaddr_kv10_follower =
924 kv_follower "2.6.25.14-108.fc9.ppc" "inet6_ifaddr" 124
925 inet6_ifaddr_parser_43 inet6_ifaddr_shape_fields_38_follower;;
926 let inet6_ifaddr_kv11_follower =
927 kv_follower "2.6.25.14-69.fc8.i686" "inet6_ifaddr" 128
928 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;;
930 StringMap.add "2.6.25.14-69.fc8.i686"
931 (inet6_ifaddr_kv11_follower, in_ifaddr_kv11_follower,
932 inet6_dev_kv11_follower, in_device_kv11_follower, net_kv11_follower,
933 net_device_kv11_follower, task_struct_kv11_follower)
934 (StringMap.add "2.6.25.14-108.fc9.ppc"
935 (inet6_ifaddr_kv10_follower, in_ifaddr_kv10_follower,
936 inet6_dev_kv10_follower, in_device_kv10_follower, net_kv10_follower,
937 net_device_kv10_follower, task_struct_kv10_follower)
938 (StringMap.add "2.6.25.11-97.fc9.i686"
939 (inet6_ifaddr_kv9_follower, in_ifaddr_kv9_follower,
940 inet6_dev_kv9_follower, in_device_kv9_follower, net_kv9_follower,
941 net_device_kv9_follower, task_struct_kv9_follower)
942 (StringMap.add "2.6.25.14-69.fc8.ppc64"
943 (inet6_ifaddr_kv8_follower, in_ifaddr_kv8_follower,
944 inet6_dev_kv8_follower, in_device_kv8_follower,
945 net_kv8_follower, net_device_kv8_follower,
946 task_struct_kv8_follower)
947 (StringMap.add "2.6.25.14-69.fc8.i586"
948 (inet6_ifaddr_kv7_follower, in_ifaddr_kv7_follower,
949 inet6_dev_kv7_follower, in_device_kv7_follower,
950 net_kv7_follower, net_device_kv7_follower,
951 task_struct_kv7_follower)
952 (StringMap.add "2.6.25.11-97.fc9.x86_64"
953 (inet6_ifaddr_kv6_follower, in_ifaddr_kv6_follower,
954 inet6_dev_kv6_follower, in_device_kv6_follower,
955 net_kv6_follower, net_device_kv6_follower,
956 task_struct_kv6_follower)
957 (StringMap.add "2.6.25.14-108.fc9.x86_64"
958 (inet6_ifaddr_kv5_follower, in_ifaddr_kv5_follower,
959 inet6_dev_kv5_follower, in_device_kv5_follower,
960 net_kv5_follower, net_device_kv5_follower,
961 task_struct_kv5_follower)
962 (StringMap.add "2.6.25.14-69.fc8.ppc"
963 (inet6_ifaddr_kv4_follower, in_ifaddr_kv4_follower,
964 inet6_dev_kv4_follower, in_device_kv4_follower,
965 net_kv4_follower, net_device_kv4_follower,
966 task_struct_kv4_follower)
967 (StringMap.add "2.6.25.14-108.fc9.i686"
968 (inet6_ifaddr_kv3_follower,
969 in_ifaddr_kv3_follower, inet6_dev_kv3_follower,
970 in_device_kv3_follower, net_kv3_follower,
971 net_device_kv3_follower,
972 task_struct_kv3_follower)
973 (StringMap.add "2.6.25.14-108.fc9.i586"
974 (inet6_ifaddr_kv2_follower,
975 in_ifaddr_kv2_follower,
976 inet6_dev_kv2_follower,
977 in_device_kv2_follower, net_kv2_follower,
978 net_device_kv2_follower,
979 task_struct_kv2_follower)
980 (StringMap.add "2.6.25.14-108.fc9.ppc64"
981 (inet6_ifaddr_kv1_follower,
982 in_ifaddr_kv1_follower,
983 inet6_dev_kv1_follower,
984 in_device_kv1_follower, net_kv1_follower,
985 net_device_kv1_follower,
986 task_struct_kv1_follower)
987 (StringMap.add "2.6.25.14-69.fc8.x86_64"
988 (inet6_ifaddr_kv0_follower,
989 in_ifaddr_kv0_follower,
990 inet6_dev_kv0_follower,
991 in_device_kv0_follower,
993 net_device_kv0_follower,
994 task_struct_kv0_follower)
995 StringMap.empty)))))))))));;
996 let task_struct_follower kernel_version load addr =
998 try StringMap.find kernel_version follower_map
999 with | Not_found -> unknown_kernel_version kernel_version "task_struct" in
1000 let (_, _, _, _, _, _, f) = followers
1001 in f load followers AddrMap.empty addr;;
1002 let net_device_follower kernel_version load addr =
1004 try StringMap.find kernel_version follower_map
1005 with | Not_found -> unknown_kernel_version kernel_version "net_device" in
1006 let (_, _, _, _, _, f, _) = followers
1007 in f load followers AddrMap.empty addr;;
1008 let net_follower kernel_version load addr =
1010 try StringMap.find kernel_version follower_map
1011 with | Not_found -> unknown_kernel_version kernel_version "net" in
1012 let (_, _, _, _, f, _, _) = followers
1013 in f load followers AddrMap.empty addr;;
1014 let in_device_follower kernel_version load addr =
1016 try StringMap.find kernel_version follower_map
1017 with | Not_found -> unknown_kernel_version kernel_version "in_device" in
1018 let (_, _, _, f, _, _, _) = followers
1019 in f load followers AddrMap.empty addr;;
1020 let inet6_dev_follower kernel_version load addr =
1022 try StringMap.find kernel_version follower_map
1023 with | Not_found -> unknown_kernel_version kernel_version "inet6_dev" in
1024 let (_, _, f, _, _, _, _) = followers
1025 in f load followers AddrMap.empty addr;;
1026 let in_ifaddr_follower kernel_version load addr =
1028 try StringMap.find kernel_version follower_map
1029 with | Not_found -> unknown_kernel_version kernel_version "in_ifaddr" in
1030 let (_, f, _, _, _, _, _) = followers
1031 in f load followers AddrMap.empty addr;;
1032 let inet6_ifaddr_follower kernel_version load addr =
1034 try StringMap.find kernel_version follower_map
1035 with | Not_found -> unknown_kernel_version kernel_version "inet6_ifaddr" in
1036 let (f, _, _, _, _, _, _) = followers
1037 in f load followers AddrMap.empty addr;;