summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChinh Tran <chinht@codeaurora.org>2010-09-01 18:11:05 -0700
committerLinux Build Service Account <lnxbuild@qualcomm.com>2010-09-14 00:04:46 -0600
commit74ba18baa02f9b02d2ffc07f6f05cbba8f9c9598 (patch)
tree3b2e7d82220678bcb9a446043295cc3d78200dd0
parentc0dec5a4d77520b907949d5bdd1b8df41bcd77dd (diff)
downloadandroid_external_connectivity-74ba18baa02f9b02d2ffc07f6f05cbba8f9c9598.tar.gz
android_external_connectivity-74ba18baa02f9b02d2ffc07f6f05cbba8f9c9598.tar.bz2
android_external_connectivity-74ba18baa02f9b02d2ffc07f6f05cbba8f9c9598.zip
CNE: Add changes to support FMC
Handles the commands to start, stop FMC, to report the destination IP address, and to set the destination routing table entry. Change-Id: I12c72c8480ac470ee2269ca0063b2d8d7c8e767c
-rw-r--r--cnd/inc/cnd_commands.h5
-rw-r--r--cnd/inc/cnd_unsol_messages.h5
-rwxr-xr-xcnd/src/cnd_process.cpp32
-rwxr-xr-x[-rw-r--r--]include/cne/cne.h45
4 files changed, 72 insertions, 15 deletions
diff --git a/cnd/inc/cnd_commands.h b/cnd/inc/cnd_commands.h
index 85a913f..0db8812 100644
--- a/cnd/inc/cnd_commands.h
+++ b/cnd/inc/cnd_commands.h
@@ -28,6 +28,9 @@
{CNE_NOTIFY_DEFAULT_NW_PREF_CMD, dispatchInts, responseVoid},
{CNE_REQUEST_UPDATE_WLAN_SCAN_RESULTS_CMD, dispatchWlanScanResults, responseVoid},
{CNE_NOTIFY_SENSOR_EVENT_CMD, dispatchVoid, responseVoid},
- {CNE_REQUEST_CONFIG_IPROUTE2_CMD, dispatchIproute2Cmd, responseVoid}
+ {CNE_REQUEST_CONFIG_IPROUTE2_CMD, dispatchIproute2Cmd, responseVoid},
+ {CNE_NOTIFY_TIMER_EXPIRED_CMD, dispatchVoid, responseVoid},
+ {CNE_REQUEST_START_FMC_CMD, dispatchString, responseVoid},
+ {CNE_REQUEST_STOP_FMC_CMD, dispatchVoid, responseVoid}
diff --git a/cnd/inc/cnd_unsol_messages.h b/cnd/inc/cnd_unsol_messages.h
index c276067..4d809f2 100644
--- a/cnd/inc/cnd_unsol_messages.h
+++ b/cnd/inc/cnd_unsol_messages.h
@@ -25,5 +25,6 @@
{CNE_NOTIFY_MORE_PREFERED_RAT_AVAIL_MSG, evtMorePrefNw},
{CNE_NOTIFY_RAT_LOST_MSG, responseInts},
{CNE_REQUEST_START_SCAN_WLAN_MSG, responseVoid},
- {CNE_NOTIFY_INFLIGHT_STATUS_MSG, responseInts}
-
+ {CNE_NOTIFY_INFLIGHT_STATUS_MSG, responseInts},
+ {CNE_NOTIFY_FMC_STATUS_MSG, responseInts},
+ {CNE_NOTIFY_HOST_ROUTING_IP_MSG, responseString}
diff --git a/cnd/src/cnd_process.cpp b/cnd/src/cnd_process.cpp
index b7a73b1..c93bb53 100755
--- a/cnd/src/cnd_process.cpp
+++ b/cnd/src/cnd_process.cpp
@@ -221,16 +221,35 @@ processCommand (int command, void *data, size_t datalen, CND_Token t)
cnd_iproute2* cnd_iproute2_ptr = cnd_iproute2::getInstance();
if (cnd_iproute2_ptr != NULL) {
// Call iproute2 API
- if (cmd == CNE_IPROUTE2_ADD_DEFAULT) {
+ switch(cmd)
+ {
+ case CNE_IPROUTE2_ADD_ROUTING:
cnd_iproute2::getInstance()->addRoutingTable(ifName, ipAddr, gatewayAddr);
- } else if (cmd == CNE_IPROUTE2_DELETE_DEFAULT) {
+ break;
+ case CNE_IPROUTE2_DELETE_ROUTING:
+ case CNE_IPROUTE2_DELETE_HOST_ROUTING:
cnd_iproute2::getInstance()->deleteRoutingTable(ifName);
- } else if (cmd == CNE_IPROUTE2_DELETE_DEFAULT_FROM_MAIN) {
+ break;
+ case CNE_IPROUTE2_DELETE_DEFAULT_IN_MAIN:
+ case CNE_IPROUTE2_DELETE_HOST_DEFAULT_IN_MAIN:
cnd_iproute2::getInstance()->deleteDefaultEntryInMainTable(ifName);
- } else if (cmd == CNE_IPROUTE2_CHANGE_DEFAULT_FROM_MAIN) {
+ break;
+ case CNE_IPROUTE2_REPLACE_DEFAULT_ENTRY_IN_MAIN:
+ case CNE_IPROUTE2_REPLACE_HOST_DEFAULT_ENTRY_IN_MAIN:
cnd_iproute2::getInstance()->replaceDefaultEntryInMainTable(ifName);
+ break;
+ case CNE_IPROUTE2_ADD_HOST_IN_MAIN:
+ cnd_iproute2::getInstance()->addCustomEntryInMainTable(ipAddr, ifName, gatewayAddr);
+ break;
+ case CNE_IPROUTE2_DELETE_HOST_IN_MAIN:
+ cnd_iproute2::getInstance()->deleteDeviceCustomEntriesInMainTable(ifName);
+ break;
+ default:
+ LOGE ("processCommand: not iproute2 command=%d", command);
+ break;
}
}
+
return;
}
@@ -294,8 +313,9 @@ dispatchString (Parcel& p, RequestInfo *pRI)
string8 = strdupReadString(p);
- processCommand(pRI->pCI->commandNumber, string8,
- sizeof(char *), pRI);
+ LOGD ("dispatchString: strlen=%d", strlen(string8));
+ processCommand(pRI->pCI->commandNumber, string8, strlen(string8), pRI);
+
#ifdef MEMSET_FREED
memsetString(string8);
diff --git a/include/cne/cne.h b/include/cne/cne.h
index 469f159..cd63cad 100644..100755
--- a/include/cne/cne.h
+++ b/include/cne/cne.h
@@ -130,7 +130,9 @@ typedef enum
CNE_NOTIFY_SENSOR_EVENT_CMD,
CNE_REQUEST_CONFIG_IPROUTE2_CMD,
- CNE_NOTIFY_TIMER_EXPIRED_CMD
+ CNE_NOTIFY_TIMER_EXPIRED_CMD,
+ CNE_REQUEST_START_FMC_CMD,
+ CNE_REQUEST_STOP_FMC_CMD
/* Add other commands here, note these should match with the ones in the
* java layer.
*/
@@ -161,7 +163,9 @@ typedef enum
CNE_NOTIFY_RAT_LOST_MSG,
/**< Notification sent to clients when the RAT they are using is lost.*/
CNE_REQUEST_START_SCAN_WLAN_MSG,
- CNE_NOTIFY_INFLIGHT_STATUS_MSG
+ CNE_NOTIFY_INFLIGHT_STATUS_MSG,
+ CNE_NOTIFY_FMC_STATUS_MSG,
+ CNE_NOTIFY_HOST_ROUTING_IP_MSG
} cne_msg_enum_type;
@@ -180,12 +184,31 @@ typedef enum // correspond to network State defined in NetworkInfo.java
typedef enum
{
- CNE_IPROUTE2_ADD_DEFAULT = 0,
- CNE_IPROUTE2_DELETE_DEFAULT,
- CNE_IPROUTE2_DELETE_DEFAULT_FROM_MAIN,
- CNE_IPROUTE2_CHANGE_DEFAULT_FROM_MAIN
+ CNE_IPROUTE2_ADD_ROUTING = 0,
+ CNE_IPROUTE2_DELETE_ROUTING,
+ CNE_IPROUTE2_DELETE_DEFAULT_IN_MAIN,
+ CNE_IPROUTE2_REPLACE_DEFAULT_ENTRY_IN_MAIN,
+ CNE_IPROUTE2_ADD_HOST_IN_MAIN,
+ CNE_IPROUTE2_REPLACE_HOST_DEFAULT_ENTRY_IN_MAIN,
+ CNE_IPROUTE2_DELETE_HOST_ROUTING,
+ CNE_IPROUTE2_DELETE_HOST_DEFAULT_IN_MAIN,
+ CNE_IPROUTE2_DELETE_HOST_IN_MAIN
} cne_iproute2_cmd_enum_type;
+typedef enum
+{
+ CNE_FMC_STATUS_ENABLED = 0,
+ CNE_FMC_STATUS_CLOSED,
+ CNE_FMC_STATUS_INITIALIZED,
+ CNE_FMC_STATUS_SHUTTING_DOWN,
+ CNE_FMC_STATUS_NOT_YET_STARTED,
+ CNE_FMC_STATUS_FAILURE,
+ CNE_FMC_STATUS_NOT_AVAIL,
+ CNE_FMC_STATUS_DS_NOT_AVAIL,
+ CNE_FMC_STATUS_RETRIED,
+ CNE_FMC_STATUS_MAX
+} cne_fmc_status_enum_type;
+
/** Role Id Type. */
typedef int32_t cne_role_id_type;
/** Registration Id Type. */
@@ -452,6 +475,16 @@ typedef struct
/**< true if in flight else false */
} cne_inflight_status_change_evt_data_type;
+
+/**
+ Info structure returned for the event
+ CNE_NOTIFY_FMC_STATUS_MSG
+ */
+typedef struct
+{
+ uint8_t status;
+} cne_fmc_status_evt_data_type;
+
typedef union {
cne_rat_type rat;
struct {