2 * Copyright (C) 2013 Realtek Semiconductor Corp.
5 * Unless you and Realtek execute a separate written software license
6 * agreement governing use of this software, this software is licensed
7 * to you under the terms of the GNU General Public License version 2,
8 * available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
10 * Purpose : RTL8367/RTL8367C switch high-level API
12 * Feature : The file includes ACL module high-layer API definition
16 #ifndef __RTK_API_ACL_H__
17 #define __RTK_API_ACL_H__
20 * Data Type Declaration
22 #define RTK_FILTER_RAW_FIELD_NUMBER 8
24 #define ACL_DEFAULT_ABILITY 0
25 #define ACL_DEFAULT_UNMATCH_PERMIT 1
27 #define ACL_RULE_FREE 0
28 #define ACL_RULE_INAVAILABLE 1
29 #define ACL_RULE_CARETAG_MASK 0x1F
30 #define FILTER_POLICING_MAX 4
31 #define FILTER_LOGGING_MAX 8
32 #define FILTER_PATTERN_MAX 4
34 #define FILTER_ENACT_CVLAN_MASK 0x01
35 #define FILTER_ENACT_SVLAN_MASK 0x02
36 #define FILTER_ENACT_PRIORITY_MASK 0x04
37 #define FILTER_ENACT_POLICING_MASK 0x08
38 #define FILTER_ENACT_FWD_MASK 0x10
39 #define FILTER_ENACT_INTGPIO_MASK 0x20
40 #define FILTER_ENACT_INIT_MASK 0x3F
42 typedef enum rtk_filter_act_cactext_e
44 FILTER_ENACT_CACTEXT_VLANONLY
=0,
45 FILTER_ENACT_CACTEXT_BOTHVLANTAG
,
46 FILTER_ENACT_CACTEXT_TAGONLY
,
47 FILTER_ENACT_CACTEXT_END
,
50 }rtk_filter_act_cactext_t
;
52 typedef enum rtk_filter_act_ctagfmt_e
54 FILTER_CTAGFMT_UNTAG
=0,
57 FILTER_CTAGFMT_KEEP1PRMK
,
60 }rtk_filter_act_ctag_t
;
66 #define RTK_MAX_NUM_OF_FILTER_TYPE 5
67 #define RTK_MAX_NUM_OF_FILTER_FIELD 8
69 #define RTK_DOT_1AS_TIMESTAMP_UNIT_IN_WORD_LENGTH 3UL
70 #define RTK_IPV6_ADDR_WORD_LENGTH 4UL
72 #define FILTER_ENACT_CVLAN_TYPE(type) (type - FILTER_ENACT_CVLAN_INGRESS)
73 #define FILTER_ENACT_SVLAN_TYPE(type) (type - FILTER_ENACT_SVLAN_INGRESS)
74 #define FILTER_ENACT_FWD_TYPE(type) (type - FILTER_ENACT_ADD_DSTPORT)
75 #define FILTER_ENACT_PRI_TYPE(type) (type - FILTER_ENACT_PRIORITY)
77 #define RTK_FILTER_FIELD_USED_MAX 8
78 #define RTK_FILTER_FIELD_INDEX(template, index) ((template << 4) + index)
81 typedef enum rtk_filter_act_enable_e
84 FILTER_ENACT_CVLAN_INGRESS
= 0,
85 FILTER_ENACT_CVLAN_EGRESS
,
86 FILTER_ENACT_CVLAN_SVID
,
87 FILTER_ENACT_POLICING_1
,
90 FILTER_ENACT_SVLAN_INGRESS
,
91 FILTER_ENACT_SVLAN_EGRESS
,
92 FILTER_ENACT_SVLAN_CVID
,
93 FILTER_ENACT_POLICING_2
,
95 /* Policing and Logging */
96 FILTER_ENACT_POLICING_0
,
99 FILTER_ENACT_COPY_CPU
,
101 FILTER_ENACT_ADD_DSTPORT
,
102 FILTER_ENACT_REDIRECT
,
104 FILTER_ENACT_TRAP_CPU
,
105 FILTER_ENACT_ISOLATION
,
108 FILTER_ENACT_PRIORITY
,
109 FILTER_ENACT_DSCP_REMARK
,
110 FILTER_ENACT_1P_REMARK
,
111 FILTER_ENACT_POLICING_3
,
113 /* Interrutp and GPO */
114 FILTER_ENACT_INTERRUPT
,
118 FILTER_ENACT_EGRESSCTAG_UNTAG
,
119 FILTER_ENACT_EGRESSCTAG_TAG
,
120 FILTER_ENACT_EGRESSCTAG_KEEP
,
121 FILTER_ENACT_EGRESSCTAG_KEEPAND1PRMK
,
124 } rtk_filter_act_enable_t
;
129 rtk_filter_act_enable_t actEnable
[FILTER_ENACT_END
];
132 rtk_uint32 filterCvlanVid
;
133 rtk_uint32 filterCvlanIdx
;
135 rtk_uint32 filterSvlanVid
;
136 rtk_uint32 filterSvlanIdx
;
138 /* Policing action */
139 rtk_uint32 filterPolicingIdx
[FILTER_POLICING_MAX
];
141 /* Forwarding action */
142 rtk_portmask_t filterPortmask
;
145 rtk_uint32 filterPriority
;
148 rtk_uint32 filterPin
;
150 } rtk_filter_action_t
;
152 typedef struct rtk_filter_flag_s
158 typedef enum rtk_filter_care_tag_index_e
182 } rtk_filter_care_tag_index_t
;
184 typedef struct rtk_filter_care_tag_s
186 rtk_filter_flag_t tagType
[CARE_TAG_END
];
187 } rtk_filter_care_tag_t
;
189 typedef struct rtk_filter_field rtk_filter_field_t
;
193 rtk_uint32 value
[RTK_DOT_1AS_TIMESTAMP_UNIT_IN_WORD_LENGTH
];
194 } rtk_filter_dot1as_timestamp_t
;
196 typedef enum rtk_filter_field_data_type_e
198 FILTER_FIELD_DATA_MASK
= 0,
199 FILTER_FIELD_DATA_RANGE
,
200 FILTER_FIELD_DATA_END
,
201 } rtk_filter_field_data_type_t
;
203 typedef struct rtk_filter_ip_s
206 rtk_uint32 rangeStart
;
212 typedef struct rtk_filter_mac_s
217 rtk_mac_t rangeStart
;
221 typedef rtk_uint32 rtk_filter_op_t
;
223 typedef struct rtk_filter_value_s
228 rtk_uint32 rangeStart
;
231 } rtk_filter_value_t
;
233 typedef struct rtk_filter_activeport_s
235 rtk_portmask_t value
;
238 } rtk_filter_activeport_t
;
242 typedef struct rtk_filter_tag_s
244 rtk_filter_value_t pri
;
245 rtk_filter_flag_t cfi
;
246 rtk_filter_value_t vid
;
249 typedef struct rtk_filter_ipFlag_s
251 rtk_filter_flag_t xf
;
252 rtk_filter_flag_t mf
;
253 rtk_filter_flag_t df
;
254 } rtk_filter_ipFlag_t
;
258 rtk_uint32 addr
[RTK_IPV6_ADDR_WORD_LENGTH
];
259 } rtk_filter_ip6_addr_t
;
264 rtk_filter_ip6_addr_t value
;
265 rtk_filter_ip6_addr_t mask
;
266 rtk_filter_ip6_addr_t rangeStart
;
267 rtk_filter_ip6_addr_t rangeEnd
;
270 typedef rtk_uint32 rtk_filter_number_t
;
272 typedef struct rtk_filter_pattern_s
274 rtk_uint32 value
[FILTER_PATTERN_MAX
];
275 rtk_uint32 mask
[FILTER_PATTERN_MAX
];
276 } rtk_filter_pattern_t
;
278 typedef struct rtk_filter_tcpFlag_s
280 rtk_filter_flag_t urg
;
281 rtk_filter_flag_t ack
;
282 rtk_filter_flag_t psh
;
283 rtk_filter_flag_t rst
;
284 rtk_filter_flag_t syn
;
285 rtk_filter_flag_t fin
;
286 rtk_filter_flag_t ns
;
287 rtk_filter_flag_t cwr
;
288 rtk_filter_flag_t ece
;
289 } rtk_filter_tcpFlag_t
;
291 typedef rtk_uint32 rtk_filter_field_raw_t
;
293 typedef enum rtk_filter_field_temple_input_e
295 FILTER_FIELD_TEMPLE_INPUT_TYPE
= 0,
296 FILTER_FIELD_TEMPLE_INPUT_INDEX
,
297 FILTER_FIELD_TEMPLE_INPUT_MAX
,
298 } rtk_filter_field_temple_input_t
;
300 struct rtk_filter_field
302 rtk_uint32 fieldType
;
307 rtk_filter_mac_t dmac
;
308 rtk_filter_mac_t smac
;
309 rtk_filter_value_t etherType
;
310 rtk_filter_tag_t ctag
;
311 rtk_filter_tag_t relayCtag
;
312 rtk_filter_tag_t stag
;
313 rtk_filter_tag_t l2tag
;
314 rtk_filter_dot1as_timestamp_t dot1asTimeStamp
;
315 rtk_filter_mac_t mac
;
321 rtk_filter_value_t protocol
;
322 rtk_filter_value_t ipTos
;
323 rtk_filter_ipFlag_t ipFlag
;
324 rtk_filter_value_t ipOffset
;
325 rtk_filter_ip6_t sipv6
;
326 rtk_filter_ip6_t dipv6
;
327 rtk_filter_ip6_t ipv6
;
328 rtk_filter_value_t ipv6TrafficClass
;
329 rtk_filter_value_t ipv6NextHeader
;
330 rtk_filter_value_t flowLabel
;
333 rtk_filter_value_t tcpSrcPort
;
334 rtk_filter_value_t tcpDstPort
;
335 rtk_filter_tcpFlag_t tcpFlag
;
336 rtk_filter_value_t tcpSeqNumber
;
337 rtk_filter_value_t tcpAckNumber
;
338 rtk_filter_value_t udpSrcPort
;
339 rtk_filter_value_t udpDstPort
;
340 rtk_filter_value_t icmpCode
;
341 rtk_filter_value_t icmpType
;
342 rtk_filter_value_t igmpType
;
345 rtk_filter_pattern_t pattern
;
347 rtk_filter_value_t inData
;
349 } filter_pattern_union
;
351 rtk_uint32 fieldTemplateNo
;
352 rtk_uint32 fieldTemplateIdx
[RTK_FILTER_FIELD_USED_MAX
];
354 struct rtk_filter_field
*next
;
357 typedef enum rtk_filter_field_type_e
359 FILTER_FIELD_DMAC
= 0,
361 FILTER_FIELD_ETHERTYPE
,
365 FILTER_FIELD_IPV4_SIP
,
366 FILTER_FIELD_IPV4_DIP
,
367 FILTER_FIELD_IPV4_TOS
,
368 FILTER_FIELD_IPV4_PROTOCOL
,
369 FILTER_FIELD_IPV4_FLAG
,
370 FILTER_FIELD_IPV4_OFFSET
,
371 FILTER_FIELD_IPV6_SIPV6
,
372 FILTER_FIELD_IPV6_DIPV6
,
373 FILTER_FIELD_IPV6_TRAFFIC_CLASS
,
374 FILTER_FIELD_IPV6_NEXT_HEADER
,
376 FILTER_FIELD_TCP_SPORT
,
377 FILTER_FIELD_TCP_DPORT
,
378 FILTER_FIELD_TCP_FLAG
,
379 FILTER_FIELD_UDP_SPORT
,
380 FILTER_FIELD_UDP_DPORT
,
381 FILTER_FIELD_ICMP_CODE
,
382 FILTER_FIELD_ICMP_TYPE
,
383 FILTER_FIELD_IGMP_TYPE
,
385 FILTER_FIELD_VID_RANGE
,
386 FILTER_FIELD_IP_RANGE
,
387 FILTER_FIELD_PORT_RANGE
,
389 FILTER_FIELD_USER_DEFINED00
,
390 FILTER_FIELD_USER_DEFINED01
,
391 FILTER_FIELD_USER_DEFINED02
,
392 FILTER_FIELD_USER_DEFINED03
,
393 FILTER_FIELD_USER_DEFINED04
,
394 FILTER_FIELD_USER_DEFINED05
,
395 FILTER_FIELD_USER_DEFINED06
,
396 FILTER_FIELD_USER_DEFINED07
,
397 FILTER_FIELD_USER_DEFINED08
,
398 FILTER_FIELD_USER_DEFINED09
,
399 FILTER_FIELD_USER_DEFINED10
,
400 FILTER_FIELD_USER_DEFINED11
,
401 FILTER_FIELD_USER_DEFINED12
,
402 FILTER_FIELD_USER_DEFINED13
,
403 FILTER_FIELD_USER_DEFINED14
,
404 FILTER_FIELD_USER_DEFINED15
,
406 FILTER_FIELD_PATTERN_MATCH
,
409 } rtk_filter_field_type_t
;
412 typedef enum rtk_filter_field_type_raw_e
414 FILTER_FIELD_RAW_UNUSED
= 0,
415 FILTER_FIELD_RAW_DMAC_15_0
,
416 FILTER_FIELD_RAW_DMAC_31_16
,
417 FILTER_FIELD_RAW_DMAC_47_32
,
418 FILTER_FIELD_RAW_SMAC_15_0
,
419 FILTER_FIELD_RAW_SMAC_31_16
,
420 FILTER_FIELD_RAW_SMAC_47_32
,
421 FILTER_FIELD_RAW_ETHERTYPE
,
422 FILTER_FIELD_RAW_STAG
,
423 FILTER_FIELD_RAW_CTAG
,
425 FILTER_FIELD_RAW_IPV4_SIP_15_0
= 0x10,
426 FILTER_FIELD_RAW_IPV4_SIP_31_16
,
427 FILTER_FIELD_RAW_IPV4_DIP_15_0
,
428 FILTER_FIELD_RAW_IPV4_DIP_31_16
,
431 FILTER_FIELD_RAW_IPV6_SIP_15_0
= 0x20,
432 FILTER_FIELD_RAW_IPV6_SIP_31_16
,
433 FILTER_FIELD_RAW_IPV6_DIP_15_0
= 0x28,
434 FILTER_FIELD_RAW_IPV6_DIP_31_16
,
436 FILTER_FIELD_RAW_VIDRANGE
= 0x30,
437 FILTER_FIELD_RAW_IPRANGE
,
438 FILTER_FIELD_RAW_PORTRANGE
,
439 FILTER_FIELD_RAW_FIELD_VALID
,
441 FILTER_FIELD_RAW_FIELD_SELECT00
= 0x40,
442 FILTER_FIELD_RAW_FIELD_SELECT01
,
443 FILTER_FIELD_RAW_FIELD_SELECT02
,
444 FILTER_FIELD_RAW_FIELD_SELECT03
,
445 FILTER_FIELD_RAW_FIELD_SELECT04
,
446 FILTER_FIELD_RAW_FIELD_SELECT05
,
447 FILTER_FIELD_RAW_FIELD_SELECT06
,
448 FILTER_FIELD_RAW_FIELD_SELECT07
,
449 FILTER_FIELD_RAW_FIELD_SELECT08
,
450 FILTER_FIELD_RAW_FIELD_SELECT09
,
451 FILTER_FIELD_RAW_FIELD_SELECT10
,
452 FILTER_FIELD_RAW_FIELD_SELECT11
,
453 FILTER_FIELD_RAW_FIELD_SELECT12
,
454 FILTER_FIELD_RAW_FIELD_SELECT13
,
455 FILTER_FIELD_RAW_FIELD_SELECT14
,
456 FILTER_FIELD_RAW_FIELD_SELECT15
,
458 FILTER_FIELD_RAW_END
,
459 } rtk_filter_field_type_raw_t
;
461 typedef enum rtk_filter_flag_care_type_e
463 FILTER_FLAG_CARE_DONT_CARE
= 0,
467 } rtk_filter_flag_care_type_t
;
469 typedef rtk_uint32 rtk_filter_id_t
; /* filter id type */
471 typedef enum rtk_filter_invert_e
473 FILTER_INVERT_DISABLE
= 0,
474 FILTER_INVERT_ENABLE
,
476 } rtk_filter_invert_t
;
478 typedef rtk_uint32 rtk_filter_state_t
;
480 typedef rtk_uint32 rtk_filter_unmatch_action_t
;
482 typedef enum rtk_filter_unmatch_action_e
484 FILTER_UNMATCH_DROP
= 0,
485 FILTER_UNMATCH_PERMIT
,
487 } rtk_filter_unmatch_action_type_t
;
491 rtk_filter_field_t
*fieldHead
;
492 rtk_filter_care_tag_t careTag
;
493 rtk_filter_activeport_t activeport
;
495 rtk_filter_invert_t invert
;
500 rtk_filter_field_raw_t dataFieldRaw
[RTK_FILTER_RAW_FIELD_NUMBER
];
501 rtk_filter_field_raw_t careFieldRaw
[RTK_FILTER_RAW_FIELD_NUMBER
];
502 rtk_filter_field_type_raw_t fieldRawType
[RTK_FILTER_RAW_FIELD_NUMBER
];
503 rtk_filter_care_tag_t careTag
;
504 rtk_filter_activeport_t activeport
;
506 rtk_filter_invert_t invert
;
508 } rtk_filter_cfg_raw_t
;
513 rtk_filter_field_type_raw_t fieldType
[RTK_FILTER_RAW_FIELD_NUMBER
];
514 } rtk_filter_template_t
;
516 typedef enum rtk_field_sel_e
529 typedef enum rtk_filter_iprange_e
537 }rtk_filter_iprange_t
;
539 typedef enum rtk_filter_vidrange_e
545 }rtk_filter_vidrange_t
;
547 typedef enum rtk_filter_portrange_e
549 PORTRANGE_UNUSED
= 0,
553 }rtk_filter_portrange_t
;
556 * rtk_filter_igrAcl_init
558 * ACL initialization function
565 * RT_ERR_FAILED - Failed
566 * RT_ERR_SMI - SMI access error
567 * RT_ERR_NULL_POINTER - Pointer pFilter_field or pFilter_cfg point to NULL.
569 * This function enable and initialize ACL function
571 extern rtk_api_ret_t
rtk_filter_igrAcl_init(void);
574 * rtk_filter_igrAcl_field_add
576 * Add comparison rule to an ACL configuration
578 * pFilter_cfg - The ACL configuration that this function will add comparison rule
579 * pFilter_field - The comparison rule that will be added.
584 * RT_ERR_FAILED - Failed
585 * RT_ERR_SMI - SMI access error
586 * RT_ERR_NULL_POINTER - Pointer pFilter_field or pFilter_cfg point to NULL.
587 * RT_ERR_INPUT - Invalid input parameters.
589 * This function add a comparison rule (*pFilter_field) to an ACL configuration (*pFilter_cfg).
590 * Pointer pFilter_cfg points to an ACL configuration structure, this structure keeps multiple ACL
591 * comparison rules by means of linked list. Pointer pFilter_field will be added to linked
592 * list kept by structure that pFilter_cfg points to.
594 extern rtk_api_ret_t
rtk_filter_igrAcl_field_add(rtk_filter_cfg_t
*pFilter_cfg
, rtk_filter_field_t
*pFilter_field
);
597 * rtk_filter_igrAcl_cfg_add
599 * Add an ACL configuration to ASIC
601 * filter_id - Start index of ACL configuration.
602 * pFilter_cfg - The ACL configuration that this function will add comparison rule
603 * pFilter_action - Action(s) of ACL configuration.
605 * ruleNum - number of rules written in ACL table
608 * RT_ERR_FAILED - Failed
609 * RT_ERR_SMI - SMI access error
610 * RT_ERR_NULL_POINTER - Pointer pFilter_field or pFilter_cfg point to NULL.
611 * RT_ERR_INPUT - Invalid input parameters.
612 * RT_ERR_ENTRY_INDEX - Invalid filter_id .
613 * RT_ERR_NULL_POINTER - Pointer pFilter_action or pFilter_cfg point to NULL.
614 * RT_ERR_FILTER_INACL_ACT_NOT_SUPPORT - Action is not supported in this chip.
615 * RT_ERR_FILTER_INACL_RULE_NOT_SUPPORT - Rule is not supported.
617 * This function store pFilter_cfg, pFilter_action into ASIC. The starting
618 * index(es) is filter_id.
620 extern rtk_api_ret_t
rtk_filter_igrAcl_cfg_add(rtk_filter_id_t filter_id
, rtk_filter_cfg_t
*pFilter_cfg
, rtk_filter_action_t
*pAction
, rtk_filter_number_t
*ruleNum
);
623 * rtk_filter_igrAcl_cfg_del
625 * Delete an ACL configuration from ASIC
627 * filter_id - Start index of ACL configuration.
632 * RT_ERR_FAILED - Failed
633 * RT_ERR_SMI - SMI access error
634 * RT_ERR_FILTER_ENTRYIDX - Invalid filter_id.
636 * This function delete a group of ACL rules starting from filter_id.
638 extern rtk_api_ret_t
rtk_filter_igrAcl_cfg_del(rtk_filter_id_t filter_id
);
641 * rtk_filter_igrAcl_cfg_delAll
643 * Delete all ACL entries from ASIC
650 * RT_ERR_FAILED - Failed
651 * RT_ERR_SMI - SMI access error
653 * This function delete all ACL configuration from ASIC.
655 extern rtk_api_ret_t
rtk_filter_igrAcl_cfg_delAll(void);
658 * rtk_filter_igrAcl_cfg_get
660 * Get one ingress ACL configuration from ASIC.
662 * filter_id - Start index of ACL configuration.
664 * pFilter_cfg - buffer pointer of ingress ACL data
665 * pFilter_action - buffer pointer of ingress ACL action
668 * RT_ERR_FAILED - Failed
669 * RT_ERR_SMI - SMI access error
670 * RT_ERR_NULL_POINTER - Pointer pFilter_action or pFilter_cfg point to NULL.
671 * RT_ERR_FILTER_ENTRYIDX - Invalid entry index.
673 * This function delete all ACL configuration from ASIC.
675 extern rtk_api_ret_t
rtk_filter_igrAcl_cfg_get(rtk_filter_id_t filter_id
, rtk_filter_cfg_raw_t
*pFilter_cfg
, rtk_filter_action_t
*pAction
);
678 * rtk_filter_igrAcl_unmatchAction_set
680 * Set action to packets when no ACL configuration match
688 * RT_ERR_FAILED - Failed
689 * RT_ERR_SMI - SMI access error
690 * RT_ERR_PORT_ID - Invalid port id.
691 * RT_ERR_INPUT - Invalid input parameters.
693 * This function sets action of packets when no ACL configuration matches.
695 extern rtk_api_ret_t
rtk_filter_igrAcl_unmatchAction_set(rtk_port_t port
, rtk_filter_unmatch_action_t action
);
698 * rtk_filter_igrAcl_unmatchAction_get
700 * Get action to packets when no ACL configuration match
707 * RT_ERR_FAILED - Failed
708 * RT_ERR_SMI - SMI access error
709 * RT_ERR_PORT_ID - Invalid port id.
710 * RT_ERR_INPUT - Invalid input parameters.
712 * This function gets action of packets when no ACL configuration matches.
714 extern rtk_api_ret_t
rtk_filter_igrAcl_unmatchAction_get(rtk_port_t port
, rtk_filter_unmatch_action_t
* action
);
717 * rtk_filter_igrAcl_state_set
719 * Set state of ingress ACL.
722 * state - Ingress ACL state.
727 * RT_ERR_FAILED - Failed
728 * RT_ERR_SMI - SMI access error
729 * RT_ERR_PORT_ID - Invalid port id.
730 * RT_ERR_INPUT - Invalid input parameters.
732 * This function gets action of packets when no ACL configuration matches.
734 extern rtk_api_ret_t
rtk_filter_igrAcl_state_set(rtk_port_t port
, rtk_filter_state_t state
);
737 * rtk_filter_igrAcl_state_get
739 * Get state of ingress ACL.
743 * pState - Ingress ACL state.
746 * RT_ERR_FAILED - Failed
747 * RT_ERR_SMI - SMI access error
748 * RT_ERR_PORT_ID - Invalid port id.
749 * RT_ERR_INPUT - Invalid input parameters.
751 * This function gets action of packets when no ACL configuration matches.
753 extern rtk_api_ret_t
rtk_filter_igrAcl_state_get(rtk_port_t port
, rtk_filter_state_t
* state
);
756 * rtk_filter_igrAcl_template_set
758 * Set template of ingress ACL.
760 * template - Ingress ACL template
765 * RT_ERR_FAILED - Failed
766 * RT_ERR_SMI - SMI access error
767 * RT_ERR_INPUT - Invalid input parameters.
769 * This function set ACL template.
771 extern rtk_api_ret_t
rtk_filter_igrAcl_template_set(rtk_filter_template_t
*aclTemplate
);
774 * rtk_filter_igrAcl_template_get
776 * Get template of ingress ACL.
778 * template - Ingress ACL template
783 * RT_ERR_FAILED - Failed
784 * RT_ERR_SMI - SMI access error
786 * This function gets template of ACL.
788 extern rtk_api_ret_t
rtk_filter_igrAcl_template_get(rtk_filter_template_t
*aclTemplate
);
791 * rtk_filter_igrAcl_field_sel_set
793 * Set user defined field selectors in HSB
795 * index - index of field selector 0-15
796 * format - Format of field selector
797 * offset - Retrieving data offset
802 * RT_ERR_FAILED - Failed
803 * RT_ERR_SMI - SMI access error
805 * System support 16 user defined field selectors.
806 * Each selector can be enabled or disable.
807 * User can defined retrieving 16-bits in many predefiend
808 * standard l2/l3/l4 payload.
810 extern rtk_api_ret_t
rtk_filter_igrAcl_field_sel_set(rtk_uint32 index
, rtk_field_sel_t format
, rtk_uint32 offset
);
813 * rtk_filter_igrAcl_field_sel_get
815 * Get user defined field selectors in HSB
817 * index - index of field selector 0-15
819 * pFormat - Format of field selector
820 * pOffset - Retrieving data offset
823 * RT_ERR_FAILED - Failed
824 * RT_ERR_SMI - SMI access error
828 extern rtk_api_ret_t
rtk_filter_igrAcl_field_sel_get(rtk_uint32 index
, rtk_field_sel_t
*pFormat
, rtk_uint32
*pOffset
);
831 * rtk_filter_iprange_set
835 * index - index of IP Range 0-15
836 * type - IP Range check type, 0:Delete a entry, 1: IPv4_SIP, 2: IPv4_DIP, 3:IPv6_SIP, 4:IPv6_DIP
837 * upperIp - The upper bound of IP range
838 * lowerIp - The lower Bound of IP range
843 * RT_ERR_FAILED - Failed
844 * RT_ERR_SMI - SMI access error
845 * RT_ERR_OUT_OF_RANGE - The parameter is out of range
846 * RT_ERR_INPUT - Input error
848 * upperIp must be larger or equal than lowerIp.
850 extern rtk_api_ret_t
rtk_filter_iprange_set(rtk_uint32 index
, rtk_filter_iprange_t type
, ipaddr_t upperIp
, ipaddr_t lowerIp
);
853 * rtk_filter_iprange_get
857 * index - index of IP Range 0-15
859 * pType - IP Range check type, 0:Delete a entry, 1: IPv4_SIP, 2: IPv4_DIP, 3:IPv6_SIP, 4:IPv6_DIP
860 * pUpperIp - The upper bound of IP range
861 * pLowerIp - The lower Bound of IP range
864 * RT_ERR_FAILED - Failed
865 * RT_ERR_SMI - SMI access error
866 * RT_ERR_OUT_OF_RANGE - The parameter is out of range
868 * upperIp must be larger or equal than lowerIp.
870 extern rtk_api_ret_t
rtk_filter_iprange_get(rtk_uint32 index
, rtk_filter_iprange_t
*pType
, ipaddr_t
*pUpperIp
, ipaddr_t
*pLowerIp
);
873 * rtk_filter_vidrange_set
875 * Set VID Range check
877 * index - index of VID Range 0-15
878 * type - IP Range check type, 0:Delete a entry, 1: CVID, 2: SVID
879 * upperVid - The upper bound of VID range
880 * lowerVid - The lower Bound of VID range
885 * RT_ERR_FAILED - Failed
886 * RT_ERR_SMI - SMI access error
887 * RT_ERR_OUT_OF_RANGE - The parameter is out of range
888 * RT_ERR_INPUT - Input error
890 * upperVid must be larger or equal than lowerVid.
892 extern rtk_api_ret_t
rtk_filter_vidrange_set(rtk_uint32 index
, rtk_filter_vidrange_t type
, rtk_uint32 upperVid
, rtk_uint32 lowerVid
);
895 * rtk_filter_vidrange_get
897 * Get VID Range check
899 * index - index of VID Range 0-15
901 * pType - IP Range check type, 0:Unused, 1: CVID, 2: SVID
902 * pUpperVid - The upper bound of VID range
903 * pLowerVid - The lower Bound of VID range
906 * RT_ERR_FAILED - Failed
907 * RT_ERR_SMI - SMI access error
908 * RT_ERR_OUT_OF_RANGE - The parameter is out of range
912 extern rtk_api_ret_t
rtk_filter_vidrange_get(rtk_uint32 index
, rtk_filter_vidrange_t
*pType
, rtk_uint32
*pUpperVid
, rtk_uint32
*pLowerVid
);
915 * rtk_filter_portrange_set
917 * Set Port Range check
919 * index - index of Port Range 0-15
920 * type - IP Range check type, 0:Delete a entry, 1: Source Port, 2: Destination Port
921 * upperPort - The upper bound of Port range
922 * lowerPort - The lower Bound of Port range
927 * RT_ERR_FAILED - Failed
928 * RT_ERR_SMI - SMI access error
929 * RT_ERR_OUT_OF_RANGE - The parameter is out of range
930 * RT_ERR_INPUT - Input error
932 * upperPort must be larger or equal than lowerPort.
934 extern rtk_api_ret_t
rtk_filter_portrange_set(rtk_uint32 index
, rtk_filter_portrange_t type
, rtk_uint32 upperPort
, rtk_uint32 lowerPort
);
937 * rtk_filter_portrange_get
939 * Set Port Range check
941 * index - index of Port Range 0-15
943 * pType - IP Range check type, 0:Delete a entry, 1: Source Port, 2: Destination Port
944 * pUpperPort - The upper bound of Port range
945 * pLowerPort - The lower Bound of Port range
948 * RT_ERR_FAILED - Failed
949 * RT_ERR_SMI - SMI access error
950 * RT_ERR_OUT_OF_RANGE - The parameter is out of range
951 * RT_ERR_INPUT - Input error
955 extern rtk_api_ret_t
rtk_filter_portrange_get(rtk_uint32 index
, rtk_filter_portrange_t
*pType
, rtk_uint32
*pUpperPort
, rtk_uint32
*pLowerPort
);
958 * rtk_filter_igrAclPolarity_set
960 * Set ACL Goip control polarity
962 * polarity - 1: High, 0: Low
966 * RT_ERR_OK - Success
967 * RT_ERR_SMI - SMI access error
971 extern rtk_api_ret_t
rtk_filter_igrAclPolarity_set(rtk_uint32 polarity
);
974 * rtk_filter_igrAclPolarity_get
976 * Get ACL Goip control polarity
978 * pPolarity - 1: High, 0: Low
982 * RT_ERR_OK - Success
983 * RT_ERR_SMI - SMI access error
987 extern rtk_api_ret_t
rtk_filter_igrAclPolarity_get(rtk_uint32
* pPolarity
);
990 #endif /* __RTK_API_ACL_H__ */