fuchsia.net.dhcp

PROTOCOLS

Client

Defined in fuchsia.net.dhcp/client.fidl

Client provides control operations on a DHCP client.

Start

Start runs the DHCP client represented by this protocol.

# Errors

In the case that the interface this client represents no longer exists, the server end of this protocol's channel will be closed.

Start returns no other errors currently, but callers should check the error value in case new errors are returned in the future.

Request

NameType

Response

NameType
result Client_Start_Result

Stop

Stops the DHCP client (if it is running).

# Errors

In the case that the interface this client represents no longer exists, the server end of this protocol's channel will be closed.

Stop returns no other errors currently, but callers should check the error value in case new errors are returned in the future.

Request

NameType

Response

NameType
result Client_Stop_Result

Server

Defined in fuchsia.net.dhcp/server.fidl

Provides methods for DHCP Server configuration.

GetOption

Returns the requested Option if it is supported.

  • request code the code of an Option whose value has been requested.
  • response value the value of the requested Option.
  • error a zx.status indicating why the value could not be retrieved.

Request

NameType
code OptionCode

Response

NameType
result Server_GetOption_Result

GetParameter

Returns the requested Parameter if it is supported.

  • request name the name of a Parameter whose value has been requested.
  • response value the value of the requested Parameter.
  • error a zx.status indicating why the value could not be retrieved.

Request

NameType
name ParameterName

Response

NameType
result Server_GetParameter_Result

SetOption

Sets the Option to the argument. Each SetOption call is treated as its own atomic transaction. On success, a SetOption will take effect immediately.

  • request value an Option whose value will be set to the value of this argument.
  • error a zx.status indicating the cause of failure.

Request

NameType
value Option

Response

NameType
result Server_SetOption_Result

SetParameter

Sets the Parameter to the argument. Each SetParameter call is treated as its own atomic transaction. On success, a SetParameter will take effect immediately.

  • request value a Parameter whose value will be set to the value of this argument.
  • error a zx.status indicating the cause of failure.

Request

NameType
value Parameter

Response

NameType
result Server_SetParameter_Result

ListOptions

Lists all DHCP options for which the Server has a value. Any option which does not have a value will be omitted from the returned list. ListOptions provides administrators a means to print a server's configuration as opposed to querying the value of a single Option.

  • response options a vector containing all of the options for which the Server has a value. Bounded to 256 as options are identified by a 1 octet code and 256 is the maximum number of such codes.
  • error a zx.status indicating the cause of failure.

Request

NameType

Response

NameType
result Server_ListOptions_Result

ListParameters

Lists all DHCP server parameters. ListParameters provides administrators a means to print a server's configuration as opposed to querying the value of a single Parameter.

  • response parameter a vector containing the values of all of the Server's parameters. Bounded to 256 to provide a generous upper limit on the number of server parameters while being of the same size as ListOptions.
  • error a zx.status indicating the cause of failure.

Request

NameType

Response

NameType
result Server_ListParameters_Result

STRUCTS

Client_Start_Response

generated

NameTypeDescriptionDefault

Client_Stop_Response

generated

NameTypeDescriptionDefault

Server_GetOption_Response

generated

NameTypeDescriptionDefault
value Option No default

Server_GetParameter_Response

generated

NameTypeDescriptionDefault
value Parameter No default

Server_SetOption_Response

generated

NameTypeDescriptionDefault

Server_SetParameter_Response

generated

NameTypeDescriptionDefault

Server_ListOptions_Response

generated

NameTypeDescriptionDefault
options vector<Option>[256] No default

Server_ListParameters_Response

generated

NameTypeDescriptionDefault
parameters vector<Parameter>[256] No default

ENUMS

OptionOverloadValue

Type: uint8

Defined in fuchsia.net.dhcp/options.fidl

A indication of which DHCP message field should be used to store additional options.

NameValueDescription
FILE 1 The file DHCP field.
SNAME 2 The sname DHCP field.
BOTH 3 Both file and sname DHCP fields.

MessageType

Type: uint8

Defined in fuchsia.net.dhcp/options.fidl

The type of DHCP message. The DHCP protocol requires that all messages identify their type by including the MessageType option. These values are specified in https://tools.ietf.org/html/rfc2132#section-9.6.

