aboutsummaryrefslogtreecommitdiff
path: root/data-ipa-cfg-mgr/ipacm/src/IPACM_Iface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'data-ipa-cfg-mgr/ipacm/src/IPACM_Iface.cpp')
-rw-r--r--data-ipa-cfg-mgr/ipacm/src/IPACM_Iface.cpp70
1 files changed, 24 insertions, 46 deletions
diff --git a/data-ipa-cfg-mgr/ipacm/src/IPACM_Iface.cpp b/data-ipa-cfg-mgr/ipacm/src/IPACM_Iface.cpp
index 5dc7647..04cb162 100644
--- a/data-ipa-cfg-mgr/ipacm/src/IPACM_Iface.cpp
+++ b/data-ipa-cfg-mgr/ipacm/src/IPACM_Iface.cpp
@@ -133,6 +133,9 @@ int IPACM_Iface::handle_software_routing_enable(void)
flt_rule_entry.flt_rule_hdl = -1;
flt_rule_entry.status = -1;
flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
+#ifdef FEATURE_IPA_V3
+ flt_rule_entry.rule.hashable = true;
+#endif
memcpy(&flt_rule_entry.rule.attrib,
&rx_prop->rx[0].attrib,
sizeof(flt_rule_entry.rule.attrib));
@@ -746,7 +749,7 @@ int IPACM_Iface::init_fl_rule(ipa_ip_type iptype)
flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
#ifdef FEATURE_IPA_V3
flt_rule_entry.at_rear = false;
- flt_rule_entry.rule.hashable = IPA_RULE_NON_HASHABLE;
+ flt_rule_entry.rule.hashable = false;
#endif
IPACMDBG_H("rx property attrib mask:0x%x\n", rx_prop->rx[0].attrib.attrib_mask);
memcpy(&flt_rule_entry.rule.attrib,
@@ -763,11 +766,19 @@ int IPACM_Iface::init_fl_rule(ipa_ip_type iptype)
flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0xF0000000;
flt_rule_entry.rule.attrib.u.v4.dst_addr = 0xE0000000;
+#ifdef FEATURE_IPA_V3
+ flt_rule_entry.at_rear = true;
+ flt_rule_entry.rule.hashable = true;
+#endif
memcpy(&(m_pFilteringTable->rules[1]), &flt_rule_entry, sizeof(struct ipa_flt_rule_add));
/* Configuring Broadcast Filtering Rule */
flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
flt_rule_entry.rule.attrib.u.v4.dst_addr = 0xFFFFFFFF;
+#ifdef FEATURE_IPA_V3
+ flt_rule_entry.at_rear = true;
+ flt_rule_entry.rule.hashable = true;
+#endif
memcpy(&(m_pFilteringTable->rules[2]), &flt_rule_entry, sizeof(struct ipa_flt_rule_add));
if (false == m_filtering.AddFilteringRule(m_pFilteringTable))
@@ -832,6 +843,10 @@ int IPACM_Iface::init_fl_rule(ipa_ip_type iptype)
flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0X00000000;
+#ifdef FEATURE_IPA_V3
+ flt_rule_entry.at_rear = true;
+ flt_rule_entry.rule.hashable = true;
+#endif
memcpy(&(m_pFilteringTable->rules[0]), &flt_rule_entry, sizeof(struct ipa_flt_rule_add));
/* Configuring fe80::/10 Link-Scoped Unicast Filtering Rule */
@@ -843,6 +858,10 @@ int IPACM_Iface::init_fl_rule(ipa_ip_type iptype)
flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0X00000000;
+#ifdef FEATURE_IPA_V3
+ flt_rule_entry.at_rear = true;
+ flt_rule_entry.rule.hashable = true;
+#endif
memcpy(&(m_pFilteringTable->rules[1]), &flt_rule_entry, sizeof(struct ipa_flt_rule_add));
/* Configuring fec0::/10 Reserved by IETF Filtering Rule */
@@ -854,6 +873,10 @@ int IPACM_Iface::init_fl_rule(ipa_ip_type iptype)
flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0X00000000;
+#ifdef FEATURE_IPA_V3
+ flt_rule_entry.at_rear = true;
+ flt_rule_entry.rule.hashable = true;
+#endif
memcpy(&(m_pFilteringTable->rules[2]), &flt_rule_entry, sizeof(struct ipa_flt_rule_add));
#ifdef FEATURE_IPA_ANDROID
@@ -968,48 +991,3 @@ int IPACM_Iface::ipa_get_if_index
close(fd);
return IPACM_SUCCESS;
}
-
-size_t IPACM_Iface::strlcpy(char *dest, const char *src, size_t n)
-{
- size_t ret = strlen(src);
- size_t len = 0;
- if (n > 0) {
- if(ret >= n)
- {
- len = n-1;
- IPACMERR(" overflow detected \n");
- }
- else
- {
- len = ret;
- }
- dest[len] = '\0';
- memcpy(dest, src, len);
- }
- return ret;
-}
-
-size_t IPACM_Iface::strlcat(char *dest, const char *src, size_t n)
-{
- size_t dsize = strlen(dest);
- size_t len = strlen(src);
- size_t ret = dsize + len;
-
- if (dsize < n)
- {
- dest += dsize;
- n -= dsize;
- if (len >= n)
- {
- len = n - 1;
- IPACMERR(" overflow detected \n");
- }
- dest[len] = '\0';
- memcpy(dest, src, len);
- }
- else
- {
- IPACMERR(" dest buffer full\n");
- }
- return ret;
-}