sig
type socket = {
proto : Ip.Proto.t;
nat_port : int;
remote_addr : Ip.Addr.t;
remote_port : int;
}
type cnx = { in_addr : Ip.Addr.t; in_port : int; out_port : int; }
type t = {
addr : Ip.Addr.t;
cnxs : Router.Nat.cnx Tools.OrdArray.t;
in_cnxs_h : (Router.Nat.socket, int) Batteries.Hashtbl.t;
out_cnxs_h : (Router.Nat.socket, int) Batteries.Hashtbl.t;
mutable emit : Bitstring.bitstring -> unit;
mutable recv : Bitstring.bitstring -> unit;
}
val patch_src_port :
Ip.Proto.t ->
string * int * int -> Tcp.Port.outer_t -> Bitstring.bitstring
val patch_dst_port :
Ip.Proto.t ->
string * int * int -> Tcp.Port.outer_t -> Bitstring.bitstring
val tx : Router.Nat.t -> Bitstring.bitstring -> unit
val rx : Router.Nat.t -> Bitstring.bitstring -> unit
val make : Ip.Addr.t -> int -> Tools.trx
end