NameValueDescription
DHCPDISCOVER 1 A DHCP Discover message.
DHCPOFFER 2 A DHCP Offer message.
DHCPREQUEST 3 A DHCP Request message.
DHCPDECLINE 4 A DHCP Decline message.
DHCPACK 5 A DHCP Ack message.
DHCPNAK 6 A DHCP Nak message;
DHCPRELEASE 7 A DHCP Release message;
DHCPINFORM 8 A DHCP Inform message.

OptionCode

Type: uint32

Defined in fuchsia.net.dhcp/options.fidl

The code of a DHCP option to be retrieved by Server.GetOption(). The code values are from https://tools.ietf.org/html/rfc2132 and the enum variants have been listed in the order they are presented in the RFC.

NameValueDescription
SUBNET_MASK 1
TIME_OFFSET 2
ROUTER 3
TIME_SERVER 4
NAME_SERVER 5
DOMAIN_NAME_SERVER 6
LOG_SERVER 7
COOKIE_SERVER 8
LPR_SERVER 9
IMPRESS_SERVER 10
RESOURCE_LOCATION_SERVER 11
HOST_NAME 12
BOOT_FILE_SIZE 13
MERIT_DUMP_FILE 14
DOMAIN_NAME 15
SWAP_SERVER 16
ROOT_PATH 17
EXTENSIONS_PATH 18
IP_FORWARDING 19
NON_LOCAL_SOURCE_ROUTING 20
POLICY_FILTER 21
MAX_DATAGRAM_REASSEMBLY_SIZE 22
DEFAULT_IP_TTL 23
PATH_MTU_AGING_TIMEOUT 24
PATH_MTU_PLATEAU_TABLE 25
INTERFACE_MTU 26
ALL_SUBNETS_LOCAL 27
BROADCAST_ADDRESS 28
PERFORM_MASK_DISCOVERY 29
MASK_SUPPLIER 30
PERFORM_ROUTER_DISCOVERY 31
ROUTER_SOLICITATION_ADDRESS 32
STATIC_ROUTE 33
TRAILER_ENCAPSULATION 34
ARP_CACHE_TIMEOUT 35
ETHERNET_ENCAPSULATION 36
TCP_DEFAULT_TTL 37
TCP_KEEPALIVE_INTERVAL 38
TCP_KEEPALIVE_GARBAGE 39
NETWORK_INFORMATION_SERVICE_DOMAIN 40
NETWORK_INFORMATION_SERVERS 41
NETWORK_TIME_PROTOCOL_SERVERS 42
VENDOR_SPECIFIC_INFORMATION 43
NETBIOS_OVER_TCPIP_NAME_SERVER 44
NETBIOS_OVER_TCPIP_DATAGRAM_DISTRIBUTION_SERVER 45
NETBIOS_OVER_TCPIP_NODE_TYPE 46
NETBIOS_OVER_TCPIP_SCOPE 47
X_WINDOW_SYSTEM_FONT_SERVER 48
X_WINDOW_SYSTEM_DISPLAY_MANAGER 49
NETWORK_INFORMATION_SERVICE_PLUS_DOMAIN 64
NETWORK_INFORMATION_SERVICE_PLUS_SERVERS 65
MOBILE_IP_HOME_AGENT 68
SMTP_SERVER 69
POP3_SERVER 70
NNTP_SERVER 71
DEFAULT_WWW_SERVER 72
DEFAULT_FINGER_SERVER 73
DEFAULT_IRC_SERVER 74
STREETTALK_SERVER 75
STREETTALK_DIRECTORY_ASSISTANCE_SERVER 76
OPTION_OVERLOAD 52
TFTP_SERVER_NAME 66
BOOTFILE_NAME 67
MAX_DHCP_MESSAGE_SIZE 57
RENEWAL_TIME_VALUE 58
REBINDING_TIME_VALUE 59

ParameterName

Type: uint32

Defined in fuchsia.net.dhcp/server.fidl

The name of the Parameter to be retrieved by Server.GetParameter().

NameValueDescription
IP_ADDRS 0
ADDRESS_POOL 1
LEASE_LENGTH 2
PERMITTED_MACS 3
STATICALLY_ASSIGNED_ADDRS 4
ARP_PROBE 5

TABLES

AddressPool

Defined in fuchsia.net.dhcp/server.fidl

The pool of addresses managed by a DHCP server and from which leases are supplied.

