1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
#ifndef RTL865X_FDB_API_H
#define RTL865X_FDB_API_H
#define RTL_LAN_FID 0
#if defined (CONFIG_RTL_IVL_SUPPORT)
#define RTL_WAN_FID 1
#else
#define RTL_WAN_FID 0
#endif
#define FDB_STATIC 0x01 /* flag for FDB: process static entry only */
#define FDB_DYNAMIC 0x02 /* flag for FDB: process dynamic entry only */
#define RTL865x_FDB_NUMBER 4
#define RTL865x_L2_TYPEI 0x0001 /* Referenced by ARP/PPPoE */
#define RTL865x_L2_TYPEII 0x0002 /* Referenced by Protocol */
#define RTL865x_L2_TYPEIII 0x0004 /* Referenced by PCI/Extension Port */
#define CONFIG_RTL865X_SYNC_L2 1
#define RTL865X_FDBENTRY_TIMEOUT 0x1001 /*fdb entry time out*/
#define RTL865X_FDBENTRY_450SEC 0x1002 /*fdb entry 450s timing*/
#define RTL865X_FDBENTRY_300SEC 0x1004 /*fdb entry 300s timing*/
#define RTL865X_FDBENTRY_150SEC 0x1008 /*fdb entry 150s timing*/
/*#define ETHER_ADDR_LEN 6
typedef struct ether_addr_s {
uint8 octet[ETHER_ADDR_LEN];
} ether_addr_t;*/
/*
typedef struct rtl865x_tblAsicDrv_l2Param_s {
ether_addr_t macAddr;
uint32 memberPortMask; //extension ports [rtl8651_totalExtPortNum-1:0] are located at bits [RTL8651_PORT_NUMBER+rtl8651_totalExtPortNum-1:RTL8651_PORT_NUMBER]
uint32 ageSec;
uint32 cpu:1,
srcBlk:1,
isStatic:1,
nhFlag:1,
fid:2,
auth:1;
} rtl865x_tblAsicDrv_l2Param_t;*/
//extern typedef struct rtl865x_tblAsicDrv_l2Param_s rtl865x_tblAsicDrv_l2Param_t;
void update_hw_l2table(const char *srcName,const unsigned char *addr);
int32 rtl_get_hw_fdb_age(uint32 fid,ether_addr_t *mac, uint32 flags);
int32 rtl865x_addAuthFDBEntry(const unsigned char *addr, int32 auth, int32 port, int32 srcblk);
int32 rtl865x_setRestrictPortNum(int32 port, uint8 isEnable, int32 number);
int32 rtl865x_check_authfdbentry_Byport(int32 port_num, const unsigned char *macAddr);
int32 rtl865x_enableLanPortNumRestrict(uint8 isEnable);
int32 rtl865x_delAuthLanFDBEntry(uint16 l2Type, const unsigned char *addr);
int32 rtl865x_delLanFDBEntry(uint16 l2Type, const unsigned char *addr);
int32 rtl865x_arrangeFdbEntry(const unsigned char *timeout_addr, int32 *port);
//extern int32 rtl865x_Lookup_fdb_entry(uint32 fid, ether_addr_t *mac, uint32 flags, uint32 *col_num, rtl865x_tblAsicDrv_l2Param_t *L2buff);
int32 rtl865x_getPortNum(const unsigned char *addr);
int32 rtl865x_ConvertPortMasktoPortNum(int32 portmask);
int32 rtl865x_addFDBEntry(const unsigned char *addr);
#if defined(CONFIG_RTL865X_LANPORT_RESTRICTION)
#define LAN_RESTRICT_PORT_NUMBER 9
#define RTL_LAN_RESTRICT_STAT2 2
#define RTL_LAN_RESTRICT_STAT1 1
#define RTL_LAN_RESTRICT_STAT0 0
typedef struct _lan_restrict_info
{
int16 port_num;
int16 enable;
int32 max_num;
int32 curr_num;
}lan_restrict_info;
extern lan_restrict_info lan_restrict_tbl[LAN_RESTRICT_PORT_NUMBER];
//int32 rtl865x_addAuthFDBEntry_hooks(struct net_bridge_fdb_entry *fdb,const unsigned char *addr);
int32 lan_restrict_getBlockAddr(int32 port , const unsigned char *swap_addr);
int32 lan_restrict_CheckStatusByport(int32 port);
int32 rtl_check_fdb_entry_check_exist(uint32 fid, ether_addr_t *mac, uint32 flags);
int32 rtl_check_fdb_entry_check_srcBlock(uint32 fid, ether_addr_t *mac, int32 *SrcBlk);
int32 lanrestrict_callbackFn_for_add_fdb(void *param);
int32 lanrestrict_callbackFn_for_del_fdb(void *param);
int32 lanrestrict_unRegister_event(void);
int32 lanrestrict_register_event(void);
#endif /* defined(CONFIG_RTL865X_LANPORT_RESTRICTION) */
#endif
|