⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 igmpcon.h

📁 igmp for switch in vxworks
💻 H
📖 第 1 页 / 共 2 页
字号:

#include "igmp.h"

/*#include "memwatch.h"*/

#define MEMBER_NONE 0
#define MEMBER_NORMAL 1
#define MEMBER_PREVIEW 2

#ifdef _AN5116_06A_
#define MaxTemp 32
#else
#define MaxTemp 16
#endif

#define MaxtTempGroup 255
#define RecordIgnoreTime 0 /*秒*/
#define MaxPortBandWidth 0		/*kbps */
#define DefaultVlan 4088
extern MSG_Q_ID ConMsgQId;
extern int ConTaskId;
extern BOOL contest;
extern BOOL bConDebug;
extern BOOL bConDebugSnmp;

extern BOOL fauth;				/*认证标志位 */
extern BOOL gEnableCrossVlan;	/*多组播VLAN 标志位1表示开 */
extern SEM_ID semConinfo;		/*保护infolist */
extern SEM_ID semConauth;		/*保护authlist */
extern SEM_ID semConLog;		/*保护recordlist */
extern SEM_ID semConStat;		/*保护groupstatlist */
extern int global_vlan;			/*组播VLAN */
extern int uplink_vlan_enable;
extern UINT MaxUpBandwidth;		/*上传带宽上限 */
extern UINT CurrentUpBandwidth;	/*当前总共上传带宽 */
extern UINT semtakeerror;
extern short gConOld;			/*老化时间 */
extern int SNMP_MAX_PACKET_LENGTH;

extern USHORT Totaluser;		/*总用户数 */
extern USHORT Totalgroup;		/*总组播组数 */
extern USHORT Totalauthgroup;	/*配置的认证组个数 */

extern UCHAR previewtime;		/*预览持续时间 */
extern UCHAR previewinterval;	/*预览间隔 */
extern UCHAR previewresettime;	/*预览复位时间 */
extern UCHAR previewcount;		/*预览次数 */
extern UCHAR previewTotalTime;	/*总预览时间,min */

extern struct Group_auth *authlist;	/*认证表 */
extern struct Group_info *infolist;	/*当前信息表 */
extern struct Port_Record *recordlist;	/*日志表 */
extern struct Group_Stat *groupstatlist;	/*组用户统计表 */
extern struct Port_stat portstatlist[MAX_DOWN_SLOT + 1][MaxOnu + 1][MaxOnuPort + 1];	/*端口信息统计 */
extern struct Profile_Data profile[MaxTemp + 1];
extern struct igmp_onu onulist[MAX_DOWN_SLOT + 1][MaxOnu + 1];

extern USHORT groupstatcount;
extern USHORT recordcount;		/*日志的计数 */
extern UCHAR RecordIgnore;		/*日志忽略时间 */
extern UCHAR RecordHolding;		/*日志轮询时间 */

extern UCHAR aSlotType[MAX_DOWN_SLOT + 1];	/*线卡的类型 */
extern BOOL bEnableInstantLeave;	/*是否允许端口开速离开 */
extern int gPortCfgResponse;	/*端口信息查询响应 */
extern int gEc2IGMPProxyEnable;	/*ec2 igmp proxy 使能 */
extern int gIGMPMODE;

/*aibin add for auto upftp igmplog 20080610*/
extern int auto_upload_igmplog_flag;
extern int auto_upload_period;
extern char auto_upload_igmplog_ftpip[21];
extern char auto_upload_igmplog_ftpuser[21];
extern char auto_upload_igmplog_ftppass[21];
extern int auto_upload_taskid;

typedef enum
{
	MODE_CONTROL = 1,
	MODE_PROXY,					/*PROXY-PROXY mode */
	MODE_SNOOPING,
	MODE_PROXY_SNOOPING,
	MODE_DISABLE
} IGMP_MODE;

