sig
  module Dev :
    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 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 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 map_poly :
            (Procfs.Net.Dev.t, 'x0) Fieldslib.Field.user -> 'x0 list
          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
          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
  module Route :
    sig
      type t = {
        iface : string;
        destination : Core.Std.Unix.Inet_addr.t;
        gateway : Core.Std.Unix.Inet_addr.t;
        flags : int;
        refcnt : int;
        use : int;
        metric : int;
        mask : Core.Std.Unix.Inet_addr.t;
        mtu : int;
        window : int;
        irtt : int;
      }
      val irtt : Procfs.Net.Route.t -> int
      val window : Procfs.Net.Route.t -> int
      val mtu : Procfs.Net.Route.t -> int
      val mask : Procfs.Net.Route.t -> Core.Std.Unix.Inet_addr.t
      val metric : Procfs.Net.Route.t -> int
      val use : Procfs.Net.Route.t -> int
      val refcnt : Procfs.Net.Route.t -> int
      val flags : Procfs.Net.Route.t -> int
      val gateway : Procfs.Net.Route.t -> Core.Std.Unix.Inet_addr.t
      val destination : Procfs.Net.Route.t -> Core.Std.Unix.Inet_addr.t
      val iface : Procfs.Net.Route.t -> string
      module Fields :
        sig
          val names : string list
          val irtt : (Procfs.Net.Route.t, int) Fieldslib.Field.t
          val window : (Procfs.Net.Route.t, int) Fieldslib.Field.t
          val mtu : (Procfs.Net.Route.t, int) Fieldslib.Field.t
          val mask :
            (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t) Fieldslib.Field.t
          val metric : (Procfs.Net.Route.t, int) Fieldslib.Field.t
          val use : (Procfs.Net.Route.t, int) Fieldslib.Field.t
          val refcnt : (Procfs.Net.Route.t, int) Fieldslib.Field.t
          val flags : (Procfs.Net.Route.t, int) Fieldslib.Field.t
          val gateway :
            (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t) Fieldslib.Field.t
          val destination :
            (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t) Fieldslib.Field.t
          val iface : (Procfs.Net.Route.t, string) Fieldslib.Field.t
          val fold :
            init:'acc__ ->
            iface:('acc__ ->
                   (Procfs.Net.Route.t, string) Fieldslib.Field.t -> 'acc__) ->
            destination:('acc__ ->
                         (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t -> 'acc__) ->
            gateway:('acc__ ->
                     (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                     Fieldslib.Field.t -> 'acc__) ->
            flags:('acc__ ->
                   (Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'acc__) ->
            refcnt:('acc__ ->
                    (Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'acc__) ->
            use:('acc__ ->
                 (Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'acc__) ->
            metric:('acc__ ->
                    (Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'acc__) ->
            mask:('acc__ ->
                  (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                  Fieldslib.Field.t -> 'acc__) ->
            mtu:('acc__ ->
                 (Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'acc__) ->
            window:('acc__ ->
                    (Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'acc__) ->
            irtt:('acc__ ->
                  (Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'acc__) ->
            'acc__
          val make_creator :
            iface:((Procfs.Net.Route.t, string) Fieldslib.Field.t ->
                   'compile_acc__ -> ('input__ -> string) * 'compile_acc__) ->
            destination:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t ->
                         'compile_acc__ ->
                         ('input__ -> Core.Std.Unix.Inet_addr.t) *
                         'compile_acc__) ->
            gateway:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                     Fieldslib.Field.t ->
                     'compile_acc__ ->
                     ('input__ -> Core.Std.Unix.Inet_addr.t) * 'compile_acc__) ->
            flags:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                   'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
            refcnt:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                    'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
            use:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
            metric:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                    'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
            mask:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                  Fieldslib.Field.t ->
                  'compile_acc__ ->
                  ('input__ -> Core.Std.Unix.Inet_addr.t) * 'compile_acc__) ->
            mtu:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                 'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
            window:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                    'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
            irtt:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                  'compile_acc__ -> ('input__ -> int) * 'compile_acc__) ->
            'compile_acc__ ->
            ('input__ -> Procfs.Net.Route.t) * 'compile_acc__
          val create :
            iface:string ->
            destination:Core.Std.Unix.Inet_addr.t ->
            gateway:Core.Std.Unix.Inet_addr.t ->
            flags:int ->
            refcnt:int ->
            use:int ->
            metric:int ->
            mask:Core.Std.Unix.Inet_addr.t ->
            mtu:int -> window:int -> irtt:int -> Procfs.Net.Route.t
          val iter :
            iface:((Procfs.Net.Route.t, string) Fieldslib.Field.t -> unit) ->
            destination:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t -> unit) ->
            gateway:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                     Fieldslib.Field.t -> unit) ->
            flags:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> unit) ->
            refcnt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> unit) ->
            use:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> unit) ->
            metric:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> unit) ->
            mask:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                  Fieldslib.Field.t -> unit) ->
            mtu:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> unit) ->
            window:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> unit) ->
            irtt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> unit) ->
            unit
          val map :
            iface:((Procfs.Net.Route.t, string) Fieldslib.Field.t -> string) ->
            destination:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t -> Core.Std.Unix.Inet_addr.t) ->
            gateway:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                     Fieldslib.Field.t -> Core.Std.Unix.Inet_addr.t) ->
            flags:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> int) ->
            refcnt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> int) ->
            use:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> int) ->
            metric:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> int) ->
            mask:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                  Fieldslib.Field.t -> Core.Std.Unix.Inet_addr.t) ->
            mtu:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> int) ->
            window:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> int) ->
            irtt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> int) ->
            Procfs.Net.Route.t
          val map_poly :
            (Procfs.Net.Route.t, 'x0) Fieldslib.Field.user -> 'x0 list
          val for_all :
            iface:((Procfs.Net.Route.t, string) Fieldslib.Field.t -> bool) ->
            destination:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t -> bool) ->
            gateway:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                     Fieldslib.Field.t -> bool) ->
            flags:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            refcnt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            use:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            metric:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            mask:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                  Fieldslib.Field.t -> bool) ->
            mtu:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            window:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            irtt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            bool
          val exists :
            iface:((Procfs.Net.Route.t, string) Fieldslib.Field.t -> bool) ->
            destination:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t -> bool) ->
            gateway:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                     Fieldslib.Field.t -> bool) ->
            flags:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            refcnt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            use:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            metric:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            mask:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                  Fieldslib.Field.t -> bool) ->
            mtu:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            window:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            irtt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> bool) ->
            bool
          val to_list :
            iface:((Procfs.Net.Route.t, string) Fieldslib.Field.t -> 'elem__) ->
            destination:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t -> 'elem__) ->
            gateway:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                     Fieldslib.Field.t -> 'elem__) ->
            flags:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'elem__) ->
            refcnt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'elem__) ->
            use:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'elem__) ->
            metric:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'elem__) ->
            mask:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                  Fieldslib.Field.t -> 'elem__) ->
            mtu:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'elem__) ->
            window:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'elem__) ->
            irtt:((Procfs.Net.Route.t, int) Fieldslib.Field.t -> 'elem__) ->
            'elem__ list
          module Direct :
            sig
              val iter :
                Procfs.Net.Route.t ->
                iface:((Procfs.Net.Route.t, string) Fieldslib.Field.t ->
                       Procfs.Net.Route.t -> string -> unit) ->
                destination:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                             Fieldslib.Field.t ->
                             Procfs.Net.Route.t ->
                             Core.Std.Unix.Inet_addr.t -> unit) ->
                gateway:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t ->
                         Procfs.Net.Route.t ->
                         Core.Std.Unix.Inet_addr.t -> unit) ->
                flags:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                       Procfs.Net.Route.t -> int -> unit) ->
                refcnt:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Route.t -> int -> unit) ->
                use:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Route.t -> int -> unit) ->
                metric:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Route.t -> int -> unit) ->
                mask:((Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                      Fieldslib.Field.t ->
                      Procfs.Net.Route.t -> Core.Std.Unix.Inet_addr.t -> unit) ->
                mtu:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Route.t -> int -> unit) ->
                window:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Route.t -> int -> unit) ->
                irtt:((Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Route.t -> int -> unit) ->
                unit
              val fold :
                Procfs.Net.Route.t ->
                init:'acc__ ->
                iface:('acc__ ->
                       (Procfs.Net.Route.t, string) Fieldslib.Field.t ->
                       Procfs.Net.Route.t -> string -> 'acc__) ->
                destination:('acc__ ->
                             (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                             Fieldslib.Field.t ->
                             Procfs.Net.Route.t ->
                             Core.Std.Unix.Inet_addr.t -> 'acc__) ->
                gateway:('acc__ ->
                         (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                         Fieldslib.Field.t ->
                         Procfs.Net.Route.t ->
                         Core.Std.Unix.Inet_addr.t -> 'acc__) ->
                flags:('acc__ ->
                       (Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                       Procfs.Net.Route.t -> int -> 'acc__) ->
                refcnt:('acc__ ->
                        (Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Route.t -> int -> 'acc__) ->
                use:('acc__ ->
                     (Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Route.t -> int -> 'acc__) ->
                metric:('acc__ ->
                        (Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Route.t -> int -> 'acc__) ->
                mask:('acc__ ->
                      (Procfs.Net.Route.t, Core.Std.Unix.Inet_addr.t)
                      Fieldslib.Field.t ->
                      Procfs.Net.Route.t ->
                      Core.Std.Unix.Inet_addr.t -> 'acc__) ->
                mtu:('acc__ ->
                     (Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                     Procfs.Net.Route.t -> int -> 'acc__) ->
                window:('acc__ ->
                        (Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                        Procfs.Net.Route.t -> int -> 'acc__) ->
                irtt:('acc__ ->
                      (Procfs.Net.Route.t, int) Fieldslib.Field.t ->
                      Procfs.Net.Route.t -> int -> 'acc__) ->
                'acc__
            end
        end
      val default : unit -> Core.Std.Unix.Inet_addr.t
    end
end