package tcpip

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Ndpv6Source

Sourcetype ipaddr = Ipaddr.V6.t
Sourcetype time = int64
Sourceval checksum : Cstruct.t -> Cstruct.t list -> int
Sourcetype event = [
  1. | `Tcp of ipaddr * ipaddr * Cstruct.t
  2. | `Udp of ipaddr * ipaddr * Cstruct.t
  3. | `Default of int * ipaddr * ipaddr * Cstruct.t
]
Sourcetype context
Sourceval local : handle_ra:bool -> now:time -> Macaddr.t -> context * (Macaddr.t * int * (Cstruct.t -> int)) list

local ~handle_ra ~now mac is a pair ctx, outs where ctx is a local IPv6 context associated to the hardware address mac. outs is a list of ethif packets to be sent.

Sourceval add_ip : now:time -> context -> prefix -> context * (Macaddr.t * int * (Cstruct.t -> int)) list

add_ip ~now ctx ip is ctx', outs where ctx' is ctx updated with a new local ip and outs is a list of ethif packets to be sent.

Sourceval get_ip : context -> ipaddr list

get_ip ctx returns the list of local ips.

Sourceval configured_ips : context -> prefix list

configured_ips ctx returns the list of local prefixes.

Sourceval select_source : context -> ipaddr -> ipaddr

select_source ctx ip returns the ip that should be put in the source field of a packet destined to ip.

Sourceval handle : now:time -> context -> Cstruct.t -> context * (Macaddr.t * int * (Cstruct.t -> int)) list * event list

handle ~now ctx buf handles an incoming ipv6 packet. It returns ctx', bufs, evs where ctx' is the updated context, bufs is a list of packets to be sent and evs is a list of packets to be passed to the higher layers (udp, tcp, etc) for further processing.

Sourceval send : now:time -> context -> ?src:ipaddr -> ipaddr -> Tcpip.Ip.proto -> int -> (Cstruct.t -> Cstruct.t -> int) -> context * (Macaddr.t * int * (Cstruct.t -> int)) list

send ~now ctx ?src dst proto size fillf starts route resolution and assembles an ipv6 packet of size for sending with header and body passed to fillf. It returns a pair ctx', dst_size_fills where ctx' is the updated context and dst, size, fillf is a list of packets to be sent, specified by destination, their size, and fill function.

Sourceval tick : now:time -> context -> context * (Macaddr.t * int * (Cstruct.t -> int)) list

tick ~now ctx should be called periodically (every 1s is good). It returns ctx', bufs where ctx' is the updated context and bufs is a list of packets to be sent.

Sourceval add_prefix : now:time -> context -> prefix -> context

add_prefix ~now ctx pfx adds a local prefix to ctx.

Sourceval get_prefix : context -> prefix list

get_prefix ctx returns the list of local prefixes known to ctx.

Sourceval add_routers : now:time -> context -> ipaddr list -> context

add_routers ~now ctx ips adds a list of gateways to ctx to be used for routing.

Sourceval get_routers : context -> ipaddr list

get_routers ctx returns the list of gateways known to ctx.

OCaml

Innovation. Community. Security.