extern void erase_proxy_config (void);
extern int Save_Configuration_proxy (char *mem);
extern int Save_Configuration_proxy (char *mem);
extern void SendVlanMsg (int slot);

/*struct of a conmsg*/
typedef struct
{
	UCHAR type;					/* 消息类型 */
	UCHAR slot;					/*端口号 */
	UCHAR onu;					/*槽位号 */
	USHORT onuPort;				/*onu上的端口号 */
	UCHAR cmd;					/*命令 */
	UCHAR state;				/*状态 */
	UCHAR preview;				/*预览标志位,1正常,2预览 */
	short rev;
	UINT group;					/*组地址 */
} ConMsg;

/*struct of a member in Group_info*/
typedef struct Group_Member
{
	struct Group_Member *pNext;
	struct Group_Member *pPrv;
	UCHAR slot;
	UCHAR onu;
	UCHAR onuPort;
	UCHAR state;				/*1nomal,2preview */
	short old;					/*old timer counter, sec */
	short onlinetime;			/*online time, sec */
} groupMember;

typedef struct Group_info
{
	struct Group_info *pNext;
	struct Group_info *pPrv;
	UINT groupaddress;
	groupMember *member;
	USHORT totaluser;
	BOOL auth;					/*是否在认证组中1是,0不是 */
} GroupInfo;

/*struct of a member in profile*/
typedef struct Profile_Group
{
	struct Profile_Group *pNext;
	struct Profile_Group *pPrv;
	UINT groupaddress;
	UCHAR state;				/*1nomal,2preview */
} profileGroup;

typedef struct Profile_Data
{
	char name[21];
	UCHAR Groupcount;
	char used;
	profileGroup *group;
} ProfileData;

typedef struct Group_auth
{
	struct Group_auth *pNext;
	struct Group_auth *pPrv;
	UINT groupaddress;
	USHORT vlanid;				/*节目源组播VLAN,0表示global_vlan */
	USHORT bandwidth;			/*节目源带宽 */
	USHORT leavedelay;			/*离开时延(秒) */
	UCHAR preCount;				/*预览次数 */
	USHORT preTime;				/*预览持续时间,分钟 */
	USHORT preInterval;			/*预览间隔,分钟 */
	UCHAR preReset;				/*预览复位时间,小时 */
	UCHAR pretotaltime;			/*总预览时间 */
	BOOL active;				/*1当前组,0 不是当前组 */
	UCHAR profile[MaxTemp + 1];	/*profile[0]为所在profile的个数,profile[i]为所在profile的权限 */
	short uplink_vlan;			/*上行协议报文的vlan,缺省0,aibin 20080613 */
} GroupAuth;

/*控制帧的类型*/
typedef enum ConPkt_Type
{
	querymsg = 0,
	infomsg,					/*协议消息 */
	groupcfgmsg,				/*组配置帧 */
	port2groupmsg,				/*端口绑定组帧 */
	portcfgmsg,					/*端口配置帧 */
	Slothangemsg,				/*线卡变动帧 */
	zcrossvlanmsg,				/*跨VLAN帧,当配置为跨VLAN时,单播与组播使用不同的VLAN,否则使用相同VLAN */
	forceleavemsg,				/*强迫用户下线消息 */
	clearcfgmsg,
	portcfgquerymsg,			/*用户配置查询帧 */
	portcfgreturnmsg,			/*用户配置回读帧 */
	igmpmodemsg,				/*线卡proxy功能使能帧 */
	igmpparametersmsg,			/*协议参数 */
	instantleavemsg				/*快速离开祯 */
} CPtype;

/*加入失败的类型*/
typedef enum
{
	success = 0,				/*加入成功 */
	failauth,					/*权限禁止 */
	failpreview,				/*预览限制 */
	failmaxgroup,				/*端口组数上限 */
	failvlan,					/*VLAN不匹配 */
	failupbd,					/*上行带宽到达上限 */
	leavenormal = 100,			/*正常离开 */
	leaveforce,					/*强制离开 */
} FailType;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -