diff options
author | Chinh Tran <chinht@codeaurora.org> | 2010-09-01 18:11:05 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@qualcomm.com> | 2010-09-14 00:04:46 -0600 |
commit | 74ba18baa02f9b02d2ffc07f6f05cbba8f9c9598 (patch) | |
tree | 3b2e7d82220678bcb9a446043295cc3d78200dd0 | |
parent | c0dec5a4d77520b907949d5bdd1b8df41bcd77dd (diff) | |
download | android_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.h | 5 | ||||
-rw-r--r-- | cnd/inc/cnd_unsol_messages.h | 5 | ||||
-rwxr-xr-x | cnd/src/cnd_process.cpp | 32 | ||||
-rwxr-xr-x[-rw-r--r--] | include/cne/cne.h | 45 |
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 { |