summaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files/include/net/rtl/rtl865x_netif.h
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/realtek/files/include/net/rtl/rtl865x_netif.h')
-rw-r--r--target/linux/realtek/files/include/net/rtl/rtl865x_netif.h527
1 files changed, 527 insertions, 0 deletions
diff --git a/target/linux/realtek/files/include/net/rtl/rtl865x_netif.h b/target/linux/realtek/files/include/net/rtl/rtl865x_netif.h
new file mode 100644
index 000000000..e2c0c956e
--- /dev/null
+++ b/target/linux/realtek/files/include/net/rtl/rtl865x_netif.h
@@ -0,0 +1,527 @@
+/*
+* Copyright c Realtek Semiconductor Corporation, 2008
+* All rights reserved.
+*
+* Program : network interface driver header file
+* Abstract :
+* Author : hyking (hyking_liu@realsil.com.cn)
+*/
+
+#ifndef RTL865X_NETIF_H
+#define RTL865X_NETIF_H
+#include "rtl_types.h"
+
+#define IF_NONE 0
+#define IF_ETHER 1
+#define IF_PPPOE 2
+#define IF_PPTP 3
+#define IF_L2TP 4
+
+#define RTL865X_ACL_IPV6_USED -30000
+#define RTL865X_ACL_QOS_USED2 -20002 /* dummy queue for iptable 2 acl translate */
+#define RTL865X_ACL_QOS_USED1 -20000 /* for default queue */
+#define RTL865X_ACL_QOS_USED0 -20001 /* for user add queue */
+#define RTL865X_ACL_MULTIWAN_USED -15000 /*for multiwan*/
+
+#define RTL865X_ACL_USER_USED 0
+
+#if 1 //def CONFIG_RTL_LAYERED_DRIVER_ACL
+typedef struct _rtl865x_AclRule_s
+{
+ union
+ {
+ /* MAC ACL rule */
+ struct {
+ ether_addr_t _dstMac, _dstMacMask;
+ ether_addr_t _srcMac, _srcMacMask;
+ uint16 _typeLen, _typeLenMask;
+ } MAC;
+
+ /* IP Group ACL rule */
+ struct
+ {
+ ipaddr_t _srcIpAddr, _srcIpAddrMask;
+ ipaddr_t _dstIpAddr, _dstIpAddrMask;
+ uint8 _tos, _tosMask;
+ union
+ {
+ /* IP ACL rle */
+ struct
+ {
+ uint8 _proto, _protoMask, _flagMask;// flag & flagMask only last 3-bit is meaning ful
+ uint32 _FOP:1, _FOM:1, _httpFilter:1, _httpFilterM:1, _identSrcDstIp:1, _identSrcDstIpM:1;
+ union
+ {
+ uint8 _flag;
+ struct
+ {
+ uint8 pend1:5,
+ pend2:1,
+ _DF:1, //don't fragment flag
+ _MF:1; //more fragments flag
+ } s;
+ } un;
+ } ip;
+
+ /* ICMP ACL rule */
+ struct
+ {
+ uint8 _type, _typeMask, _code, _codeMask;
+ } icmp;
+
+ /* IGMP ACL rule */
+ struct
+ {
+ uint8 _type, _typeMask;
+ } igmp;
+
+ /* TCP ACL rule */
+ struct
+ {
+ uint8 _flagMask;
+ uint16 _srcPortUpperBound, _srcPortLowerBound;
+ uint16 _dstPortUpperBound, _dstPortLowerBound;
+ union
+ {
+ uint8 _flag;
+ struct
+ {
+ uint8 _pend:2,
+ _urg:1, //urgent bit
+ _ack:1, //ack bit
+ _psh:1, //push bit
+ _rst:1, //reset bit
+ _syn:1, //sync bit
+ _fin:1; //fin bit
+ }s;
+ }un;
+ }tcp;
+
+ /* UDP ACL rule */
+ struct
+ {
+ uint16 _srcPortUpperBound, _srcPortLowerBound;
+ uint16 _dstPortUpperBound, _dstPortLowerBound;
+ }udp;
+ }is;
+ }L3L4;
+
+ /* Source filter ACL rule */
+ struct
+ {
+ ether_addr_t _srcMac, _srcMacMask;
+ uint16 _srcPort, _srcPortMask;
+ uint16 _srcVlanIdx, _srcVlanIdxMask;
+ ipaddr_t _srcIpAddr, _srcIpAddrMask;
+ uint16 _srcPortUpperBound, _srcPortLowerBound;
+ uint32 _ignoreL4:1, //L2 rule
+ _ignoreL3L4:1; //L3 rule
+ } SRCFILTER;
+
+ /* Destination filter ACL rule */
+ struct
+ {
+ ether_addr_t _dstMac, _dstMacMask;
+ uint16 _vlanIdx, _vlanIdxMask;
+ ipaddr_t _dstIpAddr, _dstIpAddrMask;
+ uint16 _dstPortUpperBound, _dstPortLowerBound;
+ uint32 _ignoreL4:1, //L3 rule
+ _ignoreL3L4:1; //L2 rule
+ } DSTFILTER;
+#if defined(CONFIG_RTL_QOS_8021P_SUPPORT)
+ struct {
+ uint8 vlanTagPri;
+ } VLANTAG;
+#endif
+ }un_ty;
+
+
+ uint32 ruleType_:5,
+ actionType_:4,
+ pktOpApp_:3,
+ priority_:3,
+ direction_:2,
+#if defined(CONFIG_RTL_HW_QOS_SUPPORT)
+ upDown_:1,//0: uplink acl rule for hw qos; 1: downlink acl rule for hw qos
+#endif
+ nexthopIdx_:5, /* Index of nexthop table (NOT L2 table) */ /* used as network interface index for 865xC qos system */
+ ratelimtIdx_:4; /* Index of rate limit table */ /* used as outputQueue index for 865xC qos system */
+
+
+ uint32 netifIdx_:3, /*for redirect*/
+ pppoeIdx_:3, /*for redirect*/
+ L2Idx_:10, /* Index of L2 table */
+ inv_flag:8, /*mainly for iptables-->acl rule, when iptables rule has invert netif flag, this acl rule is added to other netifs*/
+ aclIdx:7; /* aisc entry idx */
+
+ struct _rtl865x_AclRule_s *pre,*next;
+
+}rtl865x_AclRule_t;
+
+
+/* MAC ACL rule Definition */
+#define dstMac_ un_ty.MAC._dstMac
+#define dstMacMask_ un_ty.MAC._dstMacMask
+#define srcMac_ un_ty.MAC._srcMac
+#define srcMacMask_ un_ty.MAC._srcMacMask
+#define typeLen_ un_ty.MAC._typeLen
+#define typeLenMask_ un_ty.MAC._typeLenMask
+
+/* Common IP ACL Rule Definition */
+#define srcIpAddr_ un_ty.L3L4._srcIpAddr
+#define srcIpAddrMask_ un_ty.L3L4._srcIpAddrMask
+#define srcIpAddrUB_ un_ty.L3L4._srcIpAddr
+#define srcIpAddrLB_ un_ty.L3L4._srcIpAddrMask
+#define dstIpAddr_ un_ty.L3L4._dstIpAddr
+#define dstIpAddrMask_ un_ty.L3L4._dstIpAddrMask
+#define dstIpAddrUB_ un_ty.L3L4._dstIpAddr
+#define dstIpAddrLB_ un_ty.L3L4._dstIpAddrMask
+#define tos_ un_ty.L3L4._tos
+#define tosMask_ un_ty.L3L4._tosMask
+/* IP Rrange */
+/*Hyking:Asic use Addr to srore Upper address
+ and use Mask to store Lower address
+*/
+#define srcIpAddrStart_ un_ty.L3L4._srcIpAddrMask
+#define srcIpAddrEnd_ un_ty.L3L4._srcIpAddr
+#define dstIpAddrStart_ un_ty.L3L4._dstIpAddrMask
+#define dstIpAddrEnd_ un_ty.L3L4._dstIpAddr
+
+/* IP ACL Rule Definition */
+#define ipProto_ un_ty.L3L4.is.ip._proto
+#define ipProtoMask_ un_ty.L3L4.is.ip._protoMask
+#define ipFlagMask_ un_ty.L3L4.is.ip._flagMask
+#define ipFOP_ un_ty.L3L4.is.ip._FOP
+#define ipFOM_ un_ty.L3L4.is.ip._FOM
+#define ipHttpFilter_ un_ty.L3L4.is.ip._httpFilter
+#define ipHttpFilterM_ un_ty.L3L4.is.ip._httpFilterM
+#define ipIdentSrcDstIp_ un_ty.L3L4.is.ip._identSrcDstIp
+#define ipIdentSrcDstIpM_ un_ty.L3L4.is.ip._identSrcDstIpM
+#define ipFlag_ un_ty.L3L4.is.ip.un._flag
+#define ipDF_ un_ty.L3L4.is.ip.un.s._DF
+#define ipMF_ un_ty.L3L4.is.ip.un.s._MF
+
+/* ICMP ACL Rule Definition */
+#define icmpType_ un_ty.L3L4.is.icmp._type
+#define icmpTypeMask_ un_ty.L3L4.is.icmp._typeMask
+#define icmpCode_ un_ty.L3L4.is.icmp._code
+#define icmpCodeMask_ un_ty.L3L4.is.icmp._codeMask
+
+/* IGMP ACL Rule Definition */
+#define igmpType_ un_ty.L3L4.is.igmp._type
+#define igmpTypeMask_ un_ty.L3L4.is.igmp._typeMask
+
+/* TCP ACL Rule Definition */
+#define tcpSrcPortUB_ un_ty.L3L4.is.tcp._srcPortUpperBound
+#define tcpSrcPortLB_ un_ty.L3L4.is.tcp._srcPortLowerBound
+#define tcpDstPortUB_ un_ty.L3L4.is.tcp._dstPortUpperBound
+#define tcpDstPortLB_ un_ty.L3L4.is.tcp._dstPortLowerBound
+#define tcpFlagMask_ un_ty.L3L4.is.tcp._flagMask
+#define tcpFlag_ un_ty.L3L4.is.tcp.un._flag
+#define tcpURG_ un_ty.L3L4.is.tcp.un.s._urg
+#define tcpACK_ un_ty.L3L4.is.tcp.un.s._ack
+#define tcpPSH_ un_ty.L3L4.is.tcp.un.s._psh
+#define tcpRST_ un_ty.L3L4.is.tcp.un.s._rst
+#define tcpSYN_ un_ty.L3L4.is.tcp.un.s._syn
+#define tcpFIN_ un_ty.L3L4.is.tcp.un.s._fin
+
+/* UDP ACL Rule Definition */
+#define udpSrcPortUB_ un_ty.L3L4.is.udp._srcPortUpperBound
+#define udpSrcPortLB_ un_ty.L3L4.is.udp._srcPortLowerBound
+#define udpDstPortUB_ un_ty.L3L4.is.udp._dstPortUpperBound
+#define udpDstPortLB_ un_ty.L3L4.is.udp._dstPortLowerBound
+
+/* Source Filter ACL Rule Definition */
+#define srcFilterMac_ un_ty.SRCFILTER._srcMac
+#define srcFilterMacMask_ un_ty.SRCFILTER._srcMacMask
+#define srcFilterPort_ un_ty.SRCFILTER._srcPort
+#define srcFilterPortMask_ un_ty.SRCFILTER._srcPortMask
+#define srcFilterVlanIdx_ un_ty.SRCFILTER._srcVlanIdx
+#define srcFilterVlanId_ un_ty.SRCFILTER._srcVlanIdx
+#define srcFilterVlanIdxMask_ un_ty.SRCFILTER._srcVlanIdxMask
+#define srcFilterVlanIdMask_ un_ty.SRCFILTER._srcVlanIdxMask
+#define srcFilterIpAddr_ un_ty.SRCFILTER._srcIpAddr
+#define srcFilterIpAddrMask_ un_ty.SRCFILTER._srcIpAddrMask
+#define srcFilterIpAddrUB_ un_ty.SRCFILTER._srcIpAddr
+#define srcFilterIpAddrLB_ un_ty.SRCFILTER._srcIpAddrMask
+#define srcFilterPortUpperBound_ un_ty.SRCFILTER._srcPortUpperBound
+#define srcFilterPortLowerBound_ un_ty.SRCFILTER._srcPortLowerBound
+#define srcFilterIgnoreL3L4_ un_ty.SRCFILTER._ignoreL3L4
+#define srcFilterIgnoreL4_ un_ty.SRCFILTER._ignoreL4
+
+/* Destination Filter ACL Rule Definition */
+#define dstFilterMac_ un_ty.DSTFILTER._dstMac
+#define dstFilterMacMask_ un_ty.DSTFILTER._dstMacMask
+#define dstFilterVlanIdx_ un_ty.DSTFILTER._vlanIdx
+#define dstFilterVlanIdxMask_ un_ty.DSTFILTER._vlanIdxMask
+#define dstFilterVlanId_ un_ty.DSTFILTER._vlanIdx
+#define dstFilterVlanIdMask_ un_ty.DSTFILTER._vlanIdxMask
+#define dstFilterIpAddr_ un_ty.DSTFILTER._dstIpAddr
+#define dstFilterIpAddrMask_ un_ty.DSTFILTER._dstIpAddrMask
+#define dstFilterPortUpperBound_ un_ty.DSTFILTER._dstPortUpperBound
+#define dstFilterIpAddrUB_ un_ty.DSTFILTER._dstIpAddr
+#define dstFilterIpAddrLB_ un_ty.DSTFILTER._dstIpAddrMask
+#define dstFilterPortLowerBound_ un_ty.DSTFILTER._dstPortLowerBound
+#define dstFilterIgnoreL3L4_ un_ty.DSTFILTER._ignoreL3L4
+#define dstFilterIgnoreL4_ un_ty.DSTFILTER._ignoreL4
+#if defined(CONFIG_RTL_QOS_8021P_SUPPORT)
+#define vlanTagPri_ un_ty.VLANTAG.vlanTagPri
+#endif
+#endif //CONFIG_RTL_LAYERED_DRIVER_ACL
+
+/* ACL Rule Action type Definition */
+#define RTL865X_ACL_PERMIT 0x00
+#define RTL865X_ACL_REDIRECT_ETHER 0x01
+#define RTL865X_ACL_DROP 0x02
+#define RTL865X_ACL_TOCPU 0x03
+#define RTL865X_ACL_LEGACY_DROP 0x04
+#define RTL865X_ACL_DROPCPU_LOG 0x05
+#define RTL865X_ACL_MIRROR 0x06
+#define RTL865X_ACL_REDIRECT_PPPOE 0x07
+#define RTL865X_ACL_DEFAULT_REDIRECT 0x08
+#define RTL865X_ACL_MIRROR_KEEP_MATCH 0x09
+#define RTL865X_ACL_DROP_RATE_EXCEED_PPS 0x0a
+#define RTL865X_ACL_LOG_RATE_EXCEED_PPS 0x0b
+#define RTL865X_ACL_DROP_RATE_EXCEED_BPS 0x0c
+#define RTL865X_ACL_LOG_RATE_EXCEED_BPS 0x0d
+#define RTL865X_ACL_PRIORITY 0x0e
+
+/* ACL Rule type Definition */
+#define RTL865X_ACL_MAC 0x00
+#define RTL865X_ACL_DSTFILTER_IPRANGE 0x01
+#define RTL865X_ACL_IP 0x02
+#define RTL865X_ACL_ICMP 0x04
+#define RTL865X_ACL_IGMP 0x05
+#define RTL865X_ACL_TCP 0x06
+#define RTL865X_ACL_UDP 0x07
+#define RTL865X_ACL_SRCFILTER 0x08
+#define RTL865X_ACL_DSTFILTER 0x09
+#define RTL865X_ACL_IP_RANGE 0x0A
+#define RTL865X_ACL_SRCFILTER_IPRANGE 0x0B
+#define RTL865X_ACL_ICMP_IPRANGE 0x0C
+#define RTL865X_ACL_IGMP_IPRANGE 0x0D
+#define RTL865X_ACL_TCP_IPRANGE 0x0E
+#define RTL865X_ACL_UDP_IPRANGE 0x0F
+
+#if defined(CONFIG_RTL_QOS_8021P_SUPPORT)
+/* dummy acl type for qos */
+#define RTL865X_ACL_802D1P 0x1f
+#endif
+
+/* For PktOpApp */
+#define RTL865X_ACL_ONLY_L2 1 /* Only for L2 switch */
+#define RTL865X_ACL_ONLY_L3 2 /* Only for L3 routing (including IP multicast) */
+#define RTL865X_ACL_L2_AND_L3 3 /* Only for L2 switch and L3 routing (including IP multicast) */
+#define RTL865X_ACL_ONLY_L4 4 /* Only for L4 translation packets */
+#define RTL865X_ACL_L3_AND_L4 6 /* Only for L3 routing and L4 translation packets (including IP multicast) */
+#define RTL865X_ACL_ALL_LAYER 7 /* No operation. Don't apply this rule. */
+
+#define RTL865X_ACL_MAX_NUMBER 125
+//#define RTL865X_ACL_MAX_NUMBER 64
+#define RTL865X_ACL_RESERVED_NUMBER 3
+
+#define RTL865X_ACLTBL_ALL_TO_CPU 127 // This rule is always "To CPU"
+#define RTL865X_ACLTBL_DROP_ALL 126 //This rule is always "Drop"
+#define RTL865X_ACLTBL_PERMIT_ALL 125 // This rule is always "Permit"
+
+#define MAX_IFNAMESIZE 16
+#define NETIF_NUMBER 8
+
+/*invert flag*/
+#define RTL865X_INVERT_IN_NETIF 0x01
+#define RTL865X_INVERT_OUT_NETIF 0x02
+
+/*ingress or egress flag*/
+#define RTL865X_ACL_INGRESS 0 /*ingress acl*/
+#define RTL865X_ACL_EGRESS 1 /*egress acl*/
+
+#define RTL_DEV_NAME_NUM(name,num) name#num
+
+#define RTL_BR_NAME "br0"
+#define RTL_WLAN_NAME "wlan"
+//flowing name in driver DO NOT duplicate
+#if defined(CONFIG_BRIDGE)
+#define RTL_DRV_LAN_NETIF_NAME "br0"
+#else
+#define RTL_DRV_LAN_NETIF_NAME "eth0"
+#endif
+
+#define RTL_DRV_WAN0_NETIF_NAME "eth1"
+#if defined(CONFIG_RTL_MULTIPLE_WAN)
+#define RTL_DRV_WAN1_NETIF_NAME "eth6"
+#endif
+#define RTL_DRV_PPP_NETIF_NAME "ppp0"
+
+#define RTL_DRV_LAN_P0_NETIF_NAME RTL_DRV_LAN_NETIF_NAME
+#define RTL_DRV_LAN_P1_NETIF_NAME "eth2"
+#define RTL_DRV_LAN_P2_NETIF_NAME "eth3"
+#define RTL_DRV_LAN_P3_NETIF_NAME "eth4"
+#define RTL_DRV_LAN_P4_NETIF_NAME RTL_DRV_WAN0_NETIF_NAME
+#define RTL_DRV_LAN_P5_NETIF_NAME "eth5"
+
+/************************************
+* const variable defination
+*************************************/
+#define RTL_WANVLANID 8
+#define RTL_LANVLANID 9
+#if defined(CONFIG_RTL_MULTIPLE_WAN)
+#define RTL_WAN_1_VLANID 369
+#endif
+#if defined(CONFIG_RTL8196_RTL8366)
+ #define RTL_WANPORT_MASK 0x1C1
+ #define RTL_LANPORT_MASK 0x1C1
+ #define RTL8366RB_GMIIPORT 0x20
+ #define RTL8366RB_LANPORT 0xCf
+ #define RTL8366RB_WANPORT 0x10
+#elif defined(CONFIG_RTL_819X) && (defined(CONFIG_RTK_VLAN_SUPPORT) || defined (CONFIG_RTL_MULTI_LAN_DEV))
+#if defined (CONFIG_POCKET_ROUTER_SUPPORT)
+ #define RTL_WANPORT_MASK 0x10
+ #define RTL_LANPORT_MASK 0x10
+#elif defined(CONFIG_RTL_PUBLIC_SSID)
+ #define RTL_WANPORT_MASK 0x110 //port 4/port 8
+ #define RTL_LANPORT_MASK 0x10f
+#elif defined(CONFIG_8198_PORT5_RGMII)
+ #define RTL_WANPORT_MASK 0x10
+ #define RTL_LANPORT_MASK 0x12f
+#else
+ #if defined (CONFIG_RTL_8196C_iNIC)
+ #define RTL_WANPORT_MASK 0x01
+ #define RTL_LANPORT_MASK 0x110 //mark_inic , only port4 connect to MII
+ #elif defined (CONFIG_RTK_INBAND_HOST_HACK)
+ #if defined (CONFIG_8198_PORT5_GMII)
+ #define RTL_WANPORT_MASK 0x120 //port5 ,hack port,eth1
+ #define RTL_LANPORT_MASK 0x11f // 0~4 port eth0
+ #else
+ #define RTL_WANPORT_MASK 0x110 //port4(port0 in some board) is eth1
+ #define RTL_LANPORT_MASK 0x12f // 0 1 2 3 5 port are eth0
+ #endif
+ #elif defined (CONFIG_8198_PORT5_GMII)
+ #define RTL_WANPORT_MASK 0x10 //port0
+ #define RTL_LANPORT_MASK 0x12f //all port eth0
+ #else
+ #define RTL_WANPORT_MASK 0x10
+ #define RTL_LANPORT_MASK 0x10f
+ #endif
+#endif
+ #define RTL_LANPORT_MASK_1 0x8 //port 0
+ #define RTL_LANPORT_MASK_2 0x4 //port 1
+ #define RTL_LANPORT_MASK_3 0x2 //port 2
+ #define RTL_LANPORT_MASK_4 0x1 //port 3
+ #ifdef CONFIG_8198_PORT5_GMII
+ #define RTL_LANPORT_MASK_5 0x20 //port 5
+ #endif
+#elif defined(CONFIG_RTL_8198_NFBI_BOARD)
+ #define RTL_WANPORT_MASK 0x1e0 //port 5, port 6,port 7,port 8
+ #define RTL_LANPORT_MASK 0x1df //port 0~4 , port 6~8 , need port4 ??
+#elif defined(CONFIG_8198_PORT5_GMII)
+ #define RTL_WANPORT_MASK 0x110
+ #define RTL_LANPORT_MASK 0x1ef
+#elif defined (CONFIG_POCKET_ROUTER_SUPPORT)
+ #define RTL_WANPORT_MASK 0x10
+ #define RTL_LANPORT_MASK 0x10
+#elif defined(CONFIG_RTL_PUBLIC_SSID)
+ #define RTL_WANPORT_MASK 0x110 //port 4/port 8
+#elif defined(CONFIG_RTL8186_KB_N) || defined(CONFIG_RTL_819X) /* defined(CONFIG_RTL8196_RTL8366) */
+ #ifdef CONFIG_RTL_8196C_iNIC
+ #define RTL_WANPORT_MASK 0x01
+ #define RTL_LANPORT_MASK 0x110 //mark_inic , only port4 connect to MII
+ #else
+ #define RTL_WANPORT_MASK 0x10
+ #define RTL_LANPORT_MASK 0x10f
+ #endif
+#else
+ #define RTL_WANPORT_MASK 0x01
+ #define RTL_LANPORT_MASK 0x11e /* port1/2/3/4/cpu port(port 8) */
+ #if defined(CONFIG_RTK_VLAN_SUPPORT) || defined (CONFIG_RTL_MULTI_LAN_DEV)
+ #define RTL_LANPORT_MASK_1 0x2 //port 1
+ #define RTL_LANPORT_MASK_2 0x4 //port 2
+ #define RTL_LANPORT_MASK_3 0x8 //port 3
+ #define RTL_LANPORT_MASK_4 0x10 //port 4
+ #endif
+#endif /* defined(CONFIG_RTL8186_KB_N) || defined(CONFIG_RTL_819X) */
+
+#if defined(CONFIG_RTK_VLAN_SUPPORT) || defined (CONFIG_RTL_MULTI_LAN_DEV)
+#if defined(CONFIG_8198_PORT5_GMII)
+ #define ETH_INTF_NUM 6
+#else
+ #define ETH_INTF_NUM 5
+#endif
+#else
+#define ETH_INTF_NUM 2
+#endif
+
+typedef struct rtl865x_netif_s
+{
+ uint16 vid; /*netif->vid*/
+ uint16 mtu; /*netif's MTU*/
+ uint32 if_type:5; /*interface type, 0:ether,1:pppoe....*/
+ ether_addr_t macAddr;
+ uint32 is_wan:1, /*wan interface?*/
+ dmz:1, /*DMZ/routing lan*/
+ is_slave:1; /*is slave interface?*/
+ uint8 name[MAX_IFNAMESIZE];
+ uint16 enableRoute;
+#if defined (CONFIG_RTL_LOCAL_PUBLIC)
+ uint16 forMacBasedMCast;
+#endif
+}rtl865x_netif_t;
+
+/*internal...*/
+int32 _rtl865x_getAclFromAsic(int32 index, rtl865x_AclRule_t *rule);
+
+int32 rtl865x_init_acl(void);
+int32 rtl865x_reinit_acl(void);
+int32 rtl865x_add_acl(rtl865x_AclRule_t *rule, char *netifName, int32 chainNo);
+int32 rtl865x_del_acl(rtl865x_AclRule_t *rule, char *netifName, int32 chainNo);
+int32 rtl865x_regist_aclChain(char *netifName, int32 priority, uint32 flag);
+int32 rtl865x_unRegist_aclChain(char *netifName, int32 priority, uint32 flag);
+int32 rtl865x_flush_allAcl_fromChain(char *netifName, int32 priority, uint32 flag);
+int32 rtl865x_show_allAclChains(void);
+rtl865x_AclRule_t* rtl865x_matched_layer4_aclChain(char *netifName,int32 priority, uint32 flag, rtl865x_AclRule_t *match);
+rtl865x_AclRule_t* rtl865x_matched_layer2_aclChain(char *netifName,int32 priority, uint32 flag, rtl865x_AclRule_t *match);
+//int32 rtl865x_add_def_permit_acl(void);
+//int32 rtl865x_del_def_permit_acl(void);
+
+#if defined(CONFIG_RTK_VLAN_SUPPORT)
+int32 rtl865x_enable_acl(uint32 enable);
+#endif
+int rtl865x_add_pattern_acl_for_contentFilter(rtl865x_AclRule_t *rule,char *netifName);
+int rtl865x_del_pattern_acl_for_contentFilter(rtl865x_AclRule_t *rule,char *netifName);
+
+
+#ifdef RTL_LAYERED_DRIVER_DEBUG
+int32 rtl865x_acl_test(int32 testNo);
+#endif
+
+int32 rtl865x_deReferNetif(char *ifName);
+int32 rtl865x_referNetif(char *ifName);
+int32 rtl865x_setNetifMtu(rtl865x_netif_t *netif);
+int32 rtl865x_setNetifMac(rtl865x_netif_t *netif);
+int32 rtl865x_setNetifVid(char *name, uint16 vid);
+int32 rtl865x_setNetifType(char *name, uint32 ifType);
+int32 rtl865x_addNetif(rtl865x_netif_t *netif);
+int32 rtl865x_delNetif(char *ifName);
+int32 rtl865x_initNetifTable(void);
+int32 rtl865x_reinitNetifTable(void);
+int32 rtl865x_attachMasterNetif(char *slave, char *master);
+int32 rtl865x_detachMasterNetif(char *slave);
+
+int32 rtl865x_setPortToNetif(char *name,uint32 port);
+
+#if defined (CONFIG_RTL_HARDWARE_MULTICAST)
+int32 rtl865x_getNetifVid(char *name, uint32 *vid);
+int32 rtl865x_getNetifType(char *name,uint32 *type);
+uint32 rtl865x_getExternalPortMask(void);
+#endif
+
+#if defined (CONFIG_RTL_LOCAL_PUBLIC)
+//int32 rtl865x_getNetifFid(char *name, uint16 *fid);
+int32 rtl865x_addVirtualNetif(rtl865x_netif_t *netif);
+int32 rtl865x_delVirtualNetif(char *ifName);
+#endif
+
+int32 rtl865x_setDefACLForAllNetif(uint8 start_ingressAclIdx, uint8 end_ingressAclIdx,uint8 start_egressAclIdx,uint8 end_egressAclIdx);
+int32 rtl865x_reConfigDefaultAcl(char *ifName);
+int32 rtl865x_config_callback_for_get_drv_netifName(int (*fun)(const char *psName,char *netifName));
+#endif
+