module TRX: sig .. end
An Ethernet TRX will convert from payload to Ethernet frames (resolving
destinations using ARP), for a single Arp.HwProto.t.
type t = {
|
src : Eth.Addr.t; |
|
gw : Eth.gw_addr option; |
|
proto : Arp.HwProto.t; |
|
mtu : int; |
|
mutable my_addresses : Bitstring.bitstring list; |
|
mutable emit : Bitstring.bitstring -> unit; |
|
mutable recv : Bitstring.bitstring -> unit; |
|
mutable promisc : Bitstring.bitstring -> unit; |
|
arp_cache : Eth.Addr.t option Tools.BitHash.t; |
|
delayed : Bitstring.bitstring Tools.BitHash.t; |
}
type eth_trx = {
|
trx : Tools.trx; |
|
set_promiscuous : (Bitstring.bitstring -> unit) -> unit; |
|
set_addresses : Bitstring.bitstring list -> unit; |
|
get_source : unit -> Eth.Addr.t; |
|
arp_set : Bitstring.bitstring -> Eth.Addr.t option -> unit; |
}
val send : t -> Arp.HwProto.t -> Eth.Addr.t -> Tools.Payload.outer_t -> unit
Low level send fonction. Takes a Arp.HwProto.t since it's used both
for the user payload protocol and ARP protocol.
val resolve_proto_addr : t ->
Bitstring.bitstring -> Bitstring.bitstring -> Bitstring.bitstring -> unit
type dst =
| |
Delayed |
| |
Dst of Eth.Addr.t |
val arp_resolve_ipv4 : t ->
Bitstring.bitstring ->
Bitstring.bitstring -> Tools.BitHash.key -> dst
val dst_for : t -> Bitstring.bitstring -> dst Batteries.Option.Monad.m
val tx : t -> Bitstring.bitstring -> unit
Transmit function. tx t payload Will send the payload.
val rx : t -> string * int * int -> unit
Receive function, called to input an Ethernet frame into the TRX.
val make : ?mtu:int ->
Eth.Addr.t ->
?gw:Eth.gw_addr ->
?promisc:(Bitstring.bitstring -> unit) ->
Arp.HwProto.t -> Bitstring.bitstring list -> eth_trx
mtu : the maximum transmit unit (ie. you won't be able to send longer payloads)
src : the source Eth.Addr.t
gw : an optional gateway
promisc : an optional function that will receive frames received but not destined to this TRX.
proto : the Arp.HwProto.t we want to transmit/receive.
my_addresses : a list of bitstrings that we consider to be our address (used for instance to reply to ARP queries)