OrdinalNameTypeDescription
1 network_id fuchsia.net/Ipv4Address The network ID of the address pool's subnet.
2 broadcast fuchsia.net/Ipv4Address The broadcast address of the address pool's subnet.
3 mask fuchsia.net/Ipv4Address The subnet mask of the address pool's network.
4 pool_range_start fuchsia.net/Ipv4Address The starting address, inclusive, of the range of addresses which the DHCP server will lease to clients. This address must be in the subnet defined by the network_id and mask members of the AddressPool.
5 pool_range_stop fuchsia.net/Ipv4Address The ending address, inclusive, of the range of addresses which the server will to clients. This address must be in the subnet defined by the network_id and mask members of the AddressPool.

LeaseLength

Defined in fuchsia.net.dhcp/server.fidl

The duration of leases offered by the server.

OrdinalNameTypeDescription
1 default uint32 The default lease length to be issued to clients. This field must have a value.
2 max uint32 The maximum lease length value which the server will issue to clients who have requested a specific lease length. If omitted, the max lease length is equivalent to the default lease length.

StaticAssignment

Defined in fuchsia.net.dhcp/server.fidl

A static IP address assignment for a host or device on the network managed by Server.

OrdinalNameTypeDescription
1 host fuchsia.net/MacAddress The MAC address of the host or device which will have the static IP address assignment.
2 assigned_addr fuchsia.net/Ipv4Address The IP address which the host or device will always be assigned by dhcpd.

UNIONS

Client_Start_Result

generated

NameTypeDescription
response Client_Start_Response
err int32

Client_Stop_Result

generated

NameTypeDescription
response Client_Stop_Response
err int32

Server_GetOption_Result

generated

NameTypeDescription
response Server_GetOption_Response
err int32

Server_GetParameter_Result

generated

NameTypeDescription
response Server_GetParameter_Response
err int32

Server_SetOption_Result

generated

NameTypeDescription
response Server_SetOption_Response
err int32

Server_SetParameter_Result

generated

NameTypeDescription
response Server_SetParameter_Response
err int32

Server_ListOptions_Result

generated

NameTypeDescription
response Server_ListOptions_Response
err int32

Server_ListParameters_Result

generated

NameTypeDescription
response Server_ListParameters_Response
err int32

XUNIONS

Option

Defined in fuchsia.net.dhcp/options.fidl

A generic representation of client configuration parameters and DHCP settings. Options are the mechanism by which the DHCP protocol communicates configuration parameters from a repository on a DHCP server to DHCP clients, or by which DHCP clients and servers communicate data relevant to a DHCP transaction. All DHCP option values must have a length which can fit within a single byte, i.e. less than 256. Options for which there is no reasonable administrator-configurable value have been omitted from this xunion. The omitted options are: * Pad - never has a value * End - never has a value * RequestedIpAddress - value always selected by the DHCP client. * DhcpMessageType - value always determined by state of transaction between DHCP client and server. * ServerIdentifier - value always determined by address to which the server is bound. * ParameterRequestList - value always selected by the DHCP client. * Message - value determined in response to runtime error. * VendorClassIdentifer - value always selected by the DHCP client. * ClientIdentifier - value always selected by the DHCP client.

