#ifndef RTK_RG_ACL_H #define RTK_RG_ACL_H #include <rtk_rg_internal.h> #include <rtk_rg_mappingAPI.h> //#include <rtk_rg_apollo_liteRomeDriver.h> //FIXME: temporary incldue for calling rtk_rg_apollo_* #define NEED_CF_ASIC_RULE_ONLY_TRUE 1 #define NEED_CF_ASIC_RULE_ONLY_FLASE 0 /*(1)ACL init related APIs*/ int _rtk_rg_acl_asic_init(void); int _rtk_rg_classify_asic_init(void); /*(2)RG_ACL APIs and internal APIs*/ int _rtk_rg_aclSWEntry_and_asic_rearrange(void); int _rtk_rg_check_acl_committed_rule(rtk_acl_igr_log_act_ctrl_t mode); /*(3)literomeDriver mapping APIs*/ int32 _rtk_rg_apollo_aclFilterAndQos_add(rtk_rg_aclFilterAndQos_t *acl_filter, int *acl_filter_idx); int32 _rtk_rg_apollo_aclFilterAndQos_del(int acl_filter_idx); int32 _rtk_rg_apollo_aclFilterAndQos_find(rtk_rg_aclFilterAndQos_t *acl_filter, int *valid_idx); int32 _rtk_rg_apollo_classifyEntry_add(rtk_rg_classifyEntry_t *classifyFilter); int32 _rtk_rg_apollo_classifyEntry_del(int index); int32 _rtk_rg_apollo_classifyEntry_find(int index, rtk_rg_classifyEntry_t *classifyFilter); /*(4)reserved ACL related APIs*/ int _rtk_rg_aclReservedEntry_init(void); int _rtk_rg_aclAndCfReservedRuleAdd(rtk_rg_aclAndCf_reserved_type_t rsvType, void *parameter); int _rtk_rg_aclAndCfReservedRuleDel(rtk_rg_aclAndCf_reserved_type_t rsvType); /*(5)fwdEngine datapath used APIs*/ int _rtk_rg_aclDecisionClear(rtk_rg_pktHdr_t *pPktHdr); int _rtk_rg_ingressACLPatternCheck(rtk_rg_pktHdr_t *pPktHdr, int ingressCvidRuleIdxArray[]); rtk_rg_fwdEngineReturn_t _rtk_rg_ingressACLAction(rtk_rg_pktHdr_t *pPktHdr); int _rtk_rg_egressACLPatternCheck(int direct, int naptIdx, rtk_rg_pktHdr_t *pPktHdr,struct sk_buff *skb,int l3Modify,int l4Modify, rtk_rg_port_idx_t egressPort); int _rtk_rg_egressACLAction(int direct, rtk_rg_pktHdr_t *pPktHdr); rtk_rg_fwdEngineReturn_t _rtk_rg_modifyPacketByACLAction(struct sk_buff *skb, rtk_rg_pktHdr_t *pPktHdr,rtk_rg_port_idx_t egressPort); /*(6)debug tool APIs*/ int _dump_rg_acl(struct seq_file *s); int _dump_rg_cf(struct seq_file *s); int _dump_rg_acl_and_cf_diagshell(struct seq_file *s); int _dump_acl(struct seq_file *s); int _dump_cf(struct seq_file *s); int32 _dump_acl_ipRangeTable(struct seq_file *s); int32 _dump_acl_portRangeTable(struct seq_file *s); int32 _dump_acl_template(struct seq_file *s); /*(7)external APIs need for this ACl module*/ extern rtk_rg_err_code_t rtk_rg_apollo_intfInfo_find(rtk_rg_intfInfo_t *intf_info, int *valid_lan_or_wan_intf_idx); extern rtk_rg_err_code_t rtk_rg_apollo_qosDot1pPriRemarkByInternalPriEgressPortEnable_get(rtk_rg_mac_port_idx_t rmk_port, rtk_rg_enable_t *pRmk_enable); extern rtk_rg_err_code_t rtk_rg_apollo_qosPortBasedPriority_get(rtk_rg_mac_port_idx_t port_idx,uint32 *pInt_pri); extern rtk_rg_err_code_t rtk_rg_apollo_aclFilterAndQos_del(int acl_filter_idx); extern rtk_rg_err_code_t rtk_rg_apollo_aclFilterAndQos_add(rtk_rg_aclFilterAndQos_t *acl_filter, int *acl_filter_idx); #endif //end of #ifndef RTK_RG_ACL_H