133510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker/** 233510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * Copyright (c) 2013, The Android Open Source Project 333510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * 433510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * Licensed under the Apache License, Version 2.0 (the "License"); 533510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * you may not use this file except in compliance with the License. 633510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * You may obtain a copy of the License at 733510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * 833510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * http://www.apache.org/licenses/LICENSE-2.0 933510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * 1033510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * Unless required by applicable law or agreed to in writing, software 1133510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * distributed under the License is distributed on an "AS IS" BASIS, 1233510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1333510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * See the License for the specific language governing permissions and 1433510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker * limitations under the License. 1533510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker */ 1633510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 1733510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker#include <stdint.h> 1833510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker#include <sys/types.h> 1933510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 2033510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker#include <utils/Singleton.h> 2133510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 2233510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubakernamespace android { 2333510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 2433510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubakerclass ConnectivityManager : public Singleton<ConnectivityManager> { 2533510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker // Keep this in sync with IConnectivityManager.aidl 2633510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker static const int TRANSACTION_markSocketAsUser = IBinder::FIRST_CALL_TRANSACTION; 2733510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker static const String16 DESCRIPTOR; 2833510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 2933510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker friend class Singleton<ConnectivityManager>; 3033510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker sp<IBinder> mConnectivityService; 3133510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 3233510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker ConnectivityManager(); 3333510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 3433510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker void markSocketAsUserImpl(int fd, uid_t uid); 3533510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 3633510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubakerpublic: 3733510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker static void markSocketAsUser(int fd, uid_t uid) { 3833510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker ConnectivityManager::getInstance().markSocketAsUserImpl(fd, uid); 3933510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker } 4033510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker}; 4133510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker 4233510c07f38fdb7f18a10acbc2d1dd0eaac04fe1Chad Brubaker}; 43