summaryrefslogtreecommitdiff
path: root/ipacm/inc/IPACM_OffloadManager.h
diff options
context:
space:
mode:
authorSkylar Chang <chiaweic@codeaurora.org>2017-03-31 16:41:17 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-05-12 17:06:24 -0700
commit5668c3c5e440d3fccc7b02694553217f3be14bd1 (patch)
tree3f81dbc96198ba37d603f1635b6b056d8efea9c0 /ipacm/inc/IPACM_OffloadManager.h
parent506ef6dba85d740fa5f0da12f94e6b28975e0dfe (diff)
downloadipacfg-mgr-5668c3c5e440d3fccc7b02694553217f3be14bd1.tar.gz
IPACM: Add support on IPACM-HAL for Android-O
Add API for IPACM_HAL to start tethered-traffic offload and get stats from modem and set quota. Change-Id: I7d07c4ce4e7b12c7e088dec94a3d54c7da3a4a8b
Diffstat (limited to 'ipacm/inc/IPACM_OffloadManager.h')
-rw-r--r--ipacm/inc/IPACM_OffloadManager.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/ipacm/inc/IPACM_OffloadManager.h b/ipacm/inc/IPACM_OffloadManager.h
new file mode 100644
index 0000000..85a2063
--- /dev/null
+++ b/ipacm/inc/IPACM_OffloadManager.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2017, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef _IPACM_OFFLOAD_MANAGER_H_
+#define _IPACM_OFFLOAD_MANAGER_H_
+
+
+#include <stdint.h>
+#include <IOffloadManager.h>
+#include "IPACM_Defs.h"
+
+using RET = ::IOffloadManager::RET;
+using Prefix = ::IOffloadManager::Prefix;
+using IP_FAM = ::IOffloadManager::IP_FAM;
+using L4Protocol = ::IOffloadManager::ConntrackTimeoutUpdater::L4Protocol;
+using natTimeoutUpdate_t = ::IOffloadManager::ConntrackTimeoutUpdater::natTimeoutUpdate_t;
+//using ipAddrPortPair_t = ::IOffloadManager::ConntrackTimeoutUpdater::ipAddrPortPair_t;
+//using UDP = ::IOffloadManager::ConntrackTimeoutUpdater::UDP;
+//using TCP = ::IOffloadManager::ConntrackTimeoutUpdater::TCP;
+
+
+
+class IPACM_OffloadManager : public IOffloadManager
+{
+
+public:
+
+ IPACM_OffloadManager();
+ static IPACM_OffloadManager* GetInstance();
+
+ virtual RET registerEventListener(IpaEventListener* /* listener */);
+ virtual RET unregisterEventListener(IpaEventListener* /* listener */);
+ virtual RET registerCtTimeoutUpdater(ConntrackTimeoutUpdater* /* cb */);
+ virtual RET unregisterCtTimeoutUpdater(ConntrackTimeoutUpdater* /* cb */);
+
+ virtual RET provideFd(int /* fd */, unsigned int /* group */);
+ virtual RET clearAllFds();
+ virtual bool isStaApSupported();
+
+ /* ---------------------------- ROUTE ------------------------------- */
+ virtual RET setLocalPrefixes(std::vector<Prefix> &/* prefixes */);
+ virtual RET addDownstream(const char * /* downstream */,
+ const Prefix & /* prefix */);
+ virtual RET removeDownstream(const char * /* downstream */,
+ const Prefix &/* prefix */);
+ virtual RET setUpstream(const char* /* iface */, const Prefix& /* v4Gw */, const Prefix& /* v6Gw */);
+ virtual RET stopAllOffload();
+
+ /* ------------------------- STATS/POLICY --------------------------- */
+ virtual RET setQuota(const char * /* upstream */, uint64_t /* limit */);
+ virtual RET getStats(const char * /* upstream */, bool /* reset */,
+ OffloadStatistics& /* ret */);
+
+ static IPACM_OffloadManager *pInstance; //sky
+
+ IpaEventListener *elrInstance;
+
+ ConntrackTimeoutUpdater *touInstance;
+
+private:
+
+ bool upstream_v4_up;
+
+ bool upstream_v6_up;
+
+ int default_gw_index;
+
+ int post_route_evt(enum ipa_ip_type iptype, int index, ipa_cm_event_id event, const Prefix &gw_addr);
+
+ int ipa_get_if_index(const char *if_name, int *if_index);
+
+ int resetTetherStats(const char *upstream_name);
+
+ static const char *DEVICE_NAME;
+
+}; /* IPACM_OffloadManager */
+
+#endif /* _IPACM_OFFLOAD_MANAGER_H_ */