sig
  type t = {
    iface : string;
    rx_bytes : int;
    rx_packets : int;
    rx_errs : int;
    rx_drop : int;
    rx_fifo : int;
    rx_frame : int;
    rx_compressed : bool;
    rx_multicast : bool;
    tx_bytes : int;
    tx_packets : int;
    tx_errs : int;
    tx_drop : int;
    tx_fifo : int;
    tx_colls : int;
    tx_carrier : int;
    tx_compressed : bool;
  }
  val tx_compressed : Procfs.Net.Dev.t -> bool
  val tx_carrier : Procfs.Net.Dev.t -> int
  val tx_colls : Procfs.Net.Dev.t -> int
  val tx_fifo : Procfs.Net.Dev.t -> int
  val tx_drop : Procfs.Net.Dev.t -> int
  val tx_errs : Procfs.Net.Dev.t -> int
  val tx_packets : Procfs.Net.Dev.t -> int
  val tx_bytes : Procfs.Net.Dev.t -> int
  val rx_multicast : Procfs.Net.Dev.t -> bool
  val rx_compressed : Procfs.Net.Dev.t -> bool
  val rx_frame : Procfs.Net.Dev.t -> int
  val rx_fifo : Procfs.Net.Dev.t -> int
  val rx_drop : Procfs.Net.Dev.t -> int
  val rx_errs : Procfs.Net.Dev.t -> int
  val rx_packets : Procfs.Net.Dev.t -> int
  val rx_bytes : Procfs.Net.Dev.t -> int
  val iface : Procfs.Net.Dev.t -> string
  module Fields :
    sig
      val names : string list
      val tx_compressed : (Procfs.Net.Dev.t, bool) Fieldslib.Field.t
      val tx_carrier : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val tx_colls : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val tx_fifo : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val tx_drop : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val tx_errs : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val tx_packets : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val tx_bytes : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val rx_multicast : (Procfs.Net.Dev.t, bool) Fieldslib.Field.t
      val rx_compressed : (Procfs.Net.Dev.t, bool) Fieldslib.Field.t
      val rx_frame : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val rx_fifo : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val rx_drop : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val rx_errs : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val rx_packets : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val rx_bytes : (Procfs.Net.Dev.t, int) Fieldslib.Field.t
      val iface : (Procfs.Net.Dev.t, string) Fieldslib.Field.t
      val fold :
        init:'acc__ ->
        iface:('acc__ ->
               (Procfs.Net.Dev.t, string) Fieldslib.Field.t -> 'acc__) ->
        rx_bytes:('acc__ ->
                  (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        rx_packets:('acc__ ->
                    (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        rx_errs:('acc__ ->
                 (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        rx_drop:('acc__ ->
                 (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        rx_fifo:('acc__ ->
                 (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        rx_frame:('acc__ ->
                  (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        rx_compressed:('acc__ ->
                       (Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> 'acc__) ->
        rx_multicast:('acc__ ->
                      (Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> 'acc__) ->
        tx_bytes:('acc__ ->
                  (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        tx_packets:('acc__ ->
                    (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        tx_errs:('acc__ ->
                 (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        tx_drop:('acc__ ->
                 (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        tx_fifo:('acc__ ->
                 (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        tx_colls:('acc__ ->
                  (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        tx_carrier:('acc__ ->
                    (Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'acc__) ->
        tx_compressed:('acc__ ->
                       (Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> 'acc__) ->
        'acc__
      val make_creator :
        iface:((Procfs.Net.Dev.t, string) Fieldslib.Field.t ->
               'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
        rx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        rx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                    'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        rx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        rx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        rx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        rx_frame:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        rx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                       'compile_acc__ -> ('input__ -> bool) * 'compile_acc__) ->
        rx_multicast:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                      'compile_acc__ -> ('input__ -> bool) * 'compile_acc__) ->
        tx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        tx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                    'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        tx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        tx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        tx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        tx_colls:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        tx_carrier:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                    'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
        tx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                       'compile_acc__ -> ('input__ -> bool) * 'compile_acc__) ->
        'compile_acc__ -> ('input__ -> Procfs.Net.Dev.t) * 'compile_acc__
      val create :
        iface:string ->
        rx_bytes:int ->
        rx_packets:int ->
        rx_errs:int ->
        rx_drop:int ->
        rx_fifo:int ->
        rx_frame:int ->
        rx_compressed:bool ->
        rx_multicast:bool ->
        tx_bytes:int ->
        tx_packets:int ->
        tx_errs:int ->
        tx_drop:int ->
        tx_fifo:int ->
        tx_colls:int ->
        tx_carrier:int -> tx_compressed:bool -> Procfs.Net.Dev.t
      val map :
        iface:((Procfs.Net.Dev.t, string) Fieldslib.Field.t -> string) ->
        rx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        rx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        rx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        rx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        rx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        rx_frame:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        rx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        rx_multicast:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        tx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        tx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        tx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        tx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        tx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        tx_colls:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        tx_carrier:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> int) ->
        tx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        Procfs.Net.Dev.t
      val iter :
        iface:((Procfs.Net.Dev.t, string) Fieldslib.Field.t -> unit) ->
        rx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        rx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        rx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        rx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        rx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        rx_frame:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        rx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> unit) ->
        rx_multicast:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> unit) ->
        tx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        tx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        tx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        tx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        tx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        tx_colls:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        tx_carrier:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> unit) ->
        tx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> unit) ->
        unit
      val for_all :
        iface:((Procfs.Net.Dev.t, string) Fieldslib.Field.t -> bool) ->
        rx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_frame:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        rx_multicast:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        tx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_colls:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_carrier:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        bool
      val exists :
        iface:((Procfs.Net.Dev.t, string) Fieldslib.Field.t -> bool) ->
        rx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_frame:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        rx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        rx_multicast:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        tx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_colls:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_carrier:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> bool) ->
        tx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> bool) ->
        bool
      val to_list :
        iface:((Procfs.Net.Dev.t, string) Fieldslib.Field.t -> 'elem__) ->
        rx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        rx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        rx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        rx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        rx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        rx_frame:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        rx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> 'elem__) ->
        rx_multicast:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> 'elem__) ->
        tx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        tx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        tx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        tx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        tx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        tx_colls:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        tx_carrier:((Procfs.Net.Dev.t, int) Fieldslib.Field.t -> 'elem__) ->
        tx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t -> 'elem__) ->
        'elem__ list
      val map_poly :
        ([< `Read | `Set_and_create ], Procfs.Net.Dev.t, 'x0)
        Fieldslib.Field.user -> 'x0 list
      module Direct :
        sig
          val iter :
            Procfs.Net.Dev.t ->
            iface:((Procfs.Net.Dev.t, string) Fieldslib.Field.t ->
                   Procfs.Net.Dev.t -> string -> unit) ->
            rx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> unit) ->
            rx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Dev.t -> int -> unit) ->
            rx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> unit) ->
            rx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> unit) ->
            rx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> unit) ->
            rx_frame:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> unit) ->
            rx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                           Procfs.Net.Dev.t -> bool -> unit) ->
            rx_multicast:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                          Procfs.Net.Dev.t -> bool -> unit) ->
            tx_bytes:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> unit) ->
            tx_packets:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Dev.t -> int -> unit) ->
            tx_errs:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> unit) ->
            tx_drop:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> unit) ->
            tx_fifo:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> unit) ->
            tx_colls:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> unit) ->
            tx_carrier:((Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Dev.t -> int -> unit) ->
            tx_compressed:((Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                           Procfs.Net.Dev.t -> bool -> unit) ->
            unit
          val fold :
            Procfs.Net.Dev.t ->
            init:'acc__ ->
            iface:('acc__ ->
                   (Procfs.Net.Dev.t, string) Fieldslib.Field.t ->
                   Procfs.Net.Dev.t -> string -> 'acc__) ->
            rx_bytes:('acc__ ->
                      (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> 'acc__) ->
            rx_packets:('acc__ ->
                        (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Dev.t -> int -> 'acc__) ->
            rx_errs:('acc__ ->
                     (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> 'acc__) ->
            rx_drop:('acc__ ->
                     (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> 'acc__) ->
            rx_fifo:('acc__ ->
                     (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> 'acc__) ->
            rx_frame:('acc__ ->
                      (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> 'acc__) ->
            rx_compressed:('acc__ ->
                           (Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                           Procfs.Net.Dev.t -> bool -> 'acc__) ->
            rx_multicast:('acc__ ->
                          (Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                          Procfs.Net.Dev.t -> bool -> 'acc__) ->
            tx_bytes:('acc__ ->
                      (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> 'acc__) ->
            tx_packets:('acc__ ->
                        (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Dev.t -> int -> 'acc__) ->
            tx_errs:('acc__ ->
                     (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> 'acc__) ->
            tx_drop:('acc__ ->
                     (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> 'acc__) ->
            tx_fifo:('acc__ ->
                     (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Dev.t -> int -> 'acc__) ->
            tx_colls:('acc__ ->
                      (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Dev.t -> int -> 'acc__) ->
            tx_carrier:('acc__ ->
                        (Procfs.Net.Dev.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Dev.t -> int -> 'acc__) ->
            tx_compressed:('acc__ ->
                           (Procfs.Net.Dev.t, bool) Fieldslib.Field.t ->
                           Procfs.Net.Dev.t -> bool -> 'acc__) ->
            'acc__
        end
    end
  val interfaces : unit -> string list
  val of_string : string -> Procfs.Net.Dev.t option
end