NameTypeDescription
subnet_mask fuchsia.net/Ipv4Address A 32-bit IPv4 subnet mask.
time_offset int32 The client's offset from UTC in seconds. A positive offset is east of the zero meridian, and a negative offset is west of the zero meridian.
router vector<fuchsia.net/Ipv4Address>[63] A list of the routers in a client's subnet, listed in order of preference.
time_server vector<fuchsia.net/Ipv4Address>[63] A list of time servers available to the client, in order of preference.
name_server vector<fuchsia.net/Ipv4Address>[63] A list of IEN 116 Name servers available to the client, in order of preference.
domain_name_server vector<fuchsia.net/Ipv4Address>[63] A list of Domain Name System servers available to the client, in order of preference;
log_server vector<fuchsia.net/Ipv4Address>[63] A list of MIT-LCS UDP Log servers available to the client, in order of preference.
cookie_server vector<fuchsia.net/Ipv4Address>[63] A list of RFC 865 Cookie servers available to the client, in order of preference.
lpr_server vector<fuchsia.net/Ipv4Address>[63] A list of RFC 1179 Line Printer servers available to the client, in order of preference.
impress_server vector<fuchsia.net/Ipv4Address>[63] A list of Imagen Impress servers available to the client, in order of preference.
resource_location_server vector<fuchsia.net/Ipv4Address>[63] A list of RFC 887 Resource Location servers available to the client, in order of preference.
host_name string[255] The host name of the client, which may or may not be qualified with the local domain name.
boot_file_size uint16 The size of the client's default boot image in 512-octet blocks.
merit_dump_file string[255] The path name to the client's core dump in the event the client crashes.
domain_name string[255] The client's domain name for use in resolving hostnames in the DNS.
swap_server fuchsia.net/Ipv4Address The address of the client's swap server.
root_path string[255] The path name to the client's root disk.
extensions_path string[255] The path name to a TFTP-retrievable file. This file contains data which can be interpreted as the BOOTP vendor-extension field. Unlike the BOOTP vendor-extension field, this file has an unconstrained length and any references to Tag 18 are ignored.
ip_forwarding bool A flag which will enabled IP layer packet forwarding when true.
non_local_source_routing bool A flag which will enable forwarding of IP packets with non-local source routes.
policy_filter vector<fuchsia.net/Ipv4Address>[63] Policy filters for non-local source routing. A list of IP Address and Subnet Mask pairs. If an incoming source-routed packet has a next-hop that does not match one of these pairs, then the packet will be dropped.
max_datagram_reassembly_size uint16 The maximum sized datagram that the client should be able to reassemble, in octets. The minimum legal value is 576.
default_ip_ttl uint8 The default time-to-live to use on outgoing IP datagrams. The value must be between 1 and 255.
path_mtu_aging_timeout uint32 The timeout to be used when aging Path MTU values by the mechanism in RFC 1191.
path_mtu_plateau_table vector<uint16>[127] Table of MTU sizes for Path MTU Discovery. A list of MTU sizes, ordered from smallest to largest. The smallest value cannot be smaller than 68.
interface_mtu uint16 The MTU for the client's interface. Minimum value of 68.
all_subnets_local bool A flag indicating if all subents of the IP network to which the client is connected have the same MTU.
broadcast_address fuchsia.net/Ipv4Address The broadcast address of the client's subnet. Legal values are defined in RFC 1122.
perform_mask_discovery bool A flag indicating whether the client should perform subnet mask discovery via ICMP.
mask_supplier bool A flag indicating whether the client should respond to subnet mask discovery requests via ICMP.
perform_router_discovery bool A flag indicating whether the client should solicit routers using Router Discovery as defined in RFC 1256.
router_solicitation_address fuchsia.net/Ipv4Address The address to which the client should transmit Router Solicitation requests.
static_route vector<fuchsia.net/Ipv4Address>[63] Static Routes which the host should put in its routing cache. A list of Destination address/Next-hop address pairs defining static routes for the client's routing table. The routes should be listed in descending order of priority. It is illegal to use 0.0.0.0 as the destination in a static route.
trailer_encapsulation bool A flag specifying whether the client negotiate the use of trailers when using ARP, per RFC 893.
arp_cache_timeout uint32 The timeout for ARP cache entries.
ethernet_encapsulation bool A flag specifying that the client should use Ethernet v2 encapsulation when false, and IEEE 802.3 encapsulation when true.
tcp_default_ttl uint8 The default time-to-live that the client should use for outgoing TCP segments. The minimum value is 1.
tcp_keepalive_interval uint32 The interval the client should wait before sending a TCP keepalive message. A value of 0 indicates that the client should not send keepalive messages unless specifically requested by an application.
tcp_keepalive_garbage bool A flag specifying whether the client should send TCP keepalive messages with an octet of garbage for compatibility with older implementations.
network_information_service_domain string[255] The name of the client's Network Information Service domain.
network_information_servers vector<fuchsia.net/Ipv4Address>[63] A list of Network Information Service server addresses available to the client, listed in order of preference.
network_time_protocol_servers vector<fuchsia.net/Ipv4Address>[63] A list of Network Time Protocol (NTP) server addresses available to the client, listed in order of preference.
vendor_specific_information vector<uint8>[255] An opaque object of octets for exchanging vendor-specific information.
netbios_over_tcpip_name_server vector<fuchsia.net/Ipv4Address>[63] A list of NetBIOS name server addresses available to the client, listed in order of preference.
netbios_over_tcpip_datagram_distribution_server vector<fuchsia.net/Ipv4Address>[63] A list of NetBIOS datagram distribution servers available to the client, listed in order of preference.
netbios_over_tcpip_node_type NodeTypes The NetBIOS node type which should be used by the client.
netbios_over_tcpip_scope string[255] The NetBIOS over TCP/IP scope parameter, as defined in RFC 1001, for the client.
x_window_system_font_server vector<fuchsia.net/Ipv4Address>[63] A list of X Window System Font server addresses available to the client, listed in order of preference.
x_window_system_display_manager vector<fuchsia.net/Ipv4Address>[63] A list of X Window System Display Manager system addresses available to the client, listed in order of preference.
network_information_service_plus_domain string[255] The name of the client's Network Information System+ domain.
network_information_service_plus_servers vector<fuchsia.net/Ipv4Address>[63] A list of Network Information System+ server addresses available to the client, listed in order of preference.
mobile_ip_home_agent vector<fuchsia.net/Ipv4Address>[63] A list of mobile IP home agent addresses available to the client, listed in order of preference.
smtp_server vector<fuchsia.net/Ipv4Address>[63] A list of Simple Mail Transport Protocol (SMTP) server address available to the client, listed in order of preference.
pop3_server vector<fuchsia.net/Ipv4Address>[63] A list of Post Office Protocol (POP3) server addresses available to the client, listed in order of preference.
nntp_server vector<fuchsia.net/Ipv4Address>[63] A list Network News Transport Protocol (NNTP) server addresses available to the client, listed in order of preference.
default_www_server vector<fuchsia.net/Ipv4Address>[63] A list of default World Wide Web (WWW) server addresses available to the client, listed in order of preference.
default_finger_server vector<fuchsia.net/Ipv4Address>[63] A list of default Finger server addresses available to the client, listed in order of preference.
default_irc_server vector<fuchsia.net/Ipv4Address>[63] A list of Internet Relay Chat server addresses available to the client, listed in order of preference.
streettalk_server vector<fuchsia.net/Ipv4Address>[63] A list of StreetTalk server addresses available to the client, listed in order of preference.
streettalk_directory_assistance_server vector<fuchsia.net/Ipv4Address>[63] A list of StreetTalk Directory Assistance server addresses available to the client, listed in order of preference.
option_overload OptionOverloadValue An option specifying whether the `sname`, `file`, or both fields have been overloaded to carry DHCP options. If this option is present, the client interprets the additional fields after it concludes interpreting standard option fields.
tftp_server_name string[255] The TFTP server name available to the client. This option should be used when the `sname` field has been overloaded to carry options.
bootfile_name string[255] The bootfile name for the client. This option should be used when the `file` field has been overloaded to carry options.
max_dhcp_message_size uint16 The maximum length in octets of a DHCP message that the participant is willing to accept. The minimum value is 576.
renewal_time_value uint32 The time interval after address assignment at which the client will transition to the Renewing state.
rebinding_time_value uint32 The time interval after address assignment at which the client will transition to the Rebinding state.

