17e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland/*
27e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * Copyright 2017 The Android Open Source Project
37e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland *
47e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * Licensed under the Apache License, Version 2.0 (the "License");
57e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * you may not use this file except in compliance with the License.
67e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * You may obtain a copy of the License at
77e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland *
87e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland *      http://www.apache.org/licenses/LICENSE-2.0
97e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland *
107e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * Unless required by applicable law or agreed to in writing, software
117e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * distributed under the License is distributed on an "AS IS" BASIS,
127e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * See the License for the specific language governing permissions and
147e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * limitations under the License.
157e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland */
167e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland
177e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Morelandpackage android.system.net.netd@1.0;
187e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland
197e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland/**
207e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * This is the root of the HAL module and is the interface returned when
217e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland * loading an implementation of the INetd HAL.
227e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland */
237e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Morelandinterface INetd {
247e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    /**
257e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     * Return values for INetd requests
267e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     */
277e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    enum StatusCode : int32_t {
287e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland        OK,
297e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland        INVALID_ARGUMENTS,
307e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland        NO_NETWORK,
317e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland        ALREADY_EXISTS,
327e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland        PERMISSION_DENIED,
337e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland        UNKNOWN_ERROR
347e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    };
357e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland
367e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    /**
377e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     * Creates a physical network to be used for interfaces managed by the OEM
387e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     *
397e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     * @return networkHandle a handle to the OEM network. Zero implies
407e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     *             no networks are available and created
417e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     * @return packetMark The packet mark that vendor network stack configuration code must use when
427e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     *             routing packets to this network. No applications may use this mark. They must
437e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     *             instead pass the networkHandle to the android_set*network LL-NDK APIs.
447e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     * @return status operation status
457e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     */
467e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    @entry
477e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    @callflow(next={"*"})
487e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    createOemNetwork() generates (uint64_t networkHandle, uint32_t packetMark, StatusCode status);
497e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland
507e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    /**
517e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     * Destroys the specified network previously created using createOemNetwork()
527e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     *
537e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     * @return status operation status
547e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland     */
557e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    @exit
567e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    @callflow(next="createOemNetwork")
577e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland    destroyOemNetwork(uint64_t networkHandle) generates (StatusCode status);
587e3a96d729324687c4f009c3a6ec75ef023eaad5Steven Moreland};
59