📄 igmpcon.h
字号:
#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 + -