Parameter

Defined in fuchsia.net.dhcp/server.fidl

The configurable server parameters.

NameTypeDescription
ip_addrs vector<fuchsia.net/Ipv4Address>[256] The IP addresses to which the server is bound. The vector bound has been arbitrarily selected as a generous upper limit.
address_pool AddressPool The server's pool of managed addresses. Changing the address pool will not cancel existing leases because the DHCP protocol does not provide a mechanism for doing so. Administrators should take care when changing the address pool for a server with active leases.
lease LeaseLength The duration of leases issued by dhcpd.
permitted_macs vector<fuchsia.net/MacAddress>[256] The client MAC addresses which the server will issue leases to. By default, the server will not have a permitted MAC list, in which case it will attempt to issue a lease to every client which requests one. If permitted_macs has a non-zero length then the server will only respond to lease requests from clients with a MAC in the list. The vector bound has been arbitrarily selected as a generous upper limit.
statically_assigned_addrs vector<StaticAssignment>[256] Addresses statically assigned to specific hosts or devices. Typically, a network administrator will statically assign addresses to always-on network devices which should always have the same IP address, such as network printers. The vector bound has been arbitrarily selected as a generous upper limit.
arp_probe bool Enables server behavior where the server ARPs an IP address prior to issuing it in a lease. If the server receives a response, the server will mark the address as in-use and try again with a different address.

BITS

NodeTypes

Type: uint8

NameValueDescription
B_NODE 1 A B node type.
P_NODE 2 A P node type.
M_NODE 4 A M node type.
H_NODE 8 A H node type.