Extract 'struct net' (for net namespaces).
[virt-mem.git] / lib / kernel_net.ml
diff --git a/lib/kernel_net.ml b/lib/kernel_net.ml
new file mode 100644 (file)
index 0000000..df4882c
--- /dev/null
@@ -0,0 +1,343 @@
+(* WARNING: This file and the corresponding mli (interface) are
+ * automatically generated by the extract/codegen/kerneldb_to_parser.ml
+ * 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'.
+ *)
+
+let zero = 0;;
+let struct_name = "net";;
+let match_err = "failed to match kernel structure";;
+type t = { net_dev_base_head'next : Virt_mem_mmap.addr };;
+type fs_t = { __fs_net_dev_base_head'next : Virt_mem_types.fieldsig };;
+let fieldsig_1 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 64; };
+  };;
+let fieldsig_2 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 48; };
+  };;
+let fieldsig_3 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 72; };
+  };;
+let fieldsig_4 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 128; };
+  };;
+let fieldsig_5 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 48; };
+  };;
+let fieldsig_6 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 88; };
+  };;
+let fieldsig_7 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 120; };
+  };;
+let fieldsig_8 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 52; };
+  };;
+let fieldsig_9 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 96; };
+  };;
+let fieldsig_10 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 96; };
+  };;
+let fieldsig_11 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 56; };
+  };;
+let fieldsig_12 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 144; };
+  };;
+let fieldsig_13 =
+  {
+    (())
+    with
+    __fs_net_dev_base_head'next =
+      { Virt_mem_types.field_available = true; field_offset = 144; };
+  };;
+let parser_1 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+32 : offset(512), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 64L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_1", match_err));;
+let parser_2 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+32 : offset(384), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 48L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_2", match_err));;
+let parser_3 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+32 : offset(576), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 72L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_3", match_err));;
+let parser_4 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+64 : offset(1024), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 128L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_4", match_err));;
+let parser_5 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+32 : offset(384), bigendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 48L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_5", match_err));;
+let parser_6 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+64 : offset(704), bigendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 88L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_6", match_err));;
+let parser_7 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+64 : offset(960), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 120L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_7", match_err));;
+let parser_8 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+32 : offset(416), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 52L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_8", match_err));;
+let parser_9 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+64 : offset(768), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 96L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_9", match_err));;
+let parser_10 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+64 : offset(768), bigendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 96L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_10", match_err));;
+let parser_11 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+32 : offset(448), bigendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 56L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_11", match_err));;
+let parser_12 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+64 : offset(1152), bigendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 144L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_12", match_err));;
+let parser_13 bits = 
+  bitmatch bits with
+  | { net_dev_base_head'next : zero+64 : offset(1152), littleendian } ->
+      { net_dev_base_head'next = Int64.sub net_dev_base_head'next 144L }
+  | { _ } ->
+      raise (Virt_mem_types.ParseError (struct_name, "parser_13", match_err));;
+module StringMap = Map.Make(String);;
+let map = StringMap.empty;;
+let v = (parser_1, 732, fieldsig_1);;
+let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i686" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-7.fc9.i686" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-9.fc9.i686" v map;;
+let v = (parser_2, 660, fieldsig_2);;
+let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.231.rc1.git6.fc10.i686" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.i686" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.i686" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i686" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i686" v map;;
+let v = (parser_1, 732, fieldsig_1);;
+let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;;
+let v = (parser_4, 1352, fieldsig_4);;
+let map = StringMap.add "2.6.26.2-2.fc8.x86_64" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i586" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.i686" v map;;
+let v = (parser_5, 64, fieldsig_5);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc" v map;;
+let v = (parser_6, 120, fieldsig_6);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc64" v map;;
+let v = (parser_7, 152, fieldsig_7);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.x86_64" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-7.fc9.i586" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-7.fc9.i686" v map;;
+let v = (parser_5, 64, fieldsig_5);;
+let map = StringMap.add "2.6.24-7.fc9.ppc" v map;;
+let v = (parser_6, 120, fieldsig_6);;
+let map = StringMap.add "2.6.24-7.fc9.ppc64" v map;;
+let v = (parser_7, 152, fieldsig_7);;
+let map = StringMap.add "2.6.24-7.fc9.x86_64" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-9.fc9.i586" v map;;
+let v = (parser_1, 80, fieldsig_1);;
+let map = StringMap.add "2.6.24-9.fc9.i686" v map;;
+let v = (parser_5, 64, fieldsig_5);;
+let map = StringMap.add "2.6.24-9.fc9.ppc" v map;;
+let v = (parser_6, 120, fieldsig_6);;
+let map = StringMap.add "2.6.24-9.fc9.ppc64" v map;;
+let v = (parser_7, 152, fieldsig_7);;
+let map = StringMap.add "2.6.24-9.fc9.x86_64" v map;;
+let v = (parser_8, 284, fieldsig_8);;
+let map = StringMap.add "2.6.25.11-97.fc9.i686" v map;;
+let v = (parser_9, 488, fieldsig_9);;
+let map = StringMap.add "2.6.25.11-97.fc9.x86_64" v map;;
+let v = (parser_2, 660, fieldsig_2);;
+let map = StringMap.add "2.6.26.2-2.fc8.i586" v map;;
+let v = (parser_2, 660, fieldsig_2);;
+let map = StringMap.add "2.6.26.2-2.fc8.i686" v map;;
+let v = (parser_5, 652, fieldsig_5);;
+let map = StringMap.add "2.6.26.2-2.fc8.ppc" v map;;
+let v = (parser_10, 1224, fieldsig_10);;
+let map = StringMap.add "2.6.26.2-2.fc8.ppc64" v map;;
+let v = (parser_9, 1224, fieldsig_9);;
+let map = StringMap.add "2.6.26.2-2.fc8.x86_64" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.231.rc1.git6.fc10.i686" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.i586" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.i686" v map;;
+let v = (parser_11, 860, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.ppc" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.ppc64" v map;;
+let v = (parser_13, 1680, fieldsig_13);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.x86_64" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.i586" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.i686" v map;;
+let v = (parser_11, 860, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.ppc" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.ppc64" v map;;
+let v = (parser_13, 1680, fieldsig_13);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.x86_64" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i586" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.i686" v map;;
+let v = (parser_11, 860, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc64" v map;;
+let v = (parser_13, 1680, fieldsig_13);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.x86_64" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i586" v map;;
+let v = (parser_3, 912, fieldsig_3);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.i686" v map;;
+let v = (parser_11, 860, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc64" v map;;
+let v = (parser_13, 1680, fieldsig_13);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.x86_64" v map;;
+let v = (parser_6, 120, fieldsig_6);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc64" v map;;
+let v = (parser_6, 120, fieldsig_6);;
+let map = StringMap.add "2.6.24-7.fc9.ppc64" v map;;
+let v = (parser_6, 120, fieldsig_6);;
+let map = StringMap.add "2.6.24-9.fc9.ppc64" v map;;
+let v = (parser_10, 1224, fieldsig_10);;
+let map = StringMap.add "2.6.26.2-2.fc8.ppc64" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.231.rc1.git6.fc10.ppc64" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.ppc64" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.ppc64" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc64" v map;;
+let v = (parser_12, 1680, fieldsig_12);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc64" v map;;
+let v = (parser_5, 64, fieldsig_5);;
+let map = StringMap.add "2.6.24-0.167.rc8.git4.fc9.ppc" v map;;
+let v = (parser_5, 64, fieldsig_5);;
+let map = StringMap.add "2.6.24-7.fc9.ppc" v map;;
+let v = (parser_5, 64, fieldsig_5);;
+let map = StringMap.add "2.6.24-9.fc9.ppc" v map;;
+let v = (parser_5, 660, fieldsig_5);;
+let map = StringMap.add "2.6.26.2-2.fc8.ppc" v map;;
+let v = (parser_11, 864, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.237.rc2.fc10.ppc" v map;;
+let v = (parser_11, 864, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.238.rc2.fc10.ppc" v map;;
+let v = (parser_11, 864, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.241.rc2.git1.fc10.ppc" v map;;
+let v = (parser_11, 864, fieldsig_11);;
+let map = StringMap.add "2.6.27-0.244.rc2.git1.fc10.ppc" v map;;
+type kernel_version = string;;
+let net_known version = StringMap.mem version map;;
+let net_size version =
+  let (_, size, _) = StringMap.find version map in size;;
+let net_of_bits version bits =
+  let (parsefn, _, _) = StringMap.find version map in parsefn bits;;
+let get_net version mem addr =
+  let (parsefn, size, _) = StringMap.find version map in
+  let bytes = Virt_mem_mmap.get_bytes mem addr size in
+  let bits = Bitstring.bitstring_of_string bytes in parsefn bits;;
+let field_signature_of_net_dev_base_head'next version =
+  let (_, _, fs) = StringMap.find version map
+  in fs.__fs_net_dev_base_head'next;;