# Network interfaces

This directory contains the mojom files describing the interfaces used by the
network service (`mojo:network_service`).

With the exception of this file, the contents of this directory is a direct
mirror of
[github.com/domokit/monet/tree/master/mojo/services/network/interfaces](https://github.com/domokit/monet/tree/master/mojo/services/network/interfaces),
ideally at the revision indicated in
[//mojo/public/tools/NETWORK_SERVICE_VERSION](../../../public/tools/NETWORK_SERVICE_VERSION).

Instead of modifying the files in this directory directly, please make the
changes "upstream" and mirror them back to this directory.

## See also

* [//mojo/public/interfaces/network](../../../public/interfaces/network)
* [github.com/domokit/monet](https://github.com/domokit/monet)
