diff options
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.h | 151 |
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 + |