diff --git a/services/connectivitymanager/Android.mk b/services/connectivitymanager/Android.mk
deleted file mode 100644
index e986abc..0000000
--- a/services/connectivitymanager/Android.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= ConnectivityManager.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-	libcutils \
-	libutils \
-	libbinder
-
-LOCAL_MODULE:= libconnectivitymanager
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/services/connectivitymanager/ConnectivityManager.cpp b/services/connectivitymanager/ConnectivityManager.cpp
deleted file mode 100644
index 949c2ac..0000000
--- a/services/connectivitymanager/ConnectivityManager.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Copyright (c) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <sys/types.h>
-
-#include <utils/Singleton.h>
-
-#include <binder/BinderService.h>
-#include <binder/Parcel.h>
-
-#include "ConnectivityManager.h"
-
-namespace android {
-
-ConnectivityManager::ConnectivityManager() {
-    const sp<IServiceManager> sm(defaultServiceManager());
-    if (sm != NULL) {
-        const String16 name("connectivity");
-        mConnectivityService = sm->getService(name);
-    }
-}
-
-void ConnectivityManager::markSocketAsUserImpl(int fd, uid_t uid) {
-    Parcel data, reply;
-    data.writeInterfaceToken(DESCRIPTOR);
-    // parcelable objects are preceded by a 1 if not null in aidl generated code.
-    // Play nice with the generated Java
-    data.writeInt32(1);
-    data.writeFileDescriptor(fd);
-    data.writeInt32(uid);
-    mConnectivityService->transact(TRANSACTION_markSocketAsUser, data, &reply, 0);
-}
-
-const String16 ConnectivityManager::DESCRIPTOR("android.net.IConnectivityManager");
-
-ANDROID_SINGLETON_STATIC_INSTANCE(ConnectivityManager)
-
-};
diff --git a/services/connectivitymanager/ConnectivityManager.h b/services/connectivitymanager/ConnectivityManager.h
deleted file mode 100644
index 37f5d98..0000000
--- a/services/connectivitymanager/ConnectivityManager.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Copyright (c) 2013, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <sys/types.h>
-
-#include <utils/Singleton.h>
-
-namespace android {
-
-class ConnectivityManager : public Singleton<ConnectivityManager> {
-    // Keep this in sync with IConnectivityManager.aidl
-    static const int TRANSACTION_markSocketAsUser = IBinder::FIRST_CALL_TRANSACTION;
-    static const String16 DESCRIPTOR;
-
-    friend class Singleton<ConnectivityManager>;
-    sp<IBinder> mConnectivityService;
-
-    ConnectivityManager();
-
-    void markSocketAsUserImpl(int fd, uid_t uid);
-
-public:
-    static void markSocketAsUser(int fd, uid_t uid) {
-        ConnectivityManager::getInstance().markSocketAsUserImpl(fd, uid);
-    }
-};
-
-};
