1d18304287dbabc7835be771400b85d4ae8b63de6San Mehat/* 2d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * Copyright (C) 2008 The Android Open Source Project 3d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * 4d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * Licensed under the Apache License, Version 2.0 (the "License"); 5d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * you may not use this file except in compliance with the License. 6d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * You may obtain a copy of the License at 7d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * 8d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * http://www.apache.org/licenses/LICENSE-2.0 9d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * 10d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * Unless required by applicable law or agreed to in writing, software 11d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * distributed under the License is distributed on an "AS IS" BASIS, 12d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * See the License for the specific language governing permissions and 14d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * limitations under the License. 15d18304287dbabc7835be771400b85d4ae8b63de6San Mehat */ 16d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 17d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#ifndef _NETLINKMANAGER_H 18d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#define _NETLINKMANAGER_H 19d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 20d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <sysutils/SocketListener.h> 21d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <sysutils/NetlinkListener.h> 22d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 23e0ebc46c0aa38ce4f35bd3b60c0fcb9204d4c35eJP Abgrall 24d18304287dbabc7835be771400b85d4ae8b63de6San Mehatclass NetlinkHandler; 25d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 26d18304287dbabc7835be771400b85d4ae8b63de6San Mehatclass NetlinkManager { 27d18304287dbabc7835be771400b85d4ae8b63de6San Mehatprivate: 28d18304287dbabc7835be771400b85d4ae8b63de6San Mehat static NetlinkManager *sInstance; 29d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 30d18304287dbabc7835be771400b85d4ae8b63de6San Mehatprivate: 31d18304287dbabc7835be771400b85d4ae8b63de6San Mehat SocketListener *mBroadcaster; 32564df4efc87f3d04c3570836d38134fd949c4cafMike J. Chen NetlinkHandler *mUeventHandler; 33564df4efc87f3d04c3570836d38134fd949c4cafMike J. Chen NetlinkHandler *mRouteHandler; 34e0ebc46c0aa38ce4f35bd3b60c0fcb9204d4c35eJP Abgrall NetlinkHandler *mQuotaHandler; 356337b88ce4438d224819e9b381ddaf2873bbfddaAshish Sharma NetlinkHandler *mIfaceIdleTimerHandler; 36564df4efc87f3d04c3570836d38134fd949c4cafMike J. Chen int mUeventSock; 37564df4efc87f3d04c3570836d38134fd949c4cafMike J. Chen int mRouteSock; 38e0ebc46c0aa38ce4f35bd3b60c0fcb9204d4c35eJP Abgrall int mQuotaSock; 39d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 40d18304287dbabc7835be771400b85d4ae8b63de6San Mehatpublic: 41d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~NetlinkManager(); 42d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 43d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int start(); 44d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int stop(); 45d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 46d18304287dbabc7835be771400b85d4ae8b63de6San Mehat void setBroadcaster(SocketListener *sl) { mBroadcaster = sl; } 47d18304287dbabc7835be771400b85d4ae8b63de6San Mehat SocketListener *getBroadcaster() { return mBroadcaster; } 48d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 49d18304287dbabc7835be771400b85d4ae8b63de6San Mehat static NetlinkManager *Instance(); 50d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 51e0ebc46c0aa38ce4f35bd3b60c0fcb9204d4c35eJP Abgrall /* This is the nflog group arg that the xt_quota2 neftiler will use. */ 52e0ebc46c0aa38ce4f35bd3b60c0fcb9204d4c35eJP Abgrall static const int NFLOG_QUOTA_GROUP; 53e0ebc46c0aa38ce4f35bd3b60c0fcb9204d4c35eJP Abgrall 546337b88ce4438d224819e9b381ddaf2873bbfddaAshish Sharma /* This is the group that the xt_IDLETIMER netfilter will use. */ 556337b88ce4438d224819e9b381ddaf2873bbfddaAshish Sharma static const int IDLETIMER_GROUP; 566337b88ce4438d224819e9b381ddaf2873bbfddaAshish Sharma 57d18304287dbabc7835be771400b85d4ae8b63de6San Mehatprivate: 58d18304287dbabc7835be771400b85d4ae8b63de6San Mehat NetlinkManager(); 59e0ebc46c0aa38ce4f35bd3b60c0fcb9204d4c35eJP Abgrall NetlinkHandler* setupSocket(int *sock, int netlinkFamily, int groups, 60564df4efc87f3d04c3570836d38134fd949c4cafMike J. Chen int format); 61d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}; 62d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#endif 63