153 lines
4.2 KiB
C
153 lines
4.2 KiB
C
|
/*
|
||
|
*************************************************************************
|
||
|
* 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__ */
|