1f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran/* 2f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * Copyright (C) 2014 The Android Open Source Project 3f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * 4f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * Licensed under the Apache License, Version 2.0 (the "License"); 5f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * you may not use this file except in compliance with the License. 6f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * You may obtain a copy of the License at 7f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * 8f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * http://www.apache.org/licenses/LICENSE-2.0 9f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * 10f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * Unless required by applicable law or agreed to in writing, software 11f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * distributed under the License is distributed on an "AS IS" BASIS, 12f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * See the License for the specific language governing permissions and 14f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran * limitations under the License. 15f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran */ 16f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran 17f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran#include "Network.h" 18f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran 19f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran#define LOG_TAG "Netd" 20f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran#include "log/log.h" 21f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran 22f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram RamachandranNetwork::~Network() { 23f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran if (!mInterfaces.empty()) { 24f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran ALOGE("deleting network with netId %u without clearing its interfaces", mNetId); 25f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran } 26f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran} 27f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran 28e09b20aee85f1dfd8c18c3d8581ac875d939ba70Sreeram Ramachandranunsigned Network::getNetId() const { 29e09b20aee85f1dfd8c18c3d8581ac875d939ba70Sreeram Ramachandran return mNetId; 30e09b20aee85f1dfd8c18c3d8581ac875d939ba70Sreeram Ramachandran} 31e09b20aee85f1dfd8c18c3d8581ac875d939ba70Sreeram Ramachandran 32f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandranbool Network::hasInterface(const std::string& interface) const { 33f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran return mInterfaces.find(interface) != mInterfaces.end(); 34f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran} 35f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran 3648e19b037e7e20674048ef76bf31ce65c741347cSreeram Ramachandranconst std::set<std::string>& Network::getInterfaces() const { 3748e19b037e7e20674048ef76bf31ce65c741347cSreeram Ramachandran return mInterfaces; 3848e19b037e7e20674048ef76bf31ce65c741347cSreeram Ramachandran} 3948e19b037e7e20674048ef76bf31ce65c741347cSreeram Ramachandran 40f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandranint Network::clearInterfaces() { 41f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran while (!mInterfaces.empty()) { 42f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran // Make a copy of the string, so removeInterface() doesn't lose its parameter when it 43f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran // removes the string from the set. 44f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran std::string interface = *mInterfaces.begin(); 45f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran if (int ret = removeInterface(interface)) { 46f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran return ret; 47f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran } 48f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran } 49f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran return 0; 50f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran} 5189dad013e4dd98434b0409a84567f38782894029Sreeram Ramachandran 5289dad013e4dd98434b0409a84567f38782894029Sreeram RamachandranNetwork::Network(unsigned netId) : mNetId(netId) { 5389dad013e4dd98434b0409a84567f38782894029Sreeram Ramachandran} 54