aboutsummaryrefslogtreecommitdiff
path: root/data-ipa-cfg-mgr/ipacm/src/IPACM_Xml.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'data-ipa-cfg-mgr/ipacm/src/IPACM_Xml.cpp')
-rw-r--r--data-ipa-cfg-mgr/ipacm/src/IPACM_Xml.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/data-ipa-cfg-mgr/ipacm/src/IPACM_Xml.cpp b/data-ipa-cfg-mgr/ipacm/src/IPACM_Xml.cpp
index b81856a..4451906 100644
--- a/data-ipa-cfg-mgr/ipacm/src/IPACM_Xml.cpp
+++ b/data-ipa-cfg-mgr/ipacm/src/IPACM_Xml.cpp
@@ -665,6 +665,9 @@ static int IPACM_firewall_xml_parse_tree
memcpy(content_buf, (void *)content, str_size);
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.tos
= atoi(content_buf);
+ // Here we do not know if it is TOS with mask or not, so we put at both places
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.tos_value
+ = atoi(content_buf);
IPACMDBG_H("\n IPV4 TOS val is %d \n",
config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.tos);
}
@@ -674,13 +677,25 @@ static int IPACM_firewall_xml_parse_tree
content = IPACM_read_content_element(xml_node);
if (content)
{
+ uint8_t mask;
+
str_size = strlen(content);
memset(content_buf, 0, sizeof(content_buf));
memcpy(content_buf, (void *)content, str_size);
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.tos
- &= atoi(content_buf);
- IPACMDBG_H("\n IPv4 TOS mask is %d \n",
- config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.tos);
+ mask = atoi(content_buf);
+ IPACMDBG_H("\n IPv4 TOS mask is %u \n", mask);
+ if (mask != 0xFF) {
+ // TOS attribute cannot be used
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.u.v4.tos = 0;
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.tos_mask = mask;
+
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.attrib_mask |=
+ IPA_FLT_TOS_MASKED;
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.attrib_mask &=
+ ~IPA_FLT_TOS;
+ } else {
+ config->extd_firewall_entries[config->num_extd_firewall_entries - 1].attrib.tos_value = 0;
+ }
}
}
else if (0 == IPACM_util_icmp_string((char*)xml_node->name, IPV4NextHeaderProtocol_TAG))