let match_err = "failed to match kernel structure";;
let unknown_kernel_version version struct_name =
invalid_arg
let match_err = "failed to match kernel structure";;
let unknown_kernel_version version struct_name =
invalid_arg
let task_struct_parser_2 kernel_version bits =
bitmatch bits with
| { state : zero+64 : offset(0), bigendian;
let task_struct_parser_2 kernel_version bits =
bitmatch bits with
| { state : zero+64 : offset(0), bigendian;
let task_struct_parser_3 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), littleendian;
let task_struct_parser_3 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), littleendian;
let task_struct_parser_4 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), littleendian;
let task_struct_parser_4 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), littleendian;
let task_struct_parser_5 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), bigendian;
let task_struct_parser_5 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), bigendian;
let task_struct_parser_6 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), bigendian;
let task_struct_parser_6 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), bigendian;
let task_struct_parser_7 kernel_version bits =
bitmatch bits with
| { state : zero+64 : offset(0), littleendian;
let task_struct_parser_7 kernel_version bits =
bitmatch bits with
| { state : zero+64 : offset(0), littleendian;
let task_struct_parser_8 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), littleendian;
let task_struct_parser_8 kernel_version bits =
bitmatch bits with
| { state : zero+32 : offset(0), littleendian;
let task_struct_parser_9 kernel_version bits =
bitmatch bits with
| { state : zero+64 : offset(0), bigendian;
let task_struct_parser_9 kernel_version bits =
bitmatch bits with
| { state : zero+64 : offset(0), bigendian;
let net_device_parser_10 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_10 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_11 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_11 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_12 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_12 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_13 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_13 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_14 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_14 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_15 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_15 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_16 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_16 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_17 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_device_parser_17 kernel_version bits =
bitmatch bits with
| { name : 128 : offset(0), string;
let net_parser_20 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+32 : offset(416), littleendian;
let net_parser_20 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+32 : offset(416), littleendian;
net_dev_base_head'prev_offset = 56;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
net_dev_base_head'prev_offset = 56;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
let net_parser_21 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+32 : offset(416), bigendian;
let net_parser_21 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+32 : offset(416), bigendian;
net_dev_base_head'prev_offset = 56;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
net_dev_base_head'prev_offset = 56;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
let net_parser_18 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+64 : offset(768), littleendian;
let net_parser_18 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+64 : offset(768), littleendian;
net_dev_base_head'prev_offset = 104;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
net_dev_base_head'prev_offset = 104;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
let net_parser_19 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+64 : offset(768), bigendian;
let net_parser_19 kernel_version bits =
bitmatch bits with
| { dev_base_head'next : zero+64 : offset(768), bigendian;
net_dev_base_head'prev_offset = 104;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
net_dev_base_head'prev_offset = 104;
net_dev_base_head'prev_adjustment = offset_of_net_device_dev_list'next kernel_version }
| { _ } ->
let in_device_parser_24 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+32 : offset(96), littleendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let in_device_parser_24 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+32 : offset(96), littleendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let in_device_parser_25 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+32 : offset(96), bigendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let in_device_parser_25 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+32 : offset(96), bigendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let in_device_parser_22 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+64 : offset(128), littleendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let in_device_parser_22 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+64 : offset(128), littleendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let in_device_parser_23 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+64 : offset(128), bigendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let in_device_parser_23 kernel_version bits =
bitmatch bits with
| { ifa_list : zero+64 : offset(128), bigendian } ->
{ in_device_ifa_list = ifa_list }
| { _ } ->
let inet6_dev_parser_28 kernel_version bits =
bitmatch bits with
| { addr_list : zero+32 : offset(32), littleendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let inet6_dev_parser_28 kernel_version bits =
bitmatch bits with
| { addr_list : zero+32 : offset(32), littleendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let inet6_dev_parser_29 kernel_version bits =
bitmatch bits with
| { addr_list : zero+32 : offset(32), bigendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let inet6_dev_parser_29 kernel_version bits =
bitmatch bits with
| { addr_list : zero+32 : offset(32), bigendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let inet6_dev_parser_26 kernel_version bits =
bitmatch bits with
| { addr_list : zero+64 : offset(64), littleendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let inet6_dev_parser_26 kernel_version bits =
bitmatch bits with
| { addr_list : zero+64 : offset(64), littleendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let inet6_dev_parser_27 kernel_version bits =
bitmatch bits with
| { addr_list : zero+64 : offset(64), bigendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let inet6_dev_parser_27 kernel_version bits =
bitmatch bits with
| { addr_list : zero+64 : offset(64), bigendian } ->
{ inet6_dev_addr_list = addr_list }
| { _ } ->
let in_ifaddr_parser_32 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+32 : offset(0), littleendian;
let in_ifaddr_parser_32 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+32 : offset(0), littleendian;
let in_ifaddr_parser_33 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+32 : offset(0), bigendian;
let in_ifaddr_parser_33 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+32 : offset(0), bigendian;
let in_ifaddr_parser_30 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+64 : offset(0), littleendian;
let in_ifaddr_parser_30 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+64 : offset(0), littleendian;
let in_ifaddr_parser_31 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+64 : offset(0), bigendian;
let in_ifaddr_parser_31 kernel_version bits =
bitmatch bits with
| { ifa_next : zero+64 : offset(0), bigendian;
let inet6_ifaddr_parser_36 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let inet6_ifaddr_parser_36 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let inet6_ifaddr_parser_34 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let inet6_ifaddr_parser_34 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let inet6_ifaddr_parser_35 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_35 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_37 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_37 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_39 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let inet6_ifaddr_parser_39 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let inet6_ifaddr_parser_41 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_41 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_38 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_38 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), bigendian;
let inet6_ifaddr_parser_40 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let inet6_ifaddr_parser_40 kernel_version bits =
bitmatch bits with
| { prefix_len : zero+32 : offset(128), littleendian;
let offset = data.task_struct_run_list'next_offset
and adj = data.task_struct_run_list'next_adjustment in
let offset = Int64.of_int offset and adj = Int64.of_int adj in
let offset = data.task_struct_run_list'next_offset
and adj = data.task_struct_run_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 ("task_struct", None) map in
+ let map =
+ if offset <> adj
+ then
+ (let addr = Int64.sub (Int64.add addr offset) adj
+ in AddrMap.add addr ("task_struct", None) map)
+ else map in
let dest_addr = Int64.sub dest_addr adj in
let map = task_struct_follower kernel_version load map dest_addr
in map in
let dest_addr = Int64.sub dest_addr adj in
let map = task_struct_follower kernel_version load map dest_addr
in map in
let offset = data.task_struct_tasks'next_offset
and adj = data.task_struct_tasks'next_adjustment in
let offset = Int64.of_int offset and adj = Int64.of_int adj in
let offset = data.task_struct_tasks'next_offset
and adj = data.task_struct_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", None) map in
+ let map =
+ if offset <> adj
+ then
+ (let addr = Int64.sub (Int64.add addr offset) adj
+ in AddrMap.add addr ("task_struct", None) map)
+ else map in
let dest_addr = Int64.sub dest_addr adj in
let map = task_struct_follower kernel_version load map dest_addr
in map
let dest_addr = Int64.sub dest_addr adj in
let map = task_struct_follower kernel_version load map dest_addr
in map
let offset = data.net_device_dev_list'next_offset
and adj = data.net_device_dev_list'next_adjustment in
let offset = Int64.of_int offset and adj = Int64.of_int adj in
let offset = data.net_device_dev_list'next_offset
and adj = data.net_device_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", None) map in
+ let map =
+ if offset <> adj
+ then
+ (let addr = Int64.sub (Int64.add addr offset) adj
+ in AddrMap.add addr ("net_device", None) map)
+ else map in
let dest_addr = Int64.sub dest_addr adj in
let map = net_device_follower kernel_version load map dest_addr
in map in
let dest_addr = Int64.sub dest_addr adj in
let map = net_device_follower kernel_version load map dest_addr
in map in
let offset = data.net_dev_base_head'next_offset
and adj = data.net_dev_base_head'next_adjustment in
let offset = Int64.of_int offset and adj = Int64.of_int adj in
let offset = data.net_dev_base_head'next_offset
and adj = data.net_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", None) map in
+ let map =
+ if offset <> adj
+ then
+ (let addr = Int64.sub (Int64.add addr offset) adj
+ in AddrMap.add addr ("net_device", None) map)
+ else map in
let dest_addr = Int64.sub dest_addr adj in
let map = net_device_follower kernel_version load map dest_addr in map in
let dest_addr = data.net_dev_base_head'prev in
let dest_addr = Int64.sub dest_addr adj in
let map = net_device_follower kernel_version load map dest_addr in map in
let dest_addr = data.net_dev_base_head'prev in
let offset = data.net_dev_base_head'prev_offset
and adj = data.net_dev_base_head'prev_adjustment in
let offset = Int64.of_int offset and adj = Int64.of_int adj in
let offset = data.net_dev_base_head'prev_offset
and adj = data.net_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", None) map in
+ let map =
+ if offset <> adj
+ then
+ (let addr = Int64.sub (Int64.add addr offset) adj
+ in AddrMap.add addr ("net_device", None) map)
+ else map in
let dest_addr = Int64.sub dest_addr adj in
let map = net_device_follower kernel_version load map dest_addr in map
in map)
let dest_addr = Int64.sub dest_addr adj in
let map = net_device_follower kernel_version load map dest_addr in map
in map)