+ let image = ref image in
+ let load struct_name addr size =
+ printf "load for net dev, %s: %Lx %d ...\n" struct_name addr size;
+ let mapped =
+ Virt_mem_mmap.is_mapped_range !image.mem addr size in
+ if not mapped then image := load_memory !image addr size;
+ let bits = Virt_mem_mmap.get_bytes !image.mem addr size in
+ Bitstring.bitstring_of_string bits
+ in
+ let map =
+ try
+ let dev_base = Ksymmap.find "dev_base" ksyms in
+ let map =
+ Kernel.net_device_follower kversion load dev_base in
+ Some map
+ with Not_found ->
+ try
+ let dev_base_head = Ksymmap.find "dev_base_head" ksyms in
+ (* XXX adjust to get offset of start of net_device *)
+ assert false
+ with Not_found ->
+ try
+ let init_net = Ksymmap.find "init_net" ksyms in
+ let map =
+ Kernel.net_follower kversion load init_net in
+ Some map
+ with Not_found ->
+ eprintf (f_"%s: cannot find dev_base, dev_base_head or init_net symbols in kernel image.\n") !image.domname;
+ None in
+(*