diff options
author | Skylar Chang <chiaweic@codeaurora.org> | 2015-02-03 14:40:27 -0800 |
---|---|---|
committer | Skylar Chang <chiaweic@codeaurora.org> | 2015-02-03 17:56:57 -0800 |
commit | b2d6cf941dd8c976cc2961085861dcee10900946 (patch) | |
tree | 092b330a37500f88ce59cd38a43e7a518df4080d /ipacm/src/IPACM_Netlink.cpp | |
parent | ca22ece410ed50065390541228d97e17ba74e96b (diff) | |
download | ipacfg-mgr-b2d6cf941dd8c976cc2961085861dcee10900946.tar.gz |
IPACM: support external-AP running bridge mode
To support MTP running as AP+STA mode and connect
to external-AP which is running as bridge mode,
IPACM needs to construct the ethernet header by
using the mac-addr which matched the default gw IP
instead of directly using external-ap's MAC via
wlan-driver sent.
Change-Id: I4af3d244863dac40e5f44078a236b803b702faf1
Diffstat (limited to 'ipacm/src/IPACM_Netlink.cpp')
-rw-r--r-- | ipacm/src/IPACM_Netlink.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/ipacm/src/IPACM_Netlink.cpp b/ipacm/src/IPACM_Netlink.cpp index 9db578c..13b1d6e 100644 --- a/ipacm/src/IPACM_Netlink.cpp +++ b/ipacm/src/IPACM_Netlink.cpp @@ -610,7 +610,7 @@ static int ipa_nl_decode_nlmsg int ret_val, mask_value, mask_index, mask_value_v6; struct nlmsghdr *nlh = (struct nlmsghdr *)buffer; - uint32_t if_ipv4_addr =0, if_ipipv4_addr_mask =0, temp =0; + uint32_t if_ipv4_addr =0, if_ipipv4_addr_mask =0, temp =0, if_ipv4_addr_gw =0; ipacm_cmd_q_data evt_data; ipacm_event_data_all *data_all; @@ -996,17 +996,20 @@ static int ipa_nl_decode_nlmsg IPACM_EVENT_COPY_ADDR_v4( if_ipv4_addr, msg_ptr->nl_route_info.attr_info.dst_addr); IPACM_EVENT_COPY_ADDR_v4( if_ipipv4_addr_mask, msg_ptr->nl_route_info.attr_info.dst_addr); + IPACM_EVENT_COPY_ADDR_v4( if_ipv4_addr_gw, msg_ptr->nl_route_info.attr_info.gateway_addr); evt_data.event = IPA_ROUTE_ADD_EVENT; data_addr->if_index = msg_ptr->nl_route_info.attr_info.oif_index; data_addr->iptype = IPA_IP_v4; data_addr->ipv4_addr = ntohl(if_ipv4_addr); + data_addr->ipv4_addr_gw = ntohl(if_ipv4_addr_gw); data_addr->ipv4_addr_mask = ntohl(if_ipipv4_addr_mask); - IPACMDBG_H("Posting IPA_ROUTE_ADD_EVENT with if index:%d, ipv4 addr:0x%x and maxk: 0x%x\n", + IPACMDBG_H("Posting IPA_ROUTE_ADD_EVENT with if index:%d, ipv4 addr:0x%x, mask: 0x%x and gw: 0x%x\n", data_addr->if_index, data_addr->ipv4_addr, - data_addr->ipv4_addr_mask); + data_addr->ipv4_addr_mask, + data_addr->ipv4_addr_gw); evt_data.evt_data = data_addr; IPACM_EvtDispatcher::PostEvt(&evt_data); /* finish command queue */ |