summaryrefslogtreecommitdiffstats
path: root/target/linux/realtek/files/include/net/rtl/rtl865x_igmpsnooping.h
diff options
context:
space:
mode:
authorRoman Yeryomin <roman@advem.lv>2012-09-13 00:40:35 +0300
committerRoman Yeryomin <roman@advem.lv>2012-12-03 00:13:21 +0200
commit5deb3317cb51ac52de922bb55f8492624018906d (patch)
treec2fbe6346699d9bb0f2100490c3029519bb8fde8 /target/linux/realtek/files/include/net/rtl/rtl865x_igmpsnooping.h
parent0239d37124f9184b478a42de8a7fa1bc85a6a6fe (diff)
Add realtek target files
Signed-off-by: Roman Yeryomin <roman@advem.lv>
Diffstat (limited to 'target/linux/realtek/files/include/net/rtl/rtl865x_igmpsnooping.h')
-rw-r--r--target/linux/realtek/files/include/net/rtl/rtl865x_igmpsnooping.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/target/linux/realtek/files/include/net/rtl/rtl865x_igmpsnooping.h b/target/linux/realtek/files/include/net/rtl/rtl865x_igmpsnooping.h
new file mode 100644
index 000000000..9b5fcf7f9
--- /dev/null
+++ b/target/linux/realtek/files/include/net/rtl/rtl865x_igmpsnooping.h
@@ -0,0 +1,151 @@
+/*
+* Copyright c Realsil Semiconductor Corporation, 2006
+* All rights reserved.
+*
+* Program : igmp snooping function
+* Abstract :
+* Author :qinjunjie
+* Email:qinjunjie1980@hotmail.com
+*
+*/
+
+#ifndef RTL865X_IGMP_SNOOPING_H
+#define RTL865X_IGMP_SNOOPING_H
+
+/* multicast configuration*/
+struct rtl_mCastSnoopingGlobalConfig
+{
+ uint32 maxGroupNum;
+ uint32 maxClientNum;
+ uint32 maxSourceNum;
+ uint32 hashTableSize;
+
+ uint32 groupMemberAgingTime;
+ uint32 lastMemberAgingTime;
+ uint32 querierPresentInterval;
+
+ uint32 dvmrpRouterAgingTime;
+ uint32 mospfRouterAgingTime;
+ uint32 pimRouterAgingTime;
+};
+
+struct rtl_mCastSnoopingLocalConfig
+{
+ uint8 enableSourceList;
+ uint8 enableFastLeave;
+ uint8 gatewayMac[6];
+ uint32 gatewayIpv4Addr;
+ uint32 gatewayIpv6Addr[4];
+ //uint32 unknownMcastFloodMap;
+ uint32 ipv4UnknownMcastFloodMap;
+ uint32 ipv6UnknownMcastFloodMap;
+ uint32 staticRouterPortMask;
+};
+
+ struct rtl_mCastTimerParameters
+ {
+ uint32 disableExpire;
+ uint32 groupMemberAgingTime;
+ uint32 lastMemberAgingTime;
+ uint32 querierPresentInterval;
+
+ uint32 dvmrpRouterAgingTime; /*DVMRP multicast router aging time*/
+ uint32 mospfRouterAgingTime; /*MOSPF multicast router aging time*/
+ uint32 pimRouterAgingTime; /*PIM-DM multicast router aging time*/
+
+};
+
+#define IP_VERSION4 4
+#define IP_VERSION6 6
+
+struct rtl_multicastDataInfo
+{
+ uint32 ipVersion;
+ uint32 sourceIp[4];
+ uint32 groupAddr[4];
+
+};
+
+struct rtl_multicastFwdInfo
+{
+ uint8 unknownMCast;
+ uint8 reservedMCast;
+ uint16 cpuFlag;
+ uint32 fwdPortMask;
+
+};
+
+struct rtl_groupInfo
+{
+ uint32 ownerMask;
+};
+
+typedef struct rtl_multicastDeviceInfo_s
+{
+ char devName[32];
+ uint32 vlanId;
+ uint32 portMask;
+ uint32 swPortMask;
+}rtl_multicastDeviceInfo_t;
+
+
+typedef struct rtl_multicastEventContext_s
+{
+ char devName[16];
+ uint32 moduleIndex;
+ uint32 ipVersion;
+ uint32 groupAddr[4];
+ uint32 sourceAddr[4];
+ uint32 portMask;
+}rtl_multicastEventContext_t;
+
+
+typedef struct rtl_igmpPortInfo_s
+{
+ uint32 linkPortMask;
+}rtl_igmpPortInfo_t;
+
+/******************************************************
+ Function called in the system initialization
+******************************************************/
+
+int32 rtl_initMulticastSnooping(struct rtl_mCastSnoopingGlobalConfig mCastSnoopingGlobalConfig);
+int32 rtl_exitMulticastSnooping(void);
+void rtl_setMulticastParameters(struct rtl_mCastTimerParameters mCastTimerParameters);
+
+int32 rtl_registerIgmpSnoopingModule(uint32 *moduleIndex);
+
+int32 rtl_setIgmpSnoopingModuleDevInfo(uint32 moduleIndex,rtl_multicastDeviceInfo_t *devInfo);
+int32 rtl_getIgmpSnoopingModuleDevInfo(uint32 moduleIndex,rtl_multicastDeviceInfo_t *devInfo);
+
+int32 rtl_getDeviceIgmpSnoopingModuleIndex(rtl_multicastDeviceInfo_t *devInfo,uint32 *moduleIndex);
+
+int32 rtl_unregisterIgmpSnoopingModule(uint32 moduleIndex);
+
+int32 rtl_configIgmpSnoopingModule(uint32 moduleIndex, struct rtl_mCastSnoopingLocalConfig *multicastSnoopingConfig);
+
+int32 rtl_igmpMldProcess(uint32 moduleIndex, uint8 * macFrame, uint32 portNum, uint32 *fwdPortMask);
+
+int32 rtl_getMulticastDataFwdInfo(uint32 moduleIndex, struct rtl_multicastDataInfo * multicastDataInfo, struct rtl_multicastFwdInfo *multicastFwdInfo);
+
+int32 rtl_maintainMulticastSnoopingTimerList(uint32 currentSystemTime);
+
+
+#ifdef CONFIG_PROC_FS
+int igmp_show(struct seq_file *s, void *v);
+int igmp_write(struct file *file, const char __user *buffer, size_t count, loff_t *data);
+#endif
+
+int32 rtl_getGroupInfo(uint32 groupAddr, struct rtl_groupInfo *groupInfo);
+int32 rtl_flushAllIgmpRecord(void);
+int32 rtl_delIgmpRecordByMacAddr(uint8 *macAddr);
+
+int32 rtl_addSpecialMCast(uint32 moduleIndex, uint32 ipVersion, uint32 *groupAddr, uint32 fwdPortMask);
+int32 rtl_delSpecialMCast(uint32 moduleIndex, uint32 ipVersion, uint32 *groupAddr);
+
+int32 rtl_setIpv4UnknownMCastFloodMap(uint32 moduleIndex,uint32 unknownMCastFloodMap);
+int32 rtl_getIpv4UnknownMCastFloodMap(uint32 moduleIndex,uint32 *unknownMCastFloodMap);
+int32 rtl_setIpv6UnknownMCastFloodMap(uint32 moduleIndex,uint32 unknownMCastFloodMap);
+int32 rtl_getIpv6UnknownMCastFloodMap(uint32 moduleIndex,uint32 *unknownMCastFloodMap);
+#endif
+