NetlinkHandler.cpp revision 3c2e611a921029a81dd7ff9c6d505b0b5e740014
1fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber/* 2fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * Copyright (C) 2008 The Android Open Source Project 3fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * 4fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * you may not use this file except in compliance with the License. 6fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * You may obtain a copy of the License at 7fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * 8fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * 10fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * Unless required by applicable law or agreed to in writing, software 11fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * See the License for the specific language governing permissions and 14fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber * limitations under the License. 15fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber */ 16fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 17fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber#include <stdio.h> 18fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber#include <stdlib.h> 19fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber#include <errno.h> 20fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 21fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber#define LOG_TAG "Netd" 22fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 23fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber#include <cutils/log.h> 24fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 25fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber#include <sysutils/NetlinkEvent.h> 26fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber#include "NetlinkHandler.h" 27fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 28fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas HuberNetlinkHandler::NetlinkHandler(int listenerSocket) : 29fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber NetlinkListener(listenerSocket) { 30fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber} 31fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 32fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas HuberNetlinkHandler::~NetlinkHandler() { 33fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber} 34fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 35fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huberint NetlinkHandler::start() { 36fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber return this->startListener(); 37fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber} 38fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 39fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huberint NetlinkHandler::stop() { 40fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber return this->stopListener(); 41fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber} 42fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 43fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Hubervoid NetlinkHandler::onEvent(NetlinkEvent *evt) { 44fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber const char *subsys = evt->getSubsystem(); 45fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 46fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber if (!subsys) { 47fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber LOGW("No subsystem found in netlink event"); 48fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber return; 49fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber } 50fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber 51fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber if (!strcmp(subsys, "block")) { 52fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber } else if (!strcmp(subsys, "switch")) { 53fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber } else if (!strcmp(subsys, "battery")) { 54fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber } else if (!strcmp(subsys, "power_supply")) { 55fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber } 56fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber} 57fcea8f7a7d178e5426aa06586cff54726e18d1f6Andreas Huber