Google is committed to advancing racial equity for Black communities. See how.



Defined in

Network interface state inspection and observation.


Initialize a watcher for interface state.

The server enqueues interface addition, deletion and property changes as they occur, which can then be retrieved via the pipelined protocol. If the queue cannot be allocated, the channel will be closed. Also, if the queue is full and a change event cannot be enqueued, the channel will be closed.

  • request watcher the protocol channel over which changes can be observed.


options WatcherOptions
watcher request<Watcher>


Defined in

Observer protocol for changes to network interfaces (addition, deletion, and interface property changes).


Hanging get for an interface addition/deletion change.

Clients should only have one call of this method at a time; a second call to this method while a call is already pending will cause the channel to be closed.

If there are N interfaces present at the time the channel was initialized, then the first N invocations of this method will return Event.existing followed by a single Event.idle indicating that all existing interfaces have been sent. Subsequent calls will immediately return if there is a change to be reported, or block until a change occurs.

The server may choose to coalesce property change events, e.g. when multiple independent property changes occur. As a result, clients cannot assume that the order in which they observe the interface changes is the order in which the changes occurred.

  • response event the interface change event. Properties of an added or existing interface will have all fields present. Property change events will always have the interface ID field present (the ID never changes); while other fields will only be present with the new value if the property has changed.




event Event



Defined in




Defined in

An address and its properties.

1 addr

The address and prefix length.

2 valid_until zx/time

The time after which the address will no longer be valid.

Its value must be greater than 0. A value of ZX_TIME_INFINITE indicates that the address will always be valid. The value is derived from the monotonic clock.

As a zx.time, the value has monotonic clock semantics, which implies that it has no meaning outside of the host on which it was generated and no meaning across host restarts.


Defined in

Properties of a network interface.

1 id

An opaque identifier for the interface. Its value will not be reused even if the device is removed and subsequently re-added. Immutable.

2 addresses vector<Address>

The addresses currently assigned to the interface.

3 online bool

The device is enabled and its physical state is online.

4 device_class DeviceClass

The device class of the interface. Immutable.

5 has_default_ipv4_route bool

Whether there is a default IPv4 route through this interface.

6 has_default_ipv6_route bool

Whether there is a default IPv6 route through this interface.

7 name fuchsia.posix.socket/interface_name

The name of the interface. Immutable.


Defined in

Options for configuring the interface state watcher.




Defined in

An interface's device class.

loopback Empty

The interface is loopback.


The interface's network device class.


Defined in

An interface-state change event.

existing Properties

Properties of an interface that existed when watching started.

All fields are set.

added Properties

Properties of an interface that was added while watching.

All fields are set.


ID of an interface that was removed while watching.

changed Properties

Properties of an interface that changed while watching.

Only and changed fields are set.

idle Empty

Sentinel value indicating no more existing events will be sent.