package tuntap

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

Module TuntapSource

Module for dealing with TUN/TAP devices. TUN refers to layer 3 virtual interfaces whereas TAP refers to layer 2 ones.

Sourceval opentun : ?pi:bool -> ?persist:bool -> ?user:int -> ?group:int -> ?devname:string -> unit -> Unix.file_descr * string

opentun ~pi ~persist ~user ~group ~devname () will create a TUN interface. If devname is specified, or if devname specifies a nonexistent device, a new device will be created, otherwise, the interface devname will be opened. pi is to indicate if you want packet information associated with your frames (tap) or packets (tun) (defaults to no information). persist will set the device persistent with permissions set to user and group if supported by your OS (currently macOS does not support it). The return value is a pair consisting of a fd opened on the freshly created interface, and its name as will be displayed by command ifconfig for example.

Sourceval opentap : ?pi:bool -> ?persist:bool -> ?user:int -> ?group:int -> ?devname:string -> unit -> Unix.file_descr * string

Like opentun, but open TAP interfaces instead of TUN ones.

Sourceval closetun : string -> unit

closetun devname kind will destroy devname, if it exists.

Sourceval closetap : string -> unit

Like closetun, but for TAP interfaces.

Sourceval get_ifnamsiz : unit -> int

get_ifnamsiz () is the value of the constant IFNAMSIZ, defined in <net/if.h>. Useful for allocating buffers that contain interface names.

Sourceval get_macaddr : string -> Macaddr.t

get_hwaddr devname is the MAC address of interface devname, as a raw string (not hexa).

Sourceval get_mtu : string -> int

get_mtu devname is the MTU of interface devname.

Sourceval set_ipv4 : ?netmask:Ipaddr.V4.Prefix.t -> string -> Ipaddr.V4.t -> unit

set_ipv4 ~netmask dev ipaddr assigns an ipaddr to interface dev, with associated netmask netmask if specified. If unspecified, the kernel will assign a default netmask automatically.

Sourceval set_up_and_running : string -> unit

set_up_and_running devname sets interface devname up and running. Note that when using the set_ipv4 function, the interface will automatically be set up and running.

Sourceval getifaddrs : unit -> (string * [ `V4 of Ipaddr.V4.Prefix.t | `V6 of Ipaddr.V6.Prefix.t ]) list

getifaddrs () is the list that associates interface names with IP addresses and prefix. Only interfaces that have an IP address assigned are returned.

Sourceval getifaddrs_v4 : unit -> (string * Ipaddr.V4.Prefix.t) list

Same as getifaddrs but only return interfaces that have an IPv4 assigned.

Sourceval getifaddrs_v6 : unit -> (string * Ipaddr.V6.Prefix.t) list

Same as getifaddrs but only return interfaces that have an IPv6 assigned.

Sourceval addrs_of_ifname : string -> [ `V4 of Ipaddr.V4.Prefix.t | `V6 of Ipaddr.V6.Prefix.t ] list

addrs_of_ifname ifname is the list of IP addresses and their prefixes associated to interface ifname.

Sourceval v4_of_ifname : string -> Ipaddr.V4.Prefix.t list

v4_of_ifname ifname is the list of IPv4 addresses and their prefixes associated to interface ifname.

Sourceval v6_of_ifname : string -> Ipaddr.V6.Prefix.t list

v6_of_ifname ifname is the list of IPv6 addresses and their prefixes associated to interface ifname.