Home | History | Annotate | Download | only in src

Lines Matching refs:rule

175 		/* Add corresponding ipa_rm_resource_name of TX-endpoint up before IPV6 RT-rule set */
262 rt_rule_entry->rule.hdr_hdl = hdr.hdl;
267 rt_rule_entry->rule.dst = IPA_CLIENT_APPS_WAN_CONS;
271 rt_rule_entry->rule.dst = IPA_CLIENT_APPS_LAN_CONS;
273 rt_rule_entry->rule.attrib.attrib_mask = IPA_FLT_DST_ADDR;
274 rt_rule_entry->rule.attrib.u.v6.dst_addr[0] = data->ipv6_addr[0];
275 rt_rule_entry->rule.attrib.u.v6.dst_addr[1] = data->ipv6_addr[1];
276 rt_rule_entry->rule.attrib.u.v6.dst_addr[2] = data->ipv6_addr[2];
277 rt_rule_entry->rule.attrib.u.v6.dst_addr[3] = data->ipv6_addr[3];
278 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[0] = 0xFFFFFFFF;
279 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[1] = 0xFFFFFFFF;
280 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[2] = 0xFFFFFFFF;
281 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[3] = 0xFFFFFFFF;
287 rt_rule_entry->rule.hashable = false;
291 IPACMERR("Routing rule addition failed!\n");
297 IPACMERR("rt rule adding failed. Result=%d\n", rt_rule_entry->status);
303 /* setup same rule for v6_wan table*/
307 IPACMERR("Routing rule addition failed!\n");
313 IPACMERR("rt rule adding failed. Result=%d\n", rt_rule_entry->status);
319 IPACMDBG_H("ipv6 wan iface rt-rule hdl=0x%x hdl=0x%x, num_dft_rt_v6: %d \n",
339 /* add WAN DL interface IP specific flt rule for IPv6 when backhaul is not Q6 */
362 flt_rule_entry.rule.retain_hdr = 1;
363 flt_rule_entry.rule.to_uc = 0;
364 flt_rule_entry.rule.eq_attrib_type = 0;
368 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
370 flt_rule_entry.rule.hashable = true;
372 memcpy(&flt_rule_entry.rule.attrib, &rx_prop->rx[0].attrib, sizeof(flt_rule_entry.rule.attrib));
374 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
375 memcpy(flt_rule_entry.rule.attrib.u.v6.dst_addr, data->ipv6_addr, sizeof(flt_rule_entry.rule.attrib.u.v6.dst_addr));
376 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0xFFFFFFFF;
377 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0xFFFFFFFF;
378 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0xFFFFFFFF;
379 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0xFFFFFFFF;
384 IPACMERR("Error Adding Filtering rule, aborting...\n");
393 IPACMDBG_H("IPv6 dest filter rule %d HDL:0x%x\n", num_ipv6_dest_flt_rule, ipv6_dest_flt_rule_hdl[num_ipv6_dest_flt_rule]);
419 /* Delete default v4 RT rule */
423 IPACMERR("Routing old RT rule deletion failed!\n");
453 rt_rule_entry->rule.hdr_hdl = hdr.hdl;
454 rt_rule_entry->rule.dst = IPA_CLIENT_APPS_WAN_CONS;
458 rt_rule_entry->rule.dst = IPA_CLIENT_APPS_LAN_CONS;
461 rt_rule_entry->rule.attrib.attrib_mask = IPA_FLT_DST_ADDR;
462 /* still need setup v4 default routing rule to A5*/
464 rt_rule_entry->rule.attrib.u.v4.dst_addr = data->ipv4_addr;
465 rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
467 rt_rule_entry->rule.hashable = false;
471 IPACMERR("Routing rule addition failed!\n");
477 IPACMERR("rt rule adding failed. Result=%d\n", rt_rule_entry->status);
482 IPACMDBG_H("ipv4 wan iface rt-rule hdll=0x%x\n", dft_rt_rule_hdl[0]);
483 /* initial multicast/broadcast/fragment filter rule */
488 /* initial multicast/broadcast/fragment filter rule */
613 /* update the firewall flt rule actions */
1126 /* Associate with IP and construct RT-rule */
1265 /* wan default route/filter rule configuration */
1415 IPACMDBG_H("Tx:%d, ip-type: %d conflict ip-type: %d no RT-rule added\n",
1424 rt_rule_entry->rule.hdr_hdl = hdr_hdl_sta_v4;
1429 rt_rule_entry->rule.hdr_hdl = hdr_hdl_sta_v6;
1436 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].alt_dst_pipe;
1440 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].dst_pipe;
1442 memcpy(&rt_rule_entry->rule.attrib,
1444 sizeof(rt_rule_entry->rule.attrib));
1446 rt_rule_entry->rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
1449 rt_rule_entry->rule.attrib.u.v4.dst_addr = 0;
1450 rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0;
1453 rt_rule_entry->rule.hashable = true;
1457 IPACMERR("Routing rule addition failed!\n");
1462 IPACMDBG_H("Got ipv4 wan-route rule hdl:0x%x,tx:%d,ip-type: %d \n",
1469 rt_rule_entry->rule.attrib.u.v6.dst_addr[0] = 0;
1470 rt_rule_entry->rule.attrib.u.v6.dst_addr[1] = 0;
1471 rt_rule_entry->rule.attrib.u.v6.dst_addr[2] = 0;
1472 rt_rule_entry->rule.attrib.u.v6.dst_addr[3] = 0;
1473 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[0] = 0;
1474 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[1] = 0;
1475 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[2] = 0;
1476 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[3] = 0;
1478 rt_rule_entry->rule.hashable = true;
1482 IPACMERR("Routing rule addition failed!\n");
1487 IPACMDBG_H("Set ipv6 wan-route rule hdl for v6_lan_table:0x%x,tx:%d,ip-type: %d \n",
1495 /* add a catch-all rule in wan dl routing table */
1512 rt_rule_entry->rule.hdr_hdl = hdr.hdl;
1513 rt_rule_entry->rule.dst = IPA_CLIENT_APPS_WAN_CONS;
1525 rt_rule_entry->rule.hdr_proc_ctx_hdl = hdr_proc_hdl_dummy_v6;
1526 rt_rule_entry->rule.dst = IPA_CLIENT_APPS_LAN_CONS;
1528 rt_rule_entry->rule.attrib.attrib_mask = IPA_FLT_DST_ADDR;
1529 rt_rule_entry->rule.attrib.u.v6.dst_addr[0] = 0;
1530 rt_rule_entry->rule.attrib.u.v6.dst_addr[1] = 0;
1531 rt_rule_entry->rule.attrib.u.v6.dst_addr[2] = 0;
1532 rt_rule_entry->rule.attrib.u.v6.dst_addr[3] = 0;
1533 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[0] = 0;
1534 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[1] = 0;
1535 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[2] = 0;
1536 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[3] = 0;
1538 rt_rule_entry->rule.hashable = true;
1542 IPACMERR("Routing rule addition failed!\n");
1547 IPACMDBG_H("Set ipv6 wan-route rule hdl for v6_wan_table:0x%x,tx:%d,ip-type: %d \n",
1653 /* Add corresponding ipa_rm_resource_name of TX-endpoint up before IPV6 RT-rule set */
1666 /* wan default route/filter rule configuration */
1723 /* wan default route/filter rule configuration */
1951 IPACMDBG_H("IHL based attribute mask is found: install IPv6 frag firewall rule \n");
1956 IPACMDBG_H("IHL based attribute mask is not found: no IPv6 frag firewall rule \n");
1974 /* default firewall is disable and the rule action is drop */
1994 IPACMDBG_H("firewall rule v4:%d v6:%d total:%d\n", rule_v4, rule_v6, firewall_config.num_extd_firewall_entries);
2025 flt_rule_entry.rule.hashable = false;
2029 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2030 memcpy(&flt_rule_entry.rule.attrib, &rx_prop->rx[0].attrib, sizeof(struct ipa_rule_attrib));
2031 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_FRAGMENT;
2044 IPACMDBG_H("Installed IPv6 frag firewall rule, handle %d.\n", ipv6_frag_firewall_flt_rule_hdl);
2080 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2086 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2090 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2099 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2103 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2108 flt_rule_entry.rule.hashable = true;
2110 flt_rule_entry.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_lan_v4.hdl;
2111 memcpy(&flt_rule_entry.rule.attrib,
2114 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
2115 flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0x00000000;
2116 flt_rule_entry.rule.attrib.u.v4.dst_addr = 0x00000000;
2129 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2167 flt_rule_entry.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_lan_v4.hdl;
2174 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2178 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2183 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2186 flt_rule_entry.rule.hashable = true;
2188 memcpy(&flt_rule_entry.rule.attrib,
2193 flt_rule_entry.rule.attrib.attrib_mask |= rx_prop->rx[0].attrib.attrib_mask;
2194 flt_rule_entry.rule.attrib.meta_data_mask = rx_prop->rx[0].attrib.meta_data_mask;
2195 flt_rule_entry.rule.attrib.meta_data = rx_prop->rx[0].attrib.meta_data;
2197 /* check if the rule is define as TCP_UDP, split into 2 rules, 1 for TCP and 1 UDP */
2201 /* insert TCP rule*/
2202 flt_rule_entry.rule.attrib.u.v4.protocol = IPACM_FIREWALL_IPPROTO_TCP;
2205 IPACMDBG_H("Filter rule attrib mask: 0x%x\n",
2206 m_pFilteringTable->rules[0].rule.attrib.attrib_mask);
2216 /* save v4 firewall filter rule handler */
2217 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n",
2225 /* insert UDP rule*/
2226 flt_rule_entry.rule.attrib.u.v4.protocol = IPACM_FIREWALL_IPPROTO_UDP;
2229 IPACMDBG_H("Filter rule attrib mask: 0x%x\n",
2230 m_pFilteringTable->rules[0].rule.attrib.attrib_mask);
2240 /* save v4 firewall filter rule handler */
2241 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n",
2253 IPACMDBG_H("Filter rule attrib mask: 0x%x\n",
2254 m_pFilteringTable->rules[0].rule.attrib.attrib_mask);
2264 /* save v4 firewall filter rule handler */
2265 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n",
2274 } /* end of firewall ipv4 filter rule add for loop*/
2276 /* configure default filter rule */
2290 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2296 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2300 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2309 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2313 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2317 flt_rule_entry.rule.hashable = true;
2319 flt_rule_entry.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_lan_v4.hdl;
2320 memcpy(&flt_rule_entry.rule.attrib,
2323 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
2324 flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0x00000000;
2325 flt_rule_entry.rule.attrib.u.v4.dst_addr = 0x00000000;
2329 IPACMDBG_H("Filter rule attrib mask: 0x%x\n",
2330 m_pFilteringTable->rules[0].rule.attrib.attrib_mask);
2340 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2360 /* Construct ICMP rule */
2365 flt_rule_entry.rule.retain_hdr = 1;
2366 flt_rule_entry.rule.eq_attrib_type = 0;
2367 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2369 flt_rule_entry.rule.hashable = true;
2371 memcpy(&flt_rule_entry.rule.attrib,
2374 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_NEXT_HDR;
2375 flt_rule_entry.rule.attrib.u.v6.next_hdr = (uint8_t)IPACM_FIREWALL_IPPROTO_ICMP6;
2387 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2392 /* End of construct ICMP rule */
2405 flt_rule_entry.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_wan_v6.hdl;
2415 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2419 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2425 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2428 flt_rule_entry.rule.hashable = true;
2430 memcpy(&flt_rule_entry.rule.attrib,
2433 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
2434 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0x00000000;
2435 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0x00000000;
2436 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0x00000000;
2437 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0x00000000;
2438 flt_rule_entry.rule.attrib.u.v6.dst_addr[0] = 0X00000000;
2439 flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
2440 flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
2441 flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0X00000000;
2454 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2493 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2497 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2500 flt_rule_entry.rule.hashable = true;
2502 flt_rule_entry.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_wan_v6.hdl;
2503 memcpy(&flt_rule_entry.rule.attrib,
2506 flt_rule_entry.rule.attrib.attrib_mask |= rx_prop->rx[0].attrib.attrib_mask;
2507 flt_rule_entry.rule.attrib.meta_data_mask = rx_prop->rx[0].attrib.meta_data_mask;
2508 flt_rule_entry.rule.attrib.meta_data = rx_prop->rx[0].attrib.meta_data;
2510 /* check if the rule is define as TCP/UDP */
2513 /* insert TCP rule*/
2514 flt_rule_entry.rule.attrib.u.v6.next_hdr = IPACM_FIREWALL_IPPROTO_TCP;
2525 /* save v4 firewall filter rule handler */
2526 IPACMDBG_H("flt rule
2532 /* insert UDP rule*/
2533 flt_rule_entry.rule.attrib.u.v6.next_hdr = IPACM_FIREWALL_IPPROTO_UDP;
2544 /* save v6 firewall filter rule handler */
2545 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2563 /* save v6 firewall filter rule handler */
2564 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2571 } /* end of firewall ipv6 filter rule add for loop*/
2574 /* Construct ICMP rule */
2579 flt_rule_entry.rule.retain_hdr = 1;
2580 flt_rule_entry.rule.eq_attrib_type = 0;
2581 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2583 flt_rule_entry.rule.hashable = true;
2585 memcpy(&flt_rule_entry.rule.attrib,
2588 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_NEXT_HDR;
2589 flt_rule_entry.rule.attrib.u.v6.next_hdr = (uint8_t)IPACM_FIREWALL_IPPROTO_ICMP6;
2601 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2605 /* End of construct ICMP rule */
2607 /* setup default wan filter rule */
2612 flt_rule_entry.rule.rt_tbl_hdl = IPACM_Iface::ipacmcfg->rt_tbl_wan_v6.hdl;
2622 flt_rule_entry.rule.action = IPA_PASS_TO_EXCEPTION;
2626 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2632 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2635 flt_rule_entry.rule.hashable = true;
2637 memcpy(&flt_rule_entry.rule.attrib,
2640 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
2641 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0x00000000;
2642 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0x00000000;
2643 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0x00000000;
2644 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0x00000000;
2645 flt_rule_entry.rule.attrib.u.v6.dst_addr[0] = 0X00000000;
2646 flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
2647 flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
2648 flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0X00000000;
2661 IPACMDBG_H("flt rule hdl0=0x%x, status=0x%x\n", m_pFilteringTable->rules[0].flt_rule_hdl, m_pFilteringTable->rules[0].status);
2699 /* default firewall is disable and the rule action is drop */
2713 /* add IPv6 frag rule when firewall is enabled*/
2726 flt_rule_entry.rule.retain_hdr = 1;
2727 flt_rule_entry.rule.to_uc = 0;
2728 flt_rule_entry.rule.eq_attrib_type = 1;
2729 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2732 flt_rule_entry.rule.hashable = false;
2743 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
2744 IPACMDBG_H("IPv6 frag flt rule uses routing table index %d\n", rt_tbl_idx.idx);
2746 flt_rule_entry.rule.attrib.attrib_mask |= rx_prop->rx[0].attrib.attrib_mask;
2747 flt_rule_entry.rule.attrib.meta_data_mask = rx_prop->rx[0].attrib.meta_data_mask;
2748 flt_rule_entry.rule.attrib.meta_data = rx_prop->rx[0].attrib.meta_data;
2750 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_FRAGMENT;
2752 change_to_network_order(IPA_IP_v6, &flt_rule_entry.rule.attrib);
2755 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
2762 memcpy(&flt_rule_entry.rule.eq_attrib,
2764 sizeof(flt_rule_entry.rule.eq_attrib));
2786 flt_rule_entry.rule.retain_hdr = 1;
2787 flt_rule_entry.rule.to_uc = 0;
2788 flt_rule_entry.rule.eq_attrib_type = 1;
2793 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2797 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2800 flt_rule_entry.rule.hashable = true;
2804 if(flt_rule_entry.rule.action == IPA_PASS_TO_ROUTING)
2818 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
2822 memcpy(&flt_rule_entry.rule.attrib,
2826 flt_rule_entry.rule.attrib.attrib_mask |= rx_prop->rx[0].attrib.attrib_mask;
2827 flt_rule_entry.rule.attrib.meta_data_mask = rx_prop->rx[0].attrib.meta_data_mask;
2828 flt_rule_entry.rule.attrib.meta_data = rx_prop->rx[0].attrib.meta_data;
2830 change_to_network_order(IPA_IP_v4, &flt_rule_entry.rule.attrib);
2832 /* check if the rule is define as TCP_UDP, split into 2 rules, 1 for TCP and 1 UDP */
2835 /* insert TCP rule*/
2836 flt_rule_entry.rule.attrib.u.v4.protocol = IPACM_FIREWALL_IPPROTO_TCP;
2839 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
2846 memcpy(&flt_rule_entry.rule.eq_attrib,
2848 sizeof(flt_rule_entry.rule.eq_attrib));
2851 IPACMDBG_H("Filter rule attrib mask: 0x%x\n", rules[pos].rule.attrib.attrib_mask);
2856 /* insert UDP rule*/
2857 flt_rule_entry.rule.attrib.u.v4.protocol = IPACM_FIREWALL_IPPROTO_UDP;
2860 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
2867 memcpy(&flt_rule_entry.rule.eq_attrib,
2869 sizeof(flt_rule_entry.rule.eq_attrib));
2872 IPACMDBG_H("Filter rule attrib mask: 0x%x\n", rules[pos].rule.attrib.attrib_mask);
2880 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
2887 memcpy(&flt_rule_entry.rule.eq_attrib,
2889 sizeof(flt_rule_entry.rule.eq_attrib));
2892 IPACMDBG_H("Filter rule attrib mask: 0x%x\n", rules[pos].rule.attrib.attrib_mask);
2898 } /* end of firewall ipv4 filter rule add for loop*/
2900 /* configure default filter rule */
2907 flt_rule_entry.rule.retain_hdr = 1;
2908 flt_rule_entry.rule.to_uc = 0;
2909 flt_rule_entry.rule.eq_attrib_type = 1;
2917 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2921 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2929 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
2933 flt_rule_entry.rule.action = IPA_PASS_TO_DST_NAT;
2937 flt_rule_entry.rule.hashable = true;
2942 if(flt_rule_entry.rule.action == IPA_PASS_TO_ROUTING)
2957 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
2961 memcpy(&flt_rule_entry.rule.attrib,
2964 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
2965 flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0x00000000;
2966 flt_rule_entry.rule.attrib.u.v4.dst_addr = 0x00000000;
2968 change_to_network_order(IPA_IP_v4, &flt_rule_entry.rule.attrib);
2971 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
2979 memcpy(&flt_rule_entry.rule.eq_attrib,
2981 sizeof(flt_rule_entry.rule.eq_attrib));
2984 IPACMDBG_H("Filter rule attrib mask: 0x%x\n", rules[pos].rule.attrib.attrib_mask);
3007 flt_rule_entry.rule.retain_hdr = 1;
3008 flt_rule_entry.rule.to_uc = 0;
3009 flt_rule_entry.rule.eq_attrib_type = 1;
3010 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
3012 flt_rule_entry.rule.hashable = true;
3033 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
3037 memcpy(&flt_rule_entry.rule.attrib,
3041 flt_rule_entry.rule.attrib.attrib_mask |= rx_prop->rx[0].attrib.attrib_mask;
3042 flt_rule_entry.rule.attrib.meta_data_mask = rx_prop->rx[0].attrib.meta_data_mask;
3043 flt_rule_entry.rule.attrib.meta_data = rx_prop->rx[0].attrib.meta_data;
3045 change_to_network_order(IPA_IP_v6, &flt_rule_entry.rule.attrib);
3047 /* check if the rule is define as TCP/UDP */
3050 /* insert TCP rule*/
3051 flt_rule_entry.rule.attrib.u.v6.next_hdr = IPACM_FIREWALL_IPPROTO_TCP;
3054 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3062 memcpy(&flt_rule_entry.rule.eq_attrib,
3064 sizeof(flt_rule_entry.rule.eq_attrib));
3070 /* insert UDP rule*/
3071 flt_rule_entry.rule.attrib.u.v6.next_hdr = IPACM_FIREWALL_IPPROTO_UDP;
3074 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3082 memcpy(&flt_rule_entry.rule.eq_attrib,
3084 sizeof(flt_rule_entry.rule.eq_attrib));
3093 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3101 memcpy(&flt_rule_entry.rule.eq_attrib,
3103 sizeof(flt_rule_entry.rule.eq_attrib));
3110 } /* end of firewall ipv6 filter rule add for loop*/
3113 /* setup default wan filter rule */
3120 flt_rule_entry.rule.retain_hdr = 1;
3121 flt_rule_entry.rule.to_uc = 0;
3122 flt_rule_entry.rule.eq_attrib_type = 1;
3123 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
3125 flt_rule_entry.rule.hashable = true;
3152 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
3156 memcpy(&flt_rule_entry.rule.attrib,
3159 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
3160 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0x00000000;
3161 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0x00000000;
3162 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0x00000000;
3163 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0x00000000;
3164 flt_rule_entry.rule.attrib.u.v6.dst_addr[0] = 0X00000000;
3165 flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
3166 flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
3167 flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0X00000000;
3169 change_to_network_order(IPA_IP_v6, &flt_rule_entry.rule.attrib);
3172 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3179 memcpy(&flt_rule_entry.rule.eq_attrib,
3181 sizeof(flt_rule_entry.rule.eq_attrib));
3267 flt_rule_entry.rule.retain_hdr = 1;
3268 flt_rule_entry.rule.to_uc = 0;
3269 flt_rule_entry.rule.eq_attrib_type = 1;
3270 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
3272 flt_rule_entry.rule.hashable = true;
3274 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
3276 /* Configuring ICMP filtering rule */
3277 memcpy(&flt_rule_entry.rule.attrib,
3279 sizeof(flt_rule_entry.rule.attrib));
3281 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_PROTOCOL;
3282 flt_rule_entry.rule.attrib.u.v4.protocol = (uint8_t)IPACM_FIREWALL_IPPROTO_ICMP;
3285 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3294 memcpy(&flt_rule_entry.rule.eq_attrib,
3296 sizeof(flt_rule_entry.rule.eq_attrib));
3303 memcpy(&flt_rule_entry.rule.attrib,
3305 sizeof(flt_rule_entry.rule.attrib));
3307 flt_rule_entry.rule.attrib.attrib_mask &= ~((uint32_t)IPA_FLT_META_DATA);
3308 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_SRC_PORT;
3309 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_PROTOCOL;
3312 flt_rule_entry.rule.attrib.src_port = ipacm_config->alg_table[i].port;
3313 flt_rule_entry.rule.attrib.u.v4.protocol = ipacm_config->alg_table[i].protocol;
3316 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3324 memcpy(&flt_rule_entry.rule.eq_attrib,
3326 sizeof(flt_rule_entry.rule.eq_attrib));
3331 memcpy(&flt_rule_entry.rule.attrib,
3333 sizeof(flt_rule_entry.rule.attrib));
3335 flt_rule_entry.rule.attrib.attrib_mask &= ~((uint32_t)IPA_FLT_META_DATA);
3336 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_PORT;
3337 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_PROTOCOL;
3340 flt_rule_entry.rule.attrib.dst_port = ipacm_config->alg_table[i].port;
3341 flt_rule_entry.rule.attrib.u.v4.protocol = ipacm_config->alg_table[i].protocol;
3344 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3353 memcpy(&flt_rule_entry.rule.eq_attrib,
3355 sizeof(flt_rule_entry.rule.eq_attrib));
3387 flt_rule_entry.rule.retain_hdr = 1;
3388 flt_rule_entry.rule.to_uc = 0;
3389 flt_rule_entry.rule.eq_attrib_type = 1;
3390 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
3392 flt_rule_entry.rule.hashable = true;
3394 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
3396 /* Configuring ICMP filtering rule */
3397 memcpy(&flt_rule_entry.rule.attrib,
3399 sizeof(flt_rule_entry.rule.attrib));
3401 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_NEXT_HDR;
3402 flt_rule_entry.rule.attrib.u.v6.next_hdr = (uint8_t)IPACM_FIREWALL_IPPROTO_ICMP6;
3405 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3414 memcpy(&flt_rule_entry.rule.eq_attrib,
3416 sizeof(flt_rule_entry.rule.eq_attrib));
3587 flt_rule_entry.rule.retain_hdr = 1;
3588 flt_rule_entry.rule.to_uc = 0;
3589 flt_rule_entry.rule.eq_attrib_type = 1;
3590 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
3592 flt_rule_entry.rule.hashable = true;
3594 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
3598 /* Configuring Multicast Filtering Rule */
3599 memcpy(&flt_rule_entry.rule.attrib,
3601 sizeof(flt_rule_entry.rule.attrib));
3603 flt_rule_entry.rule.attrib.attrib_mask &= ~((uint32_t)IPA_FLT_META_DATA);
3604 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
3605 flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0xF0000000;
3606 flt_rule_entry.rule.attrib.u.v4.dst_addr = 0xE0000000;
3608 change_to_network_order(IPA_IP_v4, &flt_rule_entry.rule.attrib);
3611 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3620 memcpy(&flt_rule_entry.rule.eq_attrib,
3622 sizeof(flt_rule_entry.rule.eq_attrib));
3625 /* Configuring Broadcast Filtering Rule */
3626 flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
3627 flt_rule_entry.rule.attrib.u.v4.dst_addr = 0xFFFFFFFF;
3629 change_to_network_order(IPA_IP_v4, &flt_rule_entry.rule.attrib);
3632 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3641 memcpy(&flt_rule_entry.rule.eq_attrib,
3643 sizeof(flt_rule_entry.rule.eq_attrib));
3670 flt_rule_entry.rule.retain_hdr = 1;
3671 flt_rule_entry.rule.to_uc = 0;
3672 flt_rule_entry.rule.eq_attrib_type = 1;
3673 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
3675 flt_rule_entry.rule.hashable = true;
3677 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
3679 /* Configuring Multicast Filtering Rule */
3680 memcpy(&flt_rule_entry.rule.attrib,
3682 sizeof(flt_rule_entry.rule.attrib));
3684 flt_rule_entry.rule.attrib.attrib_mask &= ~((uint32_t)IPA_FLT_META_DATA);
3685 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
3686 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0xFF000000;
3687 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0x00000000;
3688 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0x00000000;
3689 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0x00000000;
3690 flt_rule_entry.rule.attrib.u.v6.dst_addr[0] = 0xFF000000;
3691 flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
3692 flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
3693 flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0x00000000;
3695 change_to_network_order(IPA_IP_v6, &flt_rule_entry.rule.attrib);
3698 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3707 memcpy(&flt_rule_entry.rule.eq_attrib,
3709 sizeof(flt_rule_entry.rule.eq_attrib));
3712 /* Configuring fe80::/10 Link-Scoped Unicast Filtering Rule */
3713 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0xFFC00000;
3714 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0x00000000;
3715 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0x00000000;
3716 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0x00000000;
3717 flt_rule_entry.rule.attrib.u.v6.dst_addr[0] = 0xFE800000;
3718 flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
3719 flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
3720 flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0x00000000;
3722 change_to_network_order(IPA_IP_v6, &flt_rule_entry.rule.attrib);
3725 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3734 memcpy(&flt_rule_entry.rule.eq_attrib,
3736 sizeof(flt_rule_entry.rule.eq_attrib));
3740 /* Configuring fec0::/10 Reserved by IETF Filtering Rule */
3741 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0xFFC00000;
3742 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0x00000000;
3743 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0x00000000;
3744 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0x00000000;
3745 flt_rule_entry.rule.attrib.u.v6.dst_addr[0] = 0xFEC00000;
3746 flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
3747 flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
3748 flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0x00000000;
3750 change_to_network_order(IPA_IP_v6, &flt_rule_entry.rule.attrib);
3753 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
3762 memcpy(&flt_rule_entry.rule.eq_attrib,
3764 sizeof(flt_rule_entry.rule.eq_attrib));
3776 flt_rule_entry.rule.retain_hdr = 1;
3777 flt_rule_entry.rule.to_uc = 0;
3778 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
3779 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
3780 flt_rule_entry.rule.eq_attrib_type = 1;
3782 flt_rule_entry.rule.eq_attrib.rule_eq_bitmap = 0;
3784 flt_rule_entry.rule.eq_attrib.rule_eq_bitmap |= (1<<1);
3785 flt_rule_entry.rule.eq_attrib.protocol_eq_present = 1;
3786 flt_rule_entry.rule.eq_attrib.protocol_eq = IPACM_FIREWALL_IPPROTO_TCP;
3789 flt_rule_entry.rule.eq_attrib.rule_eq_bitmap |= (1<<7);
3791 flt_rule_entry.rule.eq_attrib.rule_eq_bitmap |= (1<<8);
3793 flt_rule_entry.rule.eq_attrib.num_ihl_offset_meq_32 = 1;
3794 flt_rule_entry.rule.eq_attrib.ihl_offset_meq_32[0].offset = 12;
3796 /* add TCP FIN rule*/
3797 flt_rule_entry.rule.eq_attrib.ihl_offset_meq_32[0].value = (((uint32_t)1)<<TCP_FIN_SHIFT);
3798 flt_rule_entry.rule.eq_attrib.ihl_offset_meq_32[0].mask = (((uint32_t)1)<<TCP_FIN_SHIFT);
3801 /* add TCP SYN rule*/
3802 flt_rule_entry.rule.eq_attrib.ihl_offset_meq_32[0].value = (((uint32_t)1)<<TCP_SYN_SHIFT);
3803 flt_rule_entry.rule.eq_attrib.ihl_offset_meq_32[0].mask = (((uint32_t)1)<<TCP_SYN_SHIFT);
3806 /* add TCP RST rule*/
3807 flt_rule_entry.rule.eq_attrib.ihl_offset_meq_32[0].value = (((uint32_t)1)<<TCP_RST_SHIFT);
3808 flt_rule_entry.rule.eq_attrib.ihl_offset_meq_32[0].mask = (((uint32_t)1)<<TCP_RST_SHIFT);
3846 /* free v4 firewall filter rule */
3886 /* free v6 firewall filter rule */
3941 /* for STA mode: wan default route/filter rule delete */
3962 /* Delete corresponding ipa_rm_resource_name of TX-endpoint after delete IPV4/V6 RT-rule */
3971 IPACMDBG_H("Tx:%d, ip-type: %d conflict ip-type: %d, no RT-rule deleted\n",
3978 IPACMDBG_H("Tx:%d, ip-type: %d match ip-type: %d, RT-rule deleted\n", tx_index, tx_prop->tx[tx_index].ip,iptype);
3982 IPACMDBG_H("IP-family:%d, Routing rule(hdl:0x%x) deletion failed with tx_index %d!\n", IPA_IP_v4, wan_route_rule_v4_hdl[tx_index], tx_index);
3988 IPACMDBG_H("Tx:%d, ip-type: %d match ip-type: %d, RT-rule deleted\n", tx_index, tx_prop->tx[tx_index].ip,iptype);
3992 IPACMDBG_H("IP-family:%d, Routing rule(hdl:0x%x) deletion failed with tx_index %d!\n", IPA_IP_v6, wan_route_rule_v6_hdl[tx_index], tx_index);
4001 IPACMDBG_H("ip-type %d: default v6 wan RT-rule deleted\n",iptype);
4004 IPACMDBG_H("IP-family:%d, Routing rule(hdl:0x%x) deletion failed!\n",IPA_IP_v6,wan_route_rule_v6_hdl_a5[0]);
4106 /* Delete corresponding ipa_rm_resource_name of TX-endpoint after delete IPV4/V6 RT-rule */
4114 IPACMDBG_H("ip-type %d: default v6 wan RT-rule deleted\n",iptype);
4117 IPACMDBG_H("IP-family:%d, Routing rule(hdl:0x%x) deletion failed!\n",IPA_IP_v6,wan_route_rule_v6_hdl_a5[0]);
4216 /* set up ipv4 odu rule*/
4236 flt_rule_entry.rule.retain_hdr = 0;
4237 flt_rule_entry.rule.to_uc = 0;
4238 flt_rule_entry.rule.eq_attrib_type = 1;
4239 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
4241 flt_rule_entry.rule.hashable = true;
4243 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
4245 memcpy(&flt_rule_entry.rule.attrib,
4248 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
4249 flt_rule_entry.rule.attrib.u.v4.dst_addr_mask = 0x00000000;
4250 flt_rule_entry.rule.attrib.u.v4.dst_addr = 0x00000000;
4253 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
4260 memcpy(&flt_rule_entry.rule.eq_attrib,
4262 sizeof(flt_rule_entry.rule.eq_attrib));
4266 /* construc v6 rule */
4285 flt_rule_entry.rule.retain_hdr = 0;
4286 flt_rule_entry.rule.to_uc = 0;
4287 flt_rule_entry.rule.eq_attrib_type = 1;
4288 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
4290 flt_rule_entry.rule.hashable = true;
4292 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
4294 memcpy(&flt_rule_entry.rule.attrib,
4297 flt_rule_entry.rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
4298 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[0] = 0x00000000;
4299 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[1] = 0x00000000;
4300 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[2] = 0x00000000;
4301 flt_rule_entry.rule.attrib.u.v6.dst_addr_mask[3] = 0x00000000;
4302 flt_rule_entry.rule.attrib.u.v6.dst_addr[0] = 0X00000000;
4303 flt_rule_entry.rule.attrib.u.v6.dst_addr[1] = 0x00000000;
4304 flt_rule_entry.rule.attrib.u.v6.dst_addr[2] = 0x00000000;
4305 flt_rule_entry.rule.attrib.u.v6.dst_addr[3] = 0X00000000;
4308 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
4315 memcpy(&flt_rule_entry.rule.eq_attrib,
4317 sizeof(flt_rule_entry.rule.eq_attrib));
4333 /* Delete corresponding ipa_rm_resource_name of TX-endpoint after delete IPV4/V6 RT-rule */
4368 /* Delete default v4 RT rule */
4374 IPACMERR("Routing rule deletion failed!\n");
4380 /* delete default v6 RT rule */
4389 IPACMERR("Routing rule deletion failed!\n");
4451 /* check software routing fl rule hdl */
4457 /* free filter rule handlers */
4480 IPACMERR("ErrorDeleting Filtering rule, aborting...\n");
4557 /* free ODU filter rule handlers */
4561 /* Delete corresponding ipa_rm_resource_name of TX-endpoint after delete IPV4/V6 RT-rule */
4572 IPACMDBG("finished delete embms filtering rule\n ");
4629 IPACMERR("Routing rule deletion failed!\n");
4683 IPACMERR("Routing rule deletion failed!\n");
4757 IPACMERR("Routing rule deletion failed!\n");
4766 IPACMERR("Routing rule deletion failed!\n");
4773 /* check software routing fl rule hdl */
4840 IPACMDBG("already setup software_routing rule for (%s)iface ip-family %d\n",
4853 IPACMDBG_H("Total number of WAN DL filtering rule for IPv4 is 1\n");
4861 /* Configuring Software-Routing Filtering Rule */
4878 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
4880 flt_rule_entry.rule.hashable = true;
4883 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
4885 memcpy(&flt_rule_entry.rule.attrib,
4887 sizeof(flt_rule_entry.rule.attrib));
4888 flt_rule_entry.rule.retain_hdr = 0;
4889 flt_rule_entry.rule.to_uc = 0;
4890 flt_rule_entry.rule.eq_attrib_type = 1;
4893 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
4901 memcpy(&flt_rule_entry.rule.eq_attrib,
4903 sizeof(flt_rule_entry.rule.eq_attrib));
4915 IPACMDBG_H("Total number of WAN DL filtering rule for IPv6 is 1\n");
4923 /* Configuring Software-Routing Filtering Rule */
4940 flt_rule_entry.rule.action = IPA_PASS_TO_ROUTING;
4942 flt_rule_entry.rule.hashable = true;
4944 flt_rule_entry.rule.rt_tbl_idx = rt_tbl_idx.idx;
4945 memcpy(&flt_rule_entry.rule.attrib,
4947 sizeof(flt_rule_entry.rule.attrib));
4948 flt_rule_entry.rule.retain_hdr = 0;
4949 flt_rule_entry.rule.to_uc = 0;
4950 flt_rule_entry.rule.eq_attrib_type = 1;
4953 memcpy(&flt_eq.attrib, &flt_rule_entry.rule.attrib, sizeof(flt_eq.attrib));
4961 memcpy(&flt_rule_entry.rule.eq_attrib,
4963 sizeof(flt_rule_entry.rule.eq_attrib));
4977 IPACMDBG_H("Total number of WAN DL filtering rule for IPv4 is %d\n", IPACM_Wan::num_v4_flt_rule);
4999 IPACMDBG_H("Total number of WAN DL filtering rule for IPv6 is %d\n", IPACM_Wan::num_v6_flt_rule);
5017 else //embms is on, always add 1 embms rule
5022 IPACMDBG_H("Total number of WAN DL filtering rule for IPv4 is %d\n", IPACM_Wan::num_v4_flt_rule + 1);
5038 IPACMDBG_H("Total number of WAN DL filtering rule for IPv6 is %d\n", IPACM_Wan::num_v6_flt_rule + 1);
5516 /*handle wan client routing rule*/
5561 /* Add corresponding ipa_rm_resource_name of TX-endpoint up before IPV6 RT-rule set */
5584 IPACMDBG_H("Tx:%d, ip-type: %d conflict ip-type: %d no RT-rule added\n",
5608 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].alt_dst_pipe;
5612 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].dst_pipe;
5614 memcpy(&rt_rule_entry->rule.attrib,
5616 sizeof(rt_rule_entry->rule.attrib));
5617 rt_rule_entry->rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
5618 rt_rule_entry->rule.hdr_hdl = get_client_memptr(wan_client, wan_index)->hdr_hdl_v4;
5619 rt_rule_entry->rule.attrib.u.v4.dst_addr = get_client_memptr(wan_client, wan_index)->v4_addr;
5620 rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
5622 rt_rule_entry->rule.hashable = true;
5626 IPACMERR("Routing rule addition failed!\n");
5634 IPACMDBG_H("tx:%d, rt rule hdl=%x ip-type: %d\n", tx_index,
5654 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].alt_dst_pipe;
5658 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].dst_pipe;
5660 memset(&rt_rule_entry->rule.attrib, 0, sizeof(rt_rule_entry->rule.attrib));
5661 rt_rule_entry->rule.hdr_hdl = get_client_memptr(wan_client, wan_index)->hdr_hdl_v6;;
5662 rt_rule_entry->rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
5663 rt_rule_entry->rule.attrib.u.v6.dst_addr[0] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][0];
5664 rt_rule_entry->rule.attrib.u.v6.dst_addr[1] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][1];
5665 rt_rule_entry->rule.attrib.u.v6.dst_addr[2] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][2];
5666 rt_rule_entry->rule.attrib.u.v6.dst_addr[3] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][3];
5667 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[0] = 0xFFFFFFFF;
5668 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[1] = 0xFFFFFFFF;
5669 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[2] = 0xFFFFFFFF;
5670 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[3] = 0xFFFFFFFF;
5672 rt_rule_entry->rule.hashable = true;
5676 IPACMERR("Routing rule addition failed!\n");
5682 IPACMDBG_H("tx:%d, rt rule hdl=%x ip-type: %d\n", tx_index,
5685 /*Copy same rule to v6 WAN RT TBL*/
5691 rt_rule_entry->rule.dst = iface_query->excp_pipe;
5692 memcpy(&rt_rule_entry->rule.attrib,
5694 sizeof(rt_rule_entry->rule.attrib));
5695 rt_rule_entry->rule.hdr_hdl = 0;
5696 rt_rule_entry->rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
5697 rt_rule_entry->rule.attrib.u.v6.dst_addr[0] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][0];
5698 rt_rule_entry->rule.attrib.u.v6.dst_addr[1] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][1];
5699 rt_rule_entry->rule.attrib.u.v6.dst_addr[2] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][2];
5700 rt_rule_entry->rule.attrib.u.v6.dst_addr[3] = get_client_memptr(wan_client, wan_index)->v6_addr[v6_num][3];
5701 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[0] = 0xFFFFFFFF;
5702 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[1] = 0xFFFFFFFF;
5703 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[2] = 0xFFFFFFFF;
5704 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[3] = 0xFFFFFFFF;
5707 IPACMERR("Routing rule addition failed!\n");
5713 IPACMDBG_H("tx:%d, rt rule hdl=%x ip-type: %d\n", tx_index,
5768 IPACMERR("Unable to allocate memory for modify rt rule\n");
5780 memcpy(&rt_rule_entry->rule.attrib,
5782 sizeof(rt_rule_entry->rule.attrib));
5783 rt_rule_entry->rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
5787 rt_rule_entry->rule.attrib.u.v4.dst_addr = 0;
5788 rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0;
5789 rt_rule_entry->rule.hdr_hdl = hdr_hdl_sta_v4;
5794 rt_rule_entry->rule.attrib.u.v6.dst_addr[0] = 0;
5795 rt_rule_entry->rule.attrib.u.v6.dst_addr[1] = 0;
5796 rt_rule_entry->rule.attrib.u.v6.dst_addr[2] = 0;
5797 rt_rule_entry->rule.attrib.u.v6.dst_addr[3] = 0;
5798 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[0] = 0;
5799 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[1] = 0;
5800 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[2] = 0;
5801 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[3] = 0;
5803 rt_rule_entry->rule.hdr_hdl = hdr_hdl_sta_v6;
5806 IPACMDBG_H("Header handle: 0x%x\n", rt_rule_entry->rule.hdr_hdl);
5810 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].dst_pipe;
5816 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].alt_dst_pipe;
5829 IPACMERR("Routing rule modify failed!\n");
5834 IPACMDBG("Routing rule modified successfully \n");
5866 IPACMERR("Unable to allocate memory for modify rt rule\n");
5912 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].alt_dst_pipe;
5916 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].dst_pipe;
5919 memcpy(&rt_rule_entry->rule.attrib,
5921 sizeof(rt_rule_entry->rule.attrib));
5922 rt_rule_entry->rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
5924 rt_rule_entry->rule.hdr_hdl = get_client_memptr(wan_client, clnt_index)->hdr_hdl_v4;
5925 rt_rule_entry->rule.attrib.u.v4.dst_addr = get_client_memptr(wan_client, clnt_index)->v4_addr;
5926 rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
5928 /* copy ipv4 RT rule hdl */
5929 IPACMDBG_H("rt rule hdl=%x\n",
5937 IPACMERR("Routing rule modify failed!\n");
5983 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].alt_dst_pipe;
5987 rt_rule_entry->rule.dst = tx_prop->tx[tx_index].dst_pipe;
5990 memcpy(&rt_rule_entry->rule.attrib,
5992 sizeof(rt_rule_entry->rule.attrib));
5994 rt_rule_entry->rule.hdr_hdl = get_client_memptr(wan_client, clnt_index)->hdr_hdl_v6;
5995 rt_rule_entry->rule.attrib.attrib_mask |= IPA_FLT_DST_ADDR;
5996 rt_rule_entry->rule.attrib.u.v6.dst_addr[0] = get_client_memptr(wan_client, clnt_index)->v6_addr[v6_num][0];
5997 rt_rule_entry->rule.attrib.u.v6.dst_addr[1] = get_client_memptr(wan_client, clnt_index)->v6_addr[v6_num][1];
5998 rt_rule_entry->rule.attrib.u.v6.dst_addr[2] = get_client_memptr(wan_client, clnt_index)->v6_addr[v6_num][2];
5999 rt_rule_entry->rule.attrib.u.v6.dst_addr[3] = get_client_memptr(wan_client, clnt_index)->v6_addr[v6_num][3];
6000 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[0] = 0xFFFFFFFF;
6001 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[1] = 0xFFFFFFFF;
6002 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[2] = 0xFFFFFFFF;
6003 rt_rule_entry->rule.attrib.u.v6.dst_addr_mask[3] = 0xFFFFFFFF;
6005 IPACMDBG_H("rt rule hdl=%x\n",
6013 IPACMERR("Routing rule Modify failed!\n");