(* WARNING: This file and the corresponding mli (interface) are * automatically generated by the extract/codegen/ program. * * Any edits you make to this file will be lost. * * To update this file from the latest kernel database, it is recommended * that you do 'make update-kernel-structs'. *) open Printf;; module StringMap = Map.Make(String);; module AddrMap = Map.Make(Int64);; type kernel_version = string;; let match_err = "failed to match kernel structure";; let struct_missing_err = "struct does not exist in this kernel version";; let unknown_kernel_version version struct_name = invalid_arg (Printf.sprintf "%s: unknown kernel version or struct %s is not supported in this kernel. Try a newer version of virt-mem, or if the guest is not from a supported Linux distribution, see this page about adding support: http://et.redhat.com/~rjones/virt-mem/faq.html " version struct_name);; let zero = 0;; type ('a, 'b) task_struct = ('a * 'b);; type task_struct_shape_fields_1 = { task_struct_shape_fields_1_tasks'next : Virt_mem_mmap.addr; task_struct_shape_fields_1_tasks'next_offset : int; task_struct_shape_fields_1_tasks'next_adjustment : int };; type task_struct_content_fields_2 = { task_struct_content_fields_2_comm : string; task_struct_content_fields_2_normal_prio : int64; task_struct_content_fields_2_pid : int64; task_struct_content_fields_2_prio : int64; task_struct_content_fields_2_state : int64; task_struct_content_fields_2_static_prio : int64; task_struct_content_fields_2_tasks'prev : Virt_mem_mmap.addr };; type ('a, 'b) net_device = ('a * 'b);; type net_device_shape_fields_8 = { net_device_shape_fields_8_dev_list'next : Virt_mem_mmap.addr; net_device_shape_fields_8_dev_list'next_offset : int; net_device_shape_fields_8_dev_list'next_adjustment : int; net_device_shape_fields_8_ip6_ptr : Virt_mem_mmap.addr; net_device_shape_fields_8_ip_ptr : Virt_mem_mmap.addr };; type net_device_content_fields_9 = { net_device_content_fields_9_addr_len : int64; net_device_content_fields_9_dev_list'prev : Virt_mem_mmap.addr; net_device_content_fields_9_flags : int64; net_device_content_fields_9_mtu : int64; net_device_content_fields_9_name : string; net_device_content_fields_9_operstate : int64; net_device_content_fields_9_perm_addr : string };; type ('a, 'b) net = ('a * 'b);; type net_shape_fields_14 = { net_shape_fields_14_dev_base_head'next : Virt_mem_mmap.addr; net_shape_fields_14_dev_base_head'next_offset : int; net_shape_fields_14_dev_base_head'next_adjustment : int; net_shape_fields_14_dev_base_head'prev : Virt_mem_mmap.addr; net_shape_fields_14_dev_base_head'prev_offset : int; net_shape_fields_14_dev_base_head'prev_adjustment : int };; type net_content_fields_15 = unit;; type ('a, 'b) in_device = ('a * 'b);; type in_device_shape_fields_20 = { in_device_shape_fields_20_ifa_list : Virt_mem_mmap.addr };; type in_device_content_fields_21 = unit;; type ('a, 'b) inet6_dev = ('a * 'b);; type inet6_dev_shape_fields_26 = { inet6_dev_shape_fields_26_addr_list : Virt_mem_mmap.addr };; type inet6_dev_content_fields_27 = unit;; type ('a, 'b) in_ifaddr = ('a * 'b);; type in_ifaddr_shape_fields_32 = { in_ifaddr_shape_fields_32_ifa_next : Virt_mem_mmap.addr };; type in_ifaddr_content_fields_33 = { in_ifaddr_content_fields_33_ifa_address : int64; in_ifaddr_content_fields_33_ifa_broadcast : int64; in_ifaddr_content_fields_33_ifa_local : int64; in_ifaddr_content_fields_33_ifa_mask : int64 };; type ('a, 'b) inet6_ifaddr = ('a * 'b);; type inet6_ifaddr_shape_fields_38 = { inet6_ifaddr_shape_fields_38_lst_next : Virt_mem_mmap.addr };; type inet6_ifaddr_content_fields_39 = { inet6_ifaddr_content_fields_39_prefix_len : int64 };; let offset_of_net_device_dev_list'next = let map = StringMap.add "2.6.25.14-69.fc8.i686" 48 (StringMap.add "2.6.25.14-108.fc9.ppc" 48 (StringMap.add "2.6.25.11-97.fc9.i686" 48 (StringMap.add "2.6.25.14-69.fc8.ppc64" 72 (StringMap.add "2.6.25.14-69.fc8.i586" 48 (StringMap.add "2.6.25.11-97.fc9.x86_64" 72 (StringMap.add "2.6.25.14-108.fc9.x86_64" 72 (StringMap.add "2.6.25.14-69.fc8.ppc" 48 (StringMap.add "2.6.25.14-108.fc9.i686" 48 (StringMap.add "2.6.25.14-108.fc9.i586" 48 (StringMap.add "2.6.25.14-108.fc9.ppc64" 72 (StringMap.add "2.6.25.14-69.fc8.x86_64" 72 StringMap.empty))))))))))) in fun kernel_version -> StringMap.find kernel_version map;; let task_struct_parser_3 kernel_version bits = bitmatch bits with | { state : zero+64 : offset(0), littleendian; prio : zero+32 : offset(224), littleendian; static_prio : zero+32 : offset(256), littleendian; normal_prio : zero+32 : offset(288), littleendian; tasks'next : zero+64 : offset(3840), littleendian; tasks'prev : zero+64 : offset(3904), littleendian; pid : zero+32 : offset(4352), littleendian; comm : 128 : offset(8392), string } -> let s = { task_struct_shape_fields_1_tasks'next = tasks'next; task_struct_shape_fields_1_tasks'next_offset = 480; task_struct_shape_fields_1_tasks'next_adjustment = 480 } in let c = { task_struct_content_fields_2_comm = comm; task_struct_content_fields_2_normal_prio = normal_prio; task_struct_content_fields_2_pid = pid; task_struct_content_fields_2_prio = prio; task_struct_content_fields_2_state = state; task_struct_content_fields_2_static_prio = static_prio; task_struct_content_fields_2_tasks'prev = tasks'prev } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_3", match_err));; let task_struct_parser_4 kernel_version bits = bitmatch bits with | { state : zero+64 : offset(0), bigendian; prio : zero+32 : offset(224), bigendian; static_prio : zero+32 : offset(256), bigendian; normal_prio : zero+32 : offset(288), bigendian; tasks'next : zero+64 : offset(3840), bigendian; tasks'prev : zero+64 : offset(3904), bigendian; pid : zero+32 : offset(4352), bigendian; comm : 128 : offset(8392), string } -> let s = { task_struct_shape_fields_1_tasks'next = tasks'next; task_struct_shape_fields_1_tasks'next_offset = 480; task_struct_shape_fields_1_tasks'next_adjustment = 480 } in let c = { task_struct_content_fields_2_comm = comm; task_struct_content_fields_2_normal_prio = normal_prio; task_struct_content_fields_2_pid = pid; task_struct_content_fields_2_prio = prio; task_struct_content_fields_2_state = state; task_struct_content_fields_2_static_prio = static_prio; task_struct_content_fields_2_tasks'prev = tasks'prev } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_4", match_err));; let task_struct_parser_5 kernel_version bits = bitmatch bits with | { state : zero+32 : offset(0), littleendian; prio : zero+32 : offset(160), littleendian; static_prio : zero+32 : offset(192), littleendian; normal_prio : zero+32 : offset(224), littleendian; tasks'next : zero+32 : offset(3200), littleendian; tasks'prev : zero+32 : offset(3232), littleendian; pid : zero+32 : offset(3552), littleendian; comm : 128 : offset(5896), string } -> let s = { task_struct_shape_fields_1_tasks'next = tasks'next; task_struct_shape_fields_1_tasks'next_offset = 400; task_struct_shape_fields_1_tasks'next_adjustment = 400 } in let c = { task_struct_content_fields_2_comm = comm; task_struct_content_fields_2_normal_prio = normal_prio; task_struct_content_fields_2_pid = pid; task_struct_content_fields_2_prio = prio; task_struct_content_fields_2_state = state; task_struct_content_fields_2_static_prio = static_prio; task_struct_content_fields_2_tasks'prev = tasks'prev } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_5", match_err));; let task_struct_parser_6 kernel_version bits = bitmatch bits with | { state : zero+32 : offset(0), littleendian; prio : zero+32 : offset(160), littleendian; static_prio : zero+32 : offset(192), littleendian; normal_prio : zero+32 : offset(224), littleendian; tasks'next : zero+32 : offset(3232), littleendian; tasks'prev : zero+32 : offset(3264), littleendian; pid : zero+32 : offset(3584), littleendian; comm : 128 : offset(5928), string } -> let s = { task_struct_shape_fields_1_tasks'next = tasks'next; task_struct_shape_fields_1_tasks'next_offset = 404; task_struct_shape_fields_1_tasks'next_adjustment = 404 } in let c = { task_struct_content_fields_2_comm = comm; task_struct_content_fields_2_normal_prio = normal_prio; task_struct_content_fields_2_pid = pid; task_struct_content_fields_2_prio = prio; task_struct_content_fields_2_state = state; task_struct_content_fields_2_static_prio = static_prio; task_struct_content_fields_2_tasks'prev = tasks'prev } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_6", match_err));; let task_struct_parser_7 kernel_version bits = bitmatch bits with | { state : zero+32 : offset(0), bigendian; prio : zero+32 : offset(160), bigendian; static_prio : zero+32 : offset(192), bigendian; normal_prio : zero+32 : offset(224), bigendian; tasks'next : zero+32 : offset(3328), bigendian; tasks'prev : zero+32 : offset(3360), bigendian; pid : zero+32 : offset(3680), bigendian; comm : 128 : offset(6056), string } -> let s = { task_struct_shape_fields_1_tasks'next = tasks'next; task_struct_shape_fields_1_tasks'next_offset = 416; task_struct_shape_fields_1_tasks'next_adjustment = 416 } in let c = { task_struct_content_fields_2_comm = comm; task_struct_content_fields_2_normal_prio = normal_prio; task_struct_content_fields_2_pid = pid; task_struct_content_fields_2_prio = prio; task_struct_content_fields_2_state = state; task_struct_content_fields_2_static_prio = static_prio; task_struct_content_fields_2_tasks'prev = tasks'prev } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("task_struct", "task_struct_parser_7", match_err));; let net_device_parser_10 kernel_version bits = bitmatch bits with | { name : 128 : offset(0), string; dev_list'next : zero+64 : offset(576), littleendian; dev_list'prev : zero+64 : offset(640), littleendian; flags : zero+32 : offset(2880), littleendian; operstate : zero+8 : offset(2960), littleendian; mtu : zero+32 : offset(2976), littleendian; perm_addr : 256 : offset(3136), string; addr_len : zero+8 : offset(3392), littleendian; ip_ptr : zero+64 : offset(3840), littleendian; ip6_ptr : zero+64 : offset(3968), littleendian } -> let s = { net_device_shape_fields_8_dev_list'next = dev_list'next; net_device_shape_fields_8_dev_list'next_offset = 72; net_device_shape_fields_8_dev_list'next_adjustment = 72; net_device_shape_fields_8_ip6_ptr = ip6_ptr; net_device_shape_fields_8_ip_ptr = ip_ptr } in let c = { net_device_content_fields_9_addr_len = addr_len; net_device_content_fields_9_dev_list'prev = dev_list'prev; net_device_content_fields_9_flags = flags; net_device_content_fields_9_mtu = mtu; net_device_content_fields_9_name = name; net_device_content_fields_9_operstate = operstate; net_device_content_fields_9_perm_addr = perm_addr } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_10", match_err));; let net_device_parser_11 kernel_version bits = bitmatch bits with | { name : 128 : offset(0), string; dev_list'next : zero+64 : offset(576), bigendian; dev_list'prev : zero+64 : offset(640), bigendian; flags : zero+32 : offset(2880), bigendian; operstate : zero+8 : offset(2960), bigendian; mtu : zero+32 : offset(2976), bigendian; perm_addr : 256 : offset(3136), string; addr_len : zero+8 : offset(3392), bigendian; ip_ptr : zero+64 : offset(3840), bigendian; ip6_ptr : zero+64 : offset(3968), bigendian } -> let s = { net_device_shape_fields_8_dev_list'next = dev_list'next; net_device_shape_fields_8_dev_list'next_offset = 72; net_device_shape_fields_8_dev_list'next_adjustment = 72; net_device_shape_fields_8_ip6_ptr = ip6_ptr; net_device_shape_fields_8_ip_ptr = ip_ptr } in let c = { net_device_content_fields_9_addr_len = addr_len; net_device_content_fields_9_dev_list'prev = dev_list'prev; net_device_content_fields_9_flags = flags; net_device_content_fields_9_mtu = mtu; net_device_content_fields_9_name = name; net_device_content_fields_9_operstate = operstate; net_device_content_fields_9_perm_addr = perm_addr } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_11", match_err));; let net_device_parser_12 kernel_version bits = bitmatch bits with | { name : 128 : offset(0), string; dev_list'next : zero+32 : offset(384), littleendian; dev_list'prev : zero+32 : offset(416), littleendian; flags : zero+32 : offset(1568), littleendian; operstate : zero+8 : offset(1648), littleendian; mtu : zero+32 : offset(1664), littleendian; perm_addr : 256 : offset(1760), string; addr_len : zero+8 : offset(2016), littleendian; ip_ptr : zero+32 : offset(2304), littleendian; ip6_ptr : zero+32 : offset(2368), littleendian } -> let s = { net_device_shape_fields_8_dev_list'next = dev_list'next; net_device_shape_fields_8_dev_list'next_offset = 48; net_device_shape_fields_8_dev_list'next_adjustment = 48; net_device_shape_fields_8_ip6_ptr = ip6_ptr; net_device_shape_fields_8_ip_ptr = ip_ptr } in let c = { net_device_content_fields_9_addr_len = addr_len; net_device_content_fields_9_dev_list'prev = dev_list'prev; net_device_content_fields_9_flags = flags; net_device_content_fields_9_mtu = mtu; net_device_content_fields_9_name = name; net_device_content_fields_9_operstate = operstate; net_device_content_fields_9_perm_addr = perm_addr } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_12", match_err));; let net_device_parser_13 kernel_version bits = bitmatch bits with | { name : 128 : offset(0), string; dev_list'next : zero+32 : offset(384), bigendian; dev_list'prev : zero+32 : offset(416), bigendian; flags : zero+32 : offset(1568), bigendian; operstate : zero+8 : offset(1648), bigendian; mtu : zero+32 : offset(1664), bigendian; perm_addr : 256 : offset(1760), string; addr_len : zero+8 : offset(2016), bigendian; ip_ptr : zero+32 : offset(2304), bigendian; ip6_ptr : zero+32 : offset(2368), bigendian } -> let s = { net_device_shape_fields_8_dev_list'next = dev_list'next; net_device_shape_fields_8_dev_list'next_offset = 48; net_device_shape_fields_8_dev_list'next_adjustment = 48; net_device_shape_fields_8_ip6_ptr = ip6_ptr; net_device_shape_fields_8_ip_ptr = ip_ptr } in let c = { net_device_content_fields_9_addr_len = addr_len; net_device_content_fields_9_dev_list'prev = dev_list'prev; net_device_content_fields_9_flags = flags; net_device_content_fields_9_mtu = mtu; net_device_content_fields_9_name = name; net_device_content_fields_9_operstate = operstate; net_device_content_fields_9_perm_addr = perm_addr } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net_device", "net_device_parser_13", match_err));; let net_parser_18 kernel_version bits = bitmatch bits with | { dev_base_head'next : zero+32 : offset(416), littleendian; dev_base_head'prev : zero+32 : offset(448), littleendian } -> let s = { net_shape_fields_14_dev_base_head'next = dev_base_head'next; net_shape_fields_14_dev_base_head'next_offset = 52; net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version; net_shape_fields_14_dev_base_head'prev = dev_base_head'prev; net_shape_fields_14_dev_base_head'prev_offset = 56; net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net", "net_parser_18", match_err));; let net_parser_19 kernel_version bits = bitmatch bits with | { dev_base_head'next : zero+32 : offset(416), bigendian; dev_base_head'prev : zero+32 : offset(448), bigendian } -> let s = { net_shape_fields_14_dev_base_head'next = dev_base_head'next; net_shape_fields_14_dev_base_head'next_offset = 52; net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version; net_shape_fields_14_dev_base_head'prev = dev_base_head'prev; net_shape_fields_14_dev_base_head'prev_offset = 56; net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net", "net_parser_19", match_err));; let net_parser_16 kernel_version bits = bitmatch bits with | { dev_base_head'next : zero+64 : offset(768), littleendian; dev_base_head'prev : zero+64 : offset(832), littleendian } -> let s = { net_shape_fields_14_dev_base_head'next = dev_base_head'next; net_shape_fields_14_dev_base_head'next_offset = 96; net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version; net_shape_fields_14_dev_base_head'prev = dev_base_head'prev; net_shape_fields_14_dev_base_head'prev_offset = 104; net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net", "net_parser_16", match_err));; let net_parser_17 kernel_version bits = bitmatch bits with | { dev_base_head'next : zero+64 : offset(768), bigendian; dev_base_head'prev : zero+64 : offset(832), bigendian } -> let s = { net_shape_fields_14_dev_base_head'next = dev_base_head'next; net_shape_fields_14_dev_base_head'next_offset = 96; net_shape_fields_14_dev_base_head'next_adjustment = offset_of_net_device_dev_list'next kernel_version; net_shape_fields_14_dev_base_head'prev = dev_base_head'prev; net_shape_fields_14_dev_base_head'prev_offset = 104; net_shape_fields_14_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("net", "net_parser_17", match_err));; let in_device_parser_24 kernel_version bits = bitmatch bits with | { ifa_list : zero+32 : offset(96), littleendian } -> let s = { in_device_shape_fields_20_ifa_list = ifa_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_24", match_err));; let in_device_parser_25 kernel_version bits = bitmatch bits with | { ifa_list : zero+32 : offset(96), bigendian } -> let s = { in_device_shape_fields_20_ifa_list = ifa_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_25", match_err));; let in_device_parser_22 kernel_version bits = bitmatch bits with | { ifa_list : zero+64 : offset(128), littleendian } -> let s = { in_device_shape_fields_20_ifa_list = ifa_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_22", match_err));; let in_device_parser_23 kernel_version bits = bitmatch bits with | { ifa_list : zero+64 : offset(128), bigendian } -> let s = { in_device_shape_fields_20_ifa_list = ifa_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_device", "in_device_parser_23", match_err));; let inet6_dev_parser_30 kernel_version bits = bitmatch bits with | { addr_list : zero+32 : offset(32), littleendian } -> let s = { inet6_dev_shape_fields_26_addr_list = addr_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_30", match_err));; let inet6_dev_parser_31 kernel_version bits = bitmatch bits with | { addr_list : zero+32 : offset(32), bigendian } -> let s = { inet6_dev_shape_fields_26_addr_list = addr_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_31", match_err));; let inet6_dev_parser_28 kernel_version bits = bitmatch bits with | { addr_list : zero+64 : offset(64), littleendian } -> let s = { inet6_dev_shape_fields_26_addr_list = addr_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_28", match_err));; let inet6_dev_parser_29 kernel_version bits = bitmatch bits with | { addr_list : zero+64 : offset(64), bigendian } -> let s = { inet6_dev_shape_fields_26_addr_list = addr_list } in let c = () in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_dev", "inet6_dev_parser_29", match_err));; let in_ifaddr_parser_36 kernel_version bits = bitmatch bits with | { ifa_next : zero+32 : offset(0), littleendian; ifa_local : zero+32 : offset(128), littleendian; ifa_address : zero+32 : offset(160), littleendian; ifa_mask : zero+32 : offset(192), littleendian; ifa_broadcast : zero+32 : offset(224), littleendian } -> let s = { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in let c = { in_ifaddr_content_fields_33_ifa_address = ifa_address; in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast; in_ifaddr_content_fields_33_ifa_local = ifa_local; in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_36", match_err));; let in_ifaddr_parser_37 kernel_version bits = bitmatch bits with | { ifa_next : zero+32 : offset(0), bigendian; ifa_local : zero+32 : offset(128), bigendian; ifa_address : zero+32 : offset(160), bigendian; ifa_mask : zero+32 : offset(192), bigendian; ifa_broadcast : zero+32 : offset(224), bigendian } -> let s = { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in let c = { in_ifaddr_content_fields_33_ifa_address = ifa_address; in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast; in_ifaddr_content_fields_33_ifa_local = ifa_local; in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_37", match_err));; let in_ifaddr_parser_34 kernel_version bits = bitmatch bits with | { ifa_next : zero+64 : offset(0), littleendian; ifa_local : zero+32 : offset(256), littleendian; ifa_address : zero+32 : offset(288), littleendian; ifa_mask : zero+32 : offset(320), littleendian; ifa_broadcast : zero+32 : offset(352), littleendian } -> let s = { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in let c = { in_ifaddr_content_fields_33_ifa_address = ifa_address; in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast; in_ifaddr_content_fields_33_ifa_local = ifa_local; in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_34", match_err));; let in_ifaddr_parser_35 kernel_version bits = bitmatch bits with | { ifa_next : zero+64 : offset(0), bigendian; ifa_local : zero+32 : offset(256), bigendian; ifa_address : zero+32 : offset(288), bigendian; ifa_mask : zero+32 : offset(320), bigendian; ifa_broadcast : zero+32 : offset(352), bigendian } -> let s = { in_ifaddr_shape_fields_32_ifa_next = ifa_next } in let c = { in_ifaddr_content_fields_33_ifa_address = ifa_address; in_ifaddr_content_fields_33_ifa_broadcast = ifa_broadcast; in_ifaddr_content_fields_33_ifa_local = ifa_local; in_ifaddr_content_fields_33_ifa_mask = ifa_mask } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("in_ifaddr", "in_ifaddr_parser_35", match_err));; let inet6_ifaddr_parser_42 kernel_version bits = bitmatch bits with | { prefix_len : zero+32 : offset(128), littleendian; lst_next : zero+32 : offset(832), littleendian } -> let s = { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in let c = { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_42", match_err));; let inet6_ifaddr_parser_40 kernel_version bits = bitmatch bits with | { prefix_len : zero+32 : offset(128), littleendian; lst_next : zero+64 : offset(1280), littleendian } -> let s = { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in let c = { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_40", match_err));; let inet6_ifaddr_parser_41 kernel_version bits = bitmatch bits with | { prefix_len : zero+32 : offset(128), bigendian; lst_next : zero+64 : offset(1280), bigendian } -> let s = { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in let c = { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_41", match_err));; let inet6_ifaddr_parser_43 kernel_version bits = bitmatch bits with | { prefix_len : zero+32 : offset(128), bigendian; lst_next : zero+32 : offset(800), bigendian } -> let s = { inet6_ifaddr_shape_fields_38_lst_next = lst_next } in let c = { inet6_ifaddr_content_fields_39_prefix_len = prefix_len } in (s, c) | { _ } -> raise (Virt_mem_types.ParseError ("inet6_ifaddr", "inet6_ifaddr_parser_43", match_err));; let task_struct_shape_fields_1_follower load followers map addr shape = let (_, _, _, _, _, _, f) = followers in let offset = shape.task_struct_shape_fields_1_tasks'next_offset and adj = shape.task_struct_shape_fields_1_tasks'next_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in let addr = Int64.sub (Int64.add addr offset) adj in let map = AddrMap.add addr ("task_struct", 0) map in let out_addr = Int64.sub shape.task_struct_shape_fields_1_tasks'next adj in let map = f load followers map out_addr in map;; let net_device_shape_fields_8_follower load followers map addr shape = let (_, _, _, _, _, f, _) = followers in let offset = shape.net_device_shape_fields_8_dev_list'next_offset and adj = shape.net_device_shape_fields_8_dev_list'next_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in let addr = Int64.sub (Int64.add addr offset) adj in let map = AddrMap.add addr ("net_device", 0) map in let out_addr = Int64.sub shape.net_device_shape_fields_8_dev_list'next adj in let map = f load followers map out_addr in let (_, _, f, _, _, _, _) = followers in let map = f load followers map shape.net_device_shape_fields_8_ip6_ptr in let (_, _, _, f, _, _, _) = followers in let map = f load followers map shape.net_device_shape_fields_8_ip_ptr in map;; let net_shape_fields_14_follower load followers map addr shape = let (_, _, _, _, _, f, _) = followers in let offset = shape.net_shape_fields_14_dev_base_head'next_offset and adj = shape.net_shape_fields_14_dev_base_head'next_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in let addr = Int64.sub (Int64.add addr offset) adj in let map = AddrMap.add addr ("net_device", 0) map in let out_addr = Int64.sub shape.net_shape_fields_14_dev_base_head'next adj in let map = f load followers map out_addr in let (_, _, _, _, _, f, _) = followers in let offset = shape.net_shape_fields_14_dev_base_head'prev_offset and adj = shape.net_shape_fields_14_dev_base_head'prev_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in let addr = Int64.sub (Int64.add addr offset) adj in let map = AddrMap.add addr ("net_device", 0) map in let out_addr = Int64.sub shape.net_shape_fields_14_dev_base_head'prev adj in let map = f load followers map out_addr in map;; let in_device_shape_fields_20_follower load followers map addr shape = let (_, f, _, _, _, _, _) = followers in let map = f load followers map shape.in_device_shape_fields_20_ifa_list in map;; let inet6_dev_shape_fields_26_follower load followers map addr shape = let (f, _, _, _, _, _, _) = followers in let map = f load followers map shape.inet6_dev_shape_fields_26_addr_list in map;; let in_ifaddr_shape_fields_32_follower load followers map addr shape = let (_, f, _, _, _, _, _) = followers in let map = f load followers map shape.in_ifaddr_shape_fields_32_ifa_next in map;; let inet6_ifaddr_shape_fields_38_follower load followers map addr shape = let (f, _, _, _, _, _, _) = followers in let map = f load followers map shape.inet6_ifaddr_shape_fields_38_lst_next in map;; let kv_follower kernel_version struct_name total_size parserfn followerfn load followers map addr = if (addr <> 0L) && (not (AddrMap.mem addr map)) then (let map = AddrMap.add addr (struct_name, total_size) map in let bits = load struct_name addr total_size in let (shape, _) = parserfn kernel_version bits in followerfn load followers map addr shape) else map;; let task_struct_kv0_follower = kv_follower "2.6.25.14-69.fc8.x86_64" "task_struct" 2496 task_struct_parser_3 task_struct_shape_fields_1_follower;; let task_struct_kv1_follower = kv_follower "2.6.25.14-108.fc9.ppc64" "task_struct" 2524 task_struct_parser_4 task_struct_shape_fields_1_follower;; let task_struct_kv2_follower = kv_follower "2.6.25.14-108.fc9.i586" "task_struct" 1832 task_struct_parser_5 task_struct_shape_fields_1_follower;; let task_struct_kv3_follower = kv_follower "2.6.25.14-108.fc9.i686" "task_struct" 1832 task_struct_parser_6 task_struct_shape_fields_1_follower;; let task_struct_kv4_follower = kv_follower "2.6.25.14-69.fc8.ppc" "task_struct" 1952 task_struct_parser_7 task_struct_shape_fields_1_follower;; let task_struct_kv5_follower = kv_follower "2.6.25.14-108.fc9.x86_64" "task_struct" 2496 task_struct_parser_3 task_struct_shape_fields_1_follower;; let task_struct_kv6_follower = kv_follower "2.6.25.11-97.fc9.x86_64" "task_struct" 2496 task_struct_parser_3 task_struct_shape_fields_1_follower;; let task_struct_kv7_follower = kv_follower "2.6.25.14-69.fc8.i586" "task_struct" 1832 task_struct_parser_5 task_struct_shape_fields_1_follower;; let task_struct_kv8_follower = kv_follower "2.6.25.14-69.fc8.ppc64" "task_struct" 2524 task_struct_parser_4 task_struct_shape_fields_1_follower;; let task_struct_kv9_follower = kv_follower "2.6.25.11-97.fc9.i686" "task_struct" 1832 task_struct_parser_6 task_struct_shape_fields_1_follower;; let task_struct_kv10_follower = kv_follower "2.6.25.14-108.fc9.ppc" "task_struct" 1952 task_struct_parser_7 task_struct_shape_fields_1_follower;; let task_struct_kv11_follower = kv_follower "2.6.25.14-69.fc8.i686" "task_struct" 1832 task_struct_parser_6 task_struct_shape_fields_1_follower;; let net_device_kv0_follower = kv_follower "2.6.25.14-69.fc8.x86_64" "net_device" 1752 net_device_parser_10 net_device_shape_fields_8_follower;; let net_device_kv1_follower = kv_follower "2.6.25.14-108.fc9.ppc64" "net_device" 1776 net_device_parser_11 net_device_shape_fields_8_follower;; let net_device_kv2_follower = kv_follower "2.6.25.14-108.fc9.i586" "net_device" 1212 net_device_parser_12 net_device_shape_fields_8_follower;; let net_device_kv3_follower = kv_follower "2.6.25.14-108.fc9.i686" "net_device" 1212 net_device_parser_12 net_device_shape_fields_8_follower;; let net_device_kv4_follower = kv_follower "2.6.25.14-69.fc8.ppc" "net_device" 904 net_device_parser_13 net_device_shape_fields_8_follower;; let net_device_kv5_follower = kv_follower "2.6.25.14-108.fc9.x86_64" "net_device" 1752 net_device_parser_10 net_device_shape_fields_8_follower;; let net_device_kv6_follower = kv_follower "2.6.25.11-97.fc9.x86_64" "net_device" 1752 net_device_parser_10 net_device_shape_fields_8_follower;; let net_device_kv7_follower = kv_follower "2.6.25.14-69.fc8.i586" "net_device" 1212 net_device_parser_12 net_device_shape_fields_8_follower;; let net_device_kv8_follower = kv_follower "2.6.25.14-69.fc8.ppc64" "net_device" 1776 net_device_parser_11 net_device_shape_fields_8_follower;; let net_device_kv9_follower = kv_follower "2.6.25.11-97.fc9.i686" "net_device" 1212 net_device_parser_12 net_device_shape_fields_8_follower;; let net_device_kv10_follower = kv_follower "2.6.25.14-108.fc9.ppc" "net_device" 904 net_device_parser_13 net_device_shape_fields_8_follower;; let net_device_kv11_follower = kv_follower "2.6.25.14-69.fc8.i686" "net_device" 1212 net_device_parser_12 net_device_shape_fields_8_follower;; let net_kv0_follower = kv_follower "2.6.25.14-69.fc8.x86_64" "net" 488 net_parser_16 net_shape_fields_14_follower;; let net_kv1_follower = kv_follower "2.6.25.14-108.fc9.ppc64" "net" 488 net_parser_17 net_shape_fields_14_follower;; let net_kv2_follower = kv_follower "2.6.25.14-108.fc9.i586" "net" 284 net_parser_18 net_shape_fields_14_follower;; let net_kv3_follower = kv_follower "2.6.25.14-108.fc9.i686" "net" 284 net_parser_18 net_shape_fields_14_follower;; let net_kv4_follower = kv_follower "2.6.25.14-69.fc8.ppc" "net" 276 net_parser_19 net_shape_fields_14_follower;; let net_kv5_follower = kv_follower "2.6.25.14-108.fc9.x86_64" "net" 488 net_parser_16 net_shape_fields_14_follower;; let net_kv6_follower = kv_follower "2.6.25.11-97.fc9.x86_64" "net" 488 net_parser_16 net_shape_fields_14_follower;; let net_kv7_follower = kv_follower "2.6.25.14-69.fc8.i586" "net" 284 net_parser_18 net_shape_fields_14_follower;; let net_kv8_follower = kv_follower "2.6.25.14-69.fc8.ppc64" "net" 488 net_parser_17 net_shape_fields_14_follower;; let net_kv9_follower = kv_follower "2.6.25.11-97.fc9.i686" "net" 284 net_parser_18 net_shape_fields_14_follower;; let net_kv10_follower = kv_follower "2.6.25.14-108.fc9.ppc" "net" 276 net_parser_19 net_shape_fields_14_follower;; let net_kv11_follower = kv_follower "2.6.25.14-69.fc8.i686" "net" 284 net_parser_18 net_shape_fields_14_follower;; let in_device_kv0_follower = kv_follower "2.6.25.14-69.fc8.x86_64" "in_device" 368 in_device_parser_22 in_device_shape_fields_20_follower;; let in_device_kv1_follower = kv_follower "2.6.25.14-108.fc9.ppc64" "in_device" 368 in_device_parser_23 in_device_shape_fields_20_follower;; let in_device_kv2_follower = kv_follower "2.6.25.14-108.fc9.i586" "in_device" 244 in_device_parser_24 in_device_shape_fields_20_follower;; let in_device_kv3_follower = kv_follower "2.6.25.14-108.fc9.i686" "in_device" 244 in_device_parser_24 in_device_shape_fields_20_follower;; let in_device_kv4_follower = kv_follower "2.6.25.14-69.fc8.ppc" "in_device" 236 in_device_parser_25 in_device_shape_fields_20_follower;; let in_device_kv5_follower = kv_follower "2.6.25.14-108.fc9.x86_64" "in_device" 368 in_device_parser_22 in_device_shape_fields_20_follower;; let in_device_kv6_follower = kv_follower "2.6.25.11-97.fc9.x86_64" "in_device" 368 in_device_parser_22 in_device_shape_fields_20_follower;; let in_device_kv7_follower = kv_follower "2.6.25.14-69.fc8.i586" "in_device" 244 in_device_parser_24 in_device_shape_fields_20_follower;; let in_device_kv8_follower = kv_follower "2.6.25.14-69.fc8.ppc64" "in_device" 368 in_device_parser_23 in_device_shape_fields_20_follower;; let in_device_kv9_follower = kv_follower "2.6.25.11-97.fc9.i686" "in_device" 244 in_device_parser_24 in_device_shape_fields_20_follower;; let in_device_kv10_follower = kv_follower "2.6.25.14-108.fc9.ppc" "in_device" 236 in_device_parser_25 in_device_shape_fields_20_follower;; let in_device_kv11_follower = kv_follower "2.6.25.14-69.fc8.i686" "in_device" 244 in_device_parser_24 in_device_shape_fields_20_follower;; let inet6_dev_kv0_follower = kv_follower "2.6.25.14-69.fc8.x86_64" "inet6_dev" 536 inet6_dev_parser_28 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv1_follower = kv_follower "2.6.25.14-108.fc9.ppc64" "inet6_dev" 536 inet6_dev_parser_29 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv2_follower = kv_follower "2.6.25.14-108.fc9.i586" "inet6_dev" 356 inet6_dev_parser_30 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv3_follower = kv_follower "2.6.25.14-108.fc9.i686" "inet6_dev" 356 inet6_dev_parser_30 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv4_follower = kv_follower "2.6.25.14-69.fc8.ppc" "inet6_dev" 348 inet6_dev_parser_31 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv5_follower = kv_follower "2.6.25.14-108.fc9.x86_64" "inet6_dev" 536 inet6_dev_parser_28 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv6_follower = kv_follower "2.6.25.11-97.fc9.x86_64" "inet6_dev" 536 inet6_dev_parser_28 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv7_follower = kv_follower "2.6.25.14-69.fc8.i586" "inet6_dev" 356 inet6_dev_parser_30 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv8_follower = kv_follower "2.6.25.14-69.fc8.ppc64" "inet6_dev" 536 inet6_dev_parser_29 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv9_follower = kv_follower "2.6.25.11-97.fc9.i686" "inet6_dev" 356 inet6_dev_parser_30 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv10_follower = kv_follower "2.6.25.14-108.fc9.ppc" "inet6_dev" 348 inet6_dev_parser_31 inet6_dev_shape_fields_26_follower;; let inet6_dev_kv11_follower = kv_follower "2.6.25.14-69.fc8.i686" "inet6_dev" 356 inet6_dev_parser_30 inet6_dev_shape_fields_26_follower;; let in_ifaddr_kv0_follower = kv_follower "2.6.25.14-69.fc8.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv1_follower = kv_follower "2.6.25.14-108.fc9.ppc64" "in_ifaddr" 71 in_ifaddr_parser_35 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv2_follower = kv_follower "2.6.25.14-108.fc9.i586" "in_ifaddr" 55 in_ifaddr_parser_36 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv3_follower = kv_follower "2.6.25.14-108.fc9.i686" "in_ifaddr" 55 in_ifaddr_parser_36 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv4_follower = kv_follower "2.6.25.14-69.fc8.ppc" "in_ifaddr" 55 in_ifaddr_parser_37 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv5_follower = kv_follower "2.6.25.14-108.fc9.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv6_follower = kv_follower "2.6.25.11-97.fc9.x86_64" "in_ifaddr" 71 in_ifaddr_parser_34 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv7_follower = kv_follower "2.6.25.14-69.fc8.i586" "in_ifaddr" 55 in_ifaddr_parser_36 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv8_follower = kv_follower "2.6.25.14-69.fc8.ppc64" "in_ifaddr" 71 in_ifaddr_parser_35 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv9_follower = kv_follower "2.6.25.11-97.fc9.i686" "in_ifaddr" 55 in_ifaddr_parser_36 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv10_follower = kv_follower "2.6.25.14-108.fc9.ppc" "in_ifaddr" 55 in_ifaddr_parser_37 in_ifaddr_shape_fields_32_follower;; let in_ifaddr_kv11_follower = kv_follower "2.6.25.14-69.fc8.i686" "in_ifaddr" 55 in_ifaddr_parser_36 in_ifaddr_shape_fields_32_follower;; let inet6_ifaddr_kv0_follower = kv_follower "2.6.25.14-69.fc8.x86_64" "inet6_ifaddr" 200 inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv1_follower = kv_follower "2.6.25.14-108.fc9.ppc64" "inet6_ifaddr" 200 inet6_ifaddr_parser_41 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv2_follower = kv_follower "2.6.25.14-108.fc9.i586" "inet6_ifaddr" 128 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv3_follower = kv_follower "2.6.25.14-108.fc9.i686" "inet6_ifaddr" 128 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv4_follower = kv_follower "2.6.25.14-69.fc8.ppc" "inet6_ifaddr" 124 inet6_ifaddr_parser_43 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv5_follower = kv_follower "2.6.25.14-108.fc9.x86_64" "inet6_ifaddr" 200 inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv6_follower = kv_follower "2.6.25.11-97.fc9.x86_64" "inet6_ifaddr" 200 inet6_ifaddr_parser_40 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv7_follower = kv_follower "2.6.25.14-69.fc8.i586" "inet6_ifaddr" 128 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv8_follower = kv_follower "2.6.25.14-69.fc8.ppc64" "inet6_ifaddr" 200 inet6_ifaddr_parser_41 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv9_follower = kv_follower "2.6.25.11-97.fc9.i686" "inet6_ifaddr" 128 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv10_follower = kv_follower "2.6.25.14-108.fc9.ppc" "inet6_ifaddr" 124 inet6_ifaddr_parser_43 inet6_ifaddr_shape_fields_38_follower;; let inet6_ifaddr_kv11_follower = kv_follower "2.6.25.14-69.fc8.i686" "inet6_ifaddr" 128 inet6_ifaddr_parser_42 inet6_ifaddr_shape_fields_38_follower;; let follower_map = StringMap.add "2.6.25.14-69.fc8.i686" (inet6_ifaddr_kv11_follower, in_ifaddr_kv11_follower, inet6_dev_kv11_follower, in_device_kv11_follower, net_kv11_follower, net_device_kv11_follower, task_struct_kv11_follower) (StringMap.add "2.6.25.14-108.fc9.ppc" (inet6_ifaddr_kv10_follower, in_ifaddr_kv10_follower, inet6_dev_kv10_follower, in_device_kv10_follower, net_kv10_follower, net_device_kv10_follower, task_struct_kv10_follower) (StringMap.add "2.6.25.11-97.fc9.i686" (inet6_ifaddr_kv9_follower, in_ifaddr_kv9_follower, inet6_dev_kv9_follower, in_device_kv9_follower, net_kv9_follower, net_device_kv9_follower, task_struct_kv9_follower) (StringMap.add "2.6.25.14-69.fc8.ppc64" (inet6_ifaddr_kv8_follower, in_ifaddr_kv8_follower, inet6_dev_kv8_follower, in_device_kv8_follower, net_kv8_follower, net_device_kv8_follower, task_struct_kv8_follower) (StringMap.add "2.6.25.14-69.fc8.i586" (inet6_ifaddr_kv7_follower, in_ifaddr_kv7_follower, inet6_dev_kv7_follower, in_device_kv7_follower, net_kv7_follower, net_device_kv7_follower, task_struct_kv7_follower) (StringMap.add "2.6.25.11-97.fc9.x86_64" (inet6_ifaddr_kv6_follower, in_ifaddr_kv6_follower, inet6_dev_kv6_follower, in_device_kv6_follower, net_kv6_follower, net_device_kv6_follower, task_struct_kv6_follower) (StringMap.add "2.6.25.14-108.fc9.x86_64" (inet6_ifaddr_kv5_follower, in_ifaddr_kv5_follower, inet6_dev_kv5_follower, in_device_kv5_follower, net_kv5_follower, net_device_kv5_follower, task_struct_kv5_follower) (StringMap.add "2.6.25.14-69.fc8.ppc" (inet6_ifaddr_kv4_follower, in_ifaddr_kv4_follower, inet6_dev_kv4_follower, in_device_kv4_follower, net_kv4_follower, net_device_kv4_follower, task_struct_kv4_follower) (StringMap.add "2.6.25.14-108.fc9.i686" (inet6_ifaddr_kv3_follower, in_ifaddr_kv3_follower, inet6_dev_kv3_follower, in_device_kv3_follower, net_kv3_follower, net_device_kv3_follower, task_struct_kv3_follower) (StringMap.add "2.6.25.14-108.fc9.i586" (inet6_ifaddr_kv2_follower, in_ifaddr_kv2_follower, inet6_dev_kv2_follower, in_device_kv2_follower, net_kv2_follower, net_device_kv2_follower, task_struct_kv2_follower) (StringMap.add "2.6.25.14-108.fc9.ppc64" (inet6_ifaddr_kv1_follower, in_ifaddr_kv1_follower, inet6_dev_kv1_follower, in_device_kv1_follower, net_kv1_follower, net_device_kv1_follower, task_struct_kv1_follower) (StringMap.add "2.6.25.14-69.fc8.x86_64" (inet6_ifaddr_kv0_follower, in_ifaddr_kv0_follower, inet6_dev_kv0_follower, in_device_kv0_follower, net_kv0_follower, net_device_kv0_follower, task_struct_kv0_follower) StringMap.empty)))))))))));; let task_struct_follower kernel_version load addr = let followers = try StringMap.find kernel_version follower_map with | Not_found -> unknown_kernel_version kernel_version "task_struct" in let (_, _, _, _, _, _, f) = followers in f load followers AddrMap.empty addr;; let net_device_follower kernel_version load addr = let followers = try StringMap.find kernel_version follower_map with | Not_found -> unknown_kernel_version kernel_version "net_device" in let (_, _, _, _, _, f, _) = followers in f load followers AddrMap.empty addr;; let net_follower kernel_version load addr = let followers = try StringMap.find kernel_version follower_map with | Not_found -> unknown_kernel_version kernel_version "net" in let (_, _, _, _, f, _, _) = followers in f load followers AddrMap.empty addr;; let in_device_follower kernel_version load addr = let followers = try StringMap.find kernel_version follower_map with | Not_found -> unknown_kernel_version kernel_version "in_device" in let (_, _, _, f, _, _, _) = followers in f load followers AddrMap.empty addr;; let inet6_dev_follower kernel_version load addr = let followers = try StringMap.find kernel_version follower_map with | Not_found -> unknown_kernel_version kernel_version "inet6_dev" in let (_, _, f, _, _, _, _) = followers in f load followers AddrMap.empty addr;; let in_ifaddr_follower kernel_version load addr = let followers = try StringMap.find kernel_version follower_map with | Not_found -> unknown_kernel_version kernel_version "in_ifaddr" in let (_, f, _, _, _, _, _) = followers in f load followers AddrMap.empty addr;; let inet6_ifaddr_follower kernel_version load addr = let followers = try StringMap.find kernel_version follower_map with | Not_found -> unknown_kernel_version kernel_version "inet6_ifaddr" in let (f, _, _, _, _, _, _) = followers in f load followers AddrMap.empty addr;;