blob: 63f9692e0b35ac12fa9b523e0c9e7d21b2f16edd [file] [log] [blame]
/*
*************************************************************************
* Ralink Tech Inc.
* 5F., No.36, Taiyuan St., Jhubei City,
* Hsinchu County 302,
* Taiwan, R.O.C.
*
* (c) Copyright 2002-2007, Ralink Technology, Inc.
*
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
*************************************************************************
Module Name:
igmp_snoop.h
Abstract:
Miniport generic portion header file
Revision History:
Who When What
-------- ---------- ----------------------------------------------
*/
#ifndef __RTMP_IGMP_SNOOP_H__
#define __RTMP_IGMP_SNOOP_H__
#include "link_list.h"
#define IGMP_PROTOCOL_DESCRIPTOR 0x02
#define IGMP_V1_MEMBERSHIP_REPORT 0x12
#define IGMP_V2_MEMBERSHIP_REPORT 0x16
#define IGMP_LEAVE_GROUP 0x17
#define IGMP_V3_MEMBERSHIP_REPORT 0x22
#define MLD_V1_LISTENER_REPORT 131
#define MLD_V1_LISTENER_DONE 132
#define MLD_V2_LISTERNER_REPORT 143
#define IGMPMAC_TB_ENTRY_AGEOUT_TIME 120 * OS_HZ
#define MULTICAST_ADDR_HASH_INDEX(Addr) (MAC_ADDR_HASH(Addr) % (MAX_LEN_OF_MULTICAST_FILTER_HASH_TABLE))
#define IS_MULTICAST_MAC_ADDR(Addr) ((((Addr[0]) & 0x01) == 0x01) && ((Addr[0]) != 0xff))
#define IS_BROADCAST_MAC_ADDR(Addr) ((((Addr[0]) & 0xff) == 0xff))
VOID MulticastFilterTableInit(
IN PMULTICAST_FILTER_TABLE *ppMulticastFilterTable);
VOID MultiCastFilterTableReset(
IN PMULTICAST_FILTER_TABLE *ppMulticastFilterTable);
BOOLEAN MulticastFilterTableInsertEntry(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pGrpId,
IN PUCHAR pMemberAddr,
IN PNET_DEV dev,
IN MulticastFilterEntryType type);
BOOLEAN MulticastFilterTableDeleteEntry(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pGrpId,
IN PUCHAR pMemberAddr,
IN PNET_DEV dev);
PMULTICAST_FILTER_TABLE_ENTRY MulticastFilterTableLookup(
IN PMULTICAST_FILTER_TABLE pMulticastFilterTable,
IN PUCHAR pAddr,
IN PNET_DEV dev);
BOOLEAN isIgmpPkt(
IN PUCHAR pDstMacAddr,
IN PUCHAR pIpHeader);
VOID IGMPSnooping(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pDstMacAddr,
IN PUCHAR pSrcMacAddr,
IN PUCHAR pIpHeader,
IN PNET_DEV pDev);
BOOLEAN isMldPkt(
IN PUCHAR pDstMacAddr,
IN PUCHAR pIpHeader,
OUT UINT8 *pProtoType,
OUT PUCHAR *pMldHeader);
VOID MLDSnooping(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pDstMacAddr,
IN PUCHAR pSrcMacAddr,
IN PUCHAR pIpHeader,
IN PNET_DEV pDev);
UCHAR IgmpMemberCnt(
IN PLIST_HEADER pList);
VOID IgmpGroupDelMembers(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pMemberAddr,
IN PNET_DEV pDev);
INT Set_IgmpSn_Enable_Proc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT Set_IgmpSn_AddEntry_Proc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT Set_IgmpSn_DelEntry_Proc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
INT Set_IgmpSn_TabDisplay_Proc(
IN PRTMP_ADAPTER pAd,
IN PSTRING arg);
void rtmp_read_igmp_snoop_from_file(
IN PRTMP_ADAPTER pAd,
PSTRING tmpbuf,
PSTRING buffer);
NDIS_STATUS IgmpPktInfoQuery(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pSrcBufVA,
IN PNDIS_PACKET pPacket,
IN UCHAR apidx,
OUT BOOLEAN *pInIgmpGroup,
OUT PMULTICAST_FILTER_TABLE_ENTRY *ppGroupEntry);
NDIS_STATUS IgmpPktClone(
IN PRTMP_ADAPTER pAd,
IN PNDIS_PACKET pPacket,
IN UCHAR QueIdx,
IN PMULTICAST_FILTER_TABLE_ENTRY pGroupEntry);
#endif /* __RTMP_IGMP_SNOOP_H__ */