sig
  type t = {
    ttl : int;
    proto : Ip.Proto.t;
    diff_serv : int;
    ecn : int;
    flow_label : int;
    src : Ip.Addr.t;
    dst : Ip.Addr.t;
    payload : Tools.Payload.t;
  }
  val make :
    ?ttl:int ->
    ?diff_serv:int ->
    ?ecn:int ->
    ?flow_label:int ->
    Ip.Proto.t ->
    Ip.Addr.t -> Ip.Addr.t -> Tools.Payload.outer_t -> Ip6.Pdu.t
  val random : unit -> Ip6.Pdu.t
  val pseudo_header : Ip6.Pdu.t -> unit -> Bitstring.bitstring
  val pack : Ip6.Pdu.t -> Bitstring.bitstring
  val unpack : string * int * int -> Ip6.Pdu